• 软件测试数据库面试题一


    前提
    本次分享只局限于 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,<字段4> from table where .... 
    --select 后跟随的字段是表中的全部字段
     
    4. 左连接,右连接,内连接
    左连接(left join)
    又称左外连接,是外连接的一种,它是以左表为基础,根据 On 后给出的两表条件将两表连接起来。结果会将左表所有的查询信息列出,右表只显示共同有的那部分,没有对应的部分只能补空显示
    维恩图如下:
    SQL 语句:
    SELECT  A.PK, B.PK FROM table_a A LEFT JOIN table_b B ON A.PK = B.PK; WHERE 条件…
    右连接(right join)
    又称右外连接,也是外连接的一种,它是以右表为基础,根据On后给出的两表条件将两表连接起来。结果会将右表所有的查询信息列出,左表只显示共同有的那部分,没有对应的部分只能补空显示
    维恩图如下:
    SQL 语句:
    SELECT A.PK, B.PK FROM table_a A RIGHT JOIN table_b B ON A.PK = B.PK; WHERE 条件…..
    内连接(inner join)
    内连接是一种一一映射关系,也就是两张表都有的记录才能显示出来
    维恩图:
    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 索引的优缺点?
    优点:
    • 创建索引可以大大提高系统的性能
    • 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性
    • 可以大大加快数据的检索速度,这也是创建索引的最主要原因
    • 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义
    • 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间
    • 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统性能。
    缺点:
    • 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
    • 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
    • 当对表中的数据进行增加,删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
     

  • 相关阅读:
    2018-8-10-win10-uwp-重启软件
    jquery动画滑入滑出
    jquery类操作
    jquery类操作
    jquery手风琴
    jquery突出显示
    jquery隔行变色
    jquery下拉菜单
    jquery筛选选择器
    jquery过滤选择器
  • 原文地址:https://www.cnblogs.com/action1/p/14356722.html
Copyright © 2020-2023  润新知