前提

本次分享只局限于 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 后给出的两表条件将两表连接起来。结果会将左表所有的查询信息列出,右表只显示共同有的那部分,没有对应的部分只能补空显示

维恩图如下:

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 索引的优缺点?

优点:

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

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

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

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

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

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

缺点:

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

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

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

mysql数据库面试题 软件测试_软件测试数据库面试题一相关推荐

  1. 数据科学学习心得_学习数据科学时如何保持动力

    数据科学学习心得 When trying to learn anything all by yourself, it is easy to lose motivation and get thrown ...

  2. 数据的四大特征_大数据

    数据的四大特征_大数据 我们总是在谈数据分析,数据分析什么的,那我们现在先不谈数据分析,我们先来谈谈数据分析的基础--数据.那么到底什么是数据,数据有什么特征呢?这个问题虽基础却重要. 这里我们所说的 ...

  3. mysql获取最好成绩对应数据的其他项_开源数据同步神器——canal

    前言 如今大型的IT系统中,都会使用分布式的方式,同时会有非常多的中间件,如redis.消息队列.大数据存储等,但是实际核心的数据存储依然是存储在数据库,作为使用最广泛的数据库,如何将mysql的数据 ...

  4. mysql冷热分离的技术_冷热数据分离思路

    分库: 1.数据库分库而不是分表,分表需要考虑后期的查询问题,此外还需要注意分表的算法(哈希算法). 2.热数据只占全部数据的一部分,因此每次优先查询热库,以下情况才查询冷库 -  当查询条件未命中( ...

  5. 数据可视化 信息可视化_可视化数据以帮助清理数据

    数据可视化 信息可视化 The role of a data scientists involves retrieving hidden relationships between massive a ...

  6. 大数据介绍项目流程_大数据介绍

    大数据介绍项目流程 About Big Data 关于大数据 什么是大数据?(What is Big Data?) In modern world, there are many big proble ...

  7. 大数据架构详解_【数据如何驱动增长】(3)大数据背景下的数仓建设 amp; 数据分层架构设计...

    背景 了解数据仓库.数据流架构的搭建原理对于合格的数据分析师或者数据科学家来说是一项必不可少的能力.它不仅能够帮助分析人员更高效的开展分析任务,帮助公司或者业务线搭建一套高效的数据处理架构,更是能够从 ...

  8. 数据科学学习心得_学习数据科学

    数据科学学习心得 苹果 | GOOGLE | 现货 | 其他 (APPLE | GOOGLE | SPOTIFY | OTHERS) Editor's note: The Towards Data S ...

  9. 数据科学与大数据技术的案例_作为数据科学家解决问题的案例研究

    数据科学与大数据技术的案例 There are two myths about how data scientists solve problems: one is that the problem ...

最新文章

  1. Hibernate:不容易理解的 lock 和 merge
  2. 自定义 Spring Boot Starter
  3. PyTorch Softmax
  4. gc.collect()==>python的强制垃圾收集机制(不建议使用强制回收,因为可能导致错误)
  5. C#LeetCode刷题之#643-子数组最大平均数 I( Maximum Average Subarray I)
  6. 欢迎界面java_Linux命令行欢迎界面美化
  7. 获CNNVD感谢信!知道创宇以专业漏洞研究能力支撑“漏洞通报”业务
  8. WinRAR 32位解压缩软件 v5.21 汉化免费版
  9. 虚幻引擎(UE4) UMG实例
  10. XTU 1271 Color
  11. LeetCode 罗马数字
  12. DELL EqualLogic PS存储硬盘故障数据恢复
  13. 一文讲解单片机、ARM、MCU、DSP、FPGA、嵌入式错综复杂的关系
  14. Linux用root强制踢掉已登录用户
  15. Ubuntu 16.04中安装OpenCV 2.4.11
  16. java实现打印套打功能
  17. 2022-10-28: 测试代码流程
  18. Linux之I2C驱动
  19. gitblit Git服务器
  20. 用友U8案例教程采购报表

热门文章

  1. 通过TreeMap 和 冒泡算法对JSON 进行排序
  2. 美股市场ETF的中文名列表
  3. c51数码管显示汇编语言,单片机数码管显示数字加减汇编程序
  4. 亚马逊测评有哪些好处?亚马逊测评该怎么做?
  5. 计算机无法删除u盘里东西,Win10系统电脑U盘里的文件夹无法删除怎么办?
  6. webrtc性能优化:MacOS下的快速截屏录屏方式
  7. Intermec 700 開發體驗(2)
  8. 计算机新手教程装系统,新手小白必看电脑重装系统教程 四种方法至少会一种就够用!...
  9. SQL日常函数长期更新
  10. 【论文阅读】——BASTION-SGX: Bluetooth and Architectural Support for Trusted I/O on SGX