mysql数据库面试题 软件测试_软件测试数据库面试题一

前提

本次分享只局限于 sql server 和 mysql 这两种数据库,其他数据库暂不总结

正文

1. 对查询的字段进行去重(distinct)

用法注意:

1. distinct【查询字段】,必须放在要查询字段的开头,即放在第一个参数;

2. 只能在SELECT 语句中使用,不能在 INSERT, DELETE, UPDATE 中使用;

3. DISTINCT 表示对后面的所有参数的拼接取 不重复的记录,即查出的参数拼接每行记录都是唯一的

1.1 只对一个字段查重

对一个字段查重,表示选取该字段一列不重复的数据

SELECT DISTINCT 字段名 FROM 表名

1.2 多个字段去重

SELECT DISTINCT 字段名1,字段名2 FROM 表名

只有 字段1和字段2都不同时,才会被去重掉

2. 控制返回记录的条数(top/limit)

2.1 sql server 中的 top

用法:

输出前三条纪录

Select top 3 * from 表名

输出前 20% 条记录

Select top 20 percent * from 表名

--6 * 20% = 1.2

--输出的是前2条记录,不是1条

2.2 MySql 中的 limit

用法:

给定一个参数,它表示返回最大的记录行数目:

输出前 5条记录SELECT * FROM table LIMIT 5

给定两个参数,返回两个参数之间的记录

SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15

检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1

SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last

3. sql 一句话复制一条数据并修改其中的字段

insert into table select 字段1, 字段2, 字段3, from table where....--select 后跟随的字段是表中的全部字段

4. 左连接,右连接,内连接

左连接(left join)

又称左外连接,是外连接的一种,它是以左表为基础,根据 On 后给出的两表条件将两表连接起来。结果会将左表所有的查询信息列出,右表只显示共同有的那部分,没有对应的部分只能补空显示

维恩图如下:

d01b79f3a16a84f941c54457071abc55.png

SQL 语句:

SELECT A.PK, B.PK FROM table_a A LEFT JOIN table_b B ON A.PK = B.PK; WHERE 条件…

右连接(right join)

又称右外连接,也是外连接的一种,它是以右表为基础,根据On后给出的两表条件将两表连接起来。结果会将右表所有的查询信息列出,左表只显示共同有的那部分,没有对应的部分只能补空显示

维恩图如下:

ff7664cce1a064b89a65bccde78718e0.png

SQL 语句:

SELECT A.PK, B.PK FROM table_a A RIGHT JOIN table_b B ON A.PK = B.PK; WHERE 条件…..

内连接(inner join)

内连接是一种一一映射关系,也就是两张表都有的记录才能显示出来

维恩图:

82765090bc6cbe44d86c346c95381be3.png

SQL 语句:

SELECT A.PK , B.PK FROM table_a A INNER JOIN table_b B ON A.PK = B.PK;

5. Union 和 Union all

Union:union 在进行表连接后会筛选掉重复的记录,所以在表连接后对所产生的结果集进行筛选运算,删除重复的记录再返回结果集

Union all:union 只是简单的将两个结果合并就返回。如果返回的结果集中有重复的数据,那么返回的结果集中就包含重复的数据。

从性能讲 union all 要比 union 快很多,因为他没有排序去重的耗时

ps: 使用 union 和 union all 时一定要保证查询的列一致,即select 后的参数名一致

6. Varchar 和 char 的区别

(1)char 的长度是不可变的,而varchar的长度是可变的。

如:定义一个 char[10] 和 varchar[10],如果存进去的是“yang”,那么 char 所占的长度依然是10,除了字符“yang”外,后面跟6个空格,varchar 就立马把长度变为4了,取数据的时候,char 类型的要用trim() 去掉多余的空格,而 varchar 是不需要的。

(2)char 的存取速度要比 varchar 快的多,因为其长度固定,方便的程序的存储与查找。

Char 也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,varchar 是以空间效率为首位

(3)char的存储方式是:对英文字符(ASCII)占用1个字节,对一个汉字占用2个字节。

varchar的存储方式是:对每个英文字符占用2个字节,汉字也占用2个字节

ps:不同的编码形式对应的存储方式不一样

UTF-8编码:

一个英文字符对应一个字节,一个中午(含繁体)占用3个字节

(4)两者的存储数据都非unicode的字符数据。

7. 索引

7.1 什么是索引?

数据库索引,是数据库管理系统中一个排序的数据结构,索引的实现通常使用 B 树及其变种 B+ 树。

在数据之外,数据库系统还维护这满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就被叫做索引。

7.2 索引的作用?

协助快速查询,更新数据库表中数据

7.3 索引的优缺点?

优点:

创建索引可以大大提高系统的性能

通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性

可以大大加快数据的检索速度,这也是创建索引的最主要原因

可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义

在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间

通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统性能。

缺点:

创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。

当对表中的数据进行增加,删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mongoDB 使用手册

2019独角兽企业重金招聘Python工程师标准>>> 1、基本操作db.AddUser(username,password) 添加用户db.auth(usrename,password) 设置数据库连接验证db.cloneDataBase(fromhost) 从目标服务器克隆一个数据库db.commandHelp(name) returns the help for the commanddb.…

android搜索框功能实现_巧用 Trie 树,实现搜索引擎关键词提示功能

来源 | 码海责编 | Carol封图 | CSDN 付费下载于视觉中国我们几乎每天都在用搜索引擎搜索信息,相信大家肯定有注意过这样一个细节:当输入某个字符的时候,搜索引框底下会出现多个推荐词,如下,输入「python」后,底下会出…

qt5.9.0调试如何查看变量的值_深入了解 Java 调试

Bug(俗称"八阿哥") 是软件开发绕不过的一道坎,因此调试便成了每位程序员一项必备的核心技能。调试不仅有助于理解程序的运行流程,还能改进代码质量,最终提高开发者解决问题的能力以及交付软件的品质。本文旨在讨论 Java 调试关键技…

(6) 如何用Apache POI操作Excel文件-----POI-3.10的一个和注解(comment)相关的另外一个bug...

如果POI-3.10往一个工作表(sheet)里面插入数据的话,需要注意了,其有一个不太被容易发现的bug。 被插入的工作表(sheet)里面的单元格没有包含任何的注解(comment)的时候,插…

python导入模块以及类_python模块的导入以及模块简介

标签: 一、模块的定义及类型 1、定义 模块就是用一堆的代码实现了一些功能的代码的集合,通常一个或者多个函数写在一个.py文件里,而如果有些功能实现起来很复杂,那么就需要创建n个.py文件,这n个.py文件的集合就是模块 …

mnist手写数字数据集_mnist手写数据集(1. 加载与可视化)

》》欢迎 点赞,留言,收藏加关注《《1. 模型构建的步骤:在构建AI模型时,一般有以下主要步骤:准备数据、数据预处理、划分数据集、配置模型、训练模型、评估优化、模型应用,如下图所示:【注意】由…

python凯撒密码实现_密码:凯撒密码及其Python实现

python凯撒密码实现Before we start let’s some basic terminology... 在开始之前,让我们先介绍一些基本术语... The art and science to achieve security by encoding messages to make them unreadable are known as Cryptography. That’s what the whole art…

qtextedit 默认文案_QT-纯代码控件-QSplitter(分裂器)

版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/qq_41488943/article/details/96431379使用Qplitter实现页面的三布局分布1.新建一个无ui界面的工程&…

TYVJ P1030 乳草的入侵 Label:跳马问题

背景 USACO OCT09 6TH描述 Farmer John一直努力让他的草地充满鲜美多汁的而又健康的牧草。可惜天不从人愿&#xff0c;他在植物大战人类中败下阵来。邪恶的乳草已经在他的农场的西北部份佔领了一片立足之地。草地像往常一样&#xff0c;被分割成一个高度為Y(1 < y < 100)…

s查找mysql服务_MySQL菜鸟实录(一):MySQL服务安装实战

CentOS 7基本信息系统版本&#xff1a; CentOS 7.3 64bit系统配置&#xff1a; 4vCPUs | 8GB磁盘空间&#xff1a;[rootecs-ce5a-0001 ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/vda1 40G 17G 22G 44% /devtmpfs 3.9G 0 3.9G 0% /devtmpfs 3.9G 0 3.9G 0% /dev…

实验一 线性表的顺序存储与实现_【自考】数据结构中的线性表,期末不挂科指南,第2篇

线性表这篇博客写的是线性表相关的内容&#xff0c;包括如下部分&#xff0c;先看下有木有期待啥是线性表线性表的顺序存储线性表的基本运算在顺序表上的实现线性表的链式存储线性表的基本运算在单链表上的实现循环链表与双向循环链表Over&#xff0c;内容还蛮多的&#xff01;…

TYVJ P1012 火柴棒等式 Label:枚举

背景 NOIP2008年提高组第二题描述 给你n根火柴棍&#xff0c;你可以拼出多少个形如“ABC”的等式&#xff1f;等式中的A、B、C是用火柴棍拼出的整数&#xff08;若该数非零&#xff0c;则最高位不能是0&#xff09;。用火柴棍拼数字0-9的拼法如图所示&#xff1a;注意&#xff…

python怎么开发软件_怎么使用python进行软件开发

一、下载pyinstaller 我使用的版本为PyInstaller-2.1&#xff0c;支持python版本2.3-2.7&#xff0c;点击这里下载。 二、安装pyinstaller 下载完成后&#xff0c;解压即可。我的解压目录为D:\Python27\PyInstaller-2.1\ 三、使用pyinstaller打包.py成.exe应用程序 1.注意使用前…

28、清华大学脑机接口实验组SSVEP数据集:通过视觉触发BCI[飞一般的赶脚!]

前言&#xff1a; 哈喽&#xff0c;最近对清华大学脑机接口的数据进行了尝试&#xff0c;输入到了DL模型中&#xff0c;以下是本人对于清华BCI数据的个人见解。 数据地址&#xff1a; 清华大学脑机接口研究组 (tsinghua.edu.cn) 打开网站可以看到有很多个数据&#xff0c;官…

python Pexpect

http://www.cnblogs.com/dkblog/archive/2013/03/20/2970738.htmlhttp://www.ibm.com/developerworks/cn/linux/l-cn-pexpect2/index.htmlhttp://www.cnblogs.com/dkblog/archive/2013/03/20/2970738.htmlpython Pexpect Pexpect 是一个用来启动子程序并对其进行自动控制的纯 P…

3dmax镜像后模型线条乱了_3dMax入门教程来啦!小白赶紧收藏!

3D Studio Max&#xff0c;常简称为3d Max或3ds MAX&#xff0c;是Discreet公司开发的&#xff08;后被Autodesk公司合并&#xff09;基于PC系统的三维动画渲染和制作软件&#xff0c; 3dmax软件主要功能有建模&#xff0c;动画&#xff0c;渲染&#xff0c;特效等&#xff0c;…

如何将多个一维列表转化为二维列表_数据分析2_如何处理一维、二维数据

吞一块大饼&#xff0c;还不如切成小块吃得香常见的数据集&#xff0c;要么是数列&#xff0c;要么是表格&#xff1b;因此&#xff0c;数据分析最首要的是&#xff0c;处理一维、二维数据。主要知识点可参考如图。如需要&#xff0c;可点击以下百度网盘链接下载数据分析基础知…

关于java中锁的面试题_Java面试题-Java中的锁

1. 如何实现乐观锁(CAS)&#xff1f;如何避免ABA问题&#xff1f;答&#xff1a;1)读取内存值的方式实现了乐观锁(比如&#xff1a;SVN系统)&#xff0c;方法&#xff1a;第一&#xff0c;比较内存值和期望值&#xff1b;第二&#xff0c;替换内存值为要替换值。2)带参数版本来…

NSUserDefaults

2019独角兽企业重金招聘Python工程师标准>>> NSUserDefaults 转载于:https://my.oschina.net/18829297883/blog/737931

什么是算术运算和逻辑运算_8086微处理器的算术和逻辑运算

什么是算术运算和逻辑运算逻辑指令 (Logical Instructions) a) AND: Logical AND a)AND&#xff1a;逻辑AND Atleast one of the operant should be a register or a memory operant both the operant cannot be a memory location or immediate operant. 操作中的至少一个应该…