数据库的相关操作
- 数据库的创建
- 数据库的删除
- 数据库的使用
表的相关操作
- 创建表
- 修改表
- 重命名表
- 删除表
数据操作
- 单行插入
- 多行插入
- 更新数据
- 删除数据
视图管理
- 创建视图
- 查询视图
- 修改视图
- 删除视图
触发器
面试题
6. union 和 union all 的区别?
两者都可以将多个结果集合并。使用时必须保证各个 SELECT 的结果有相同个数的列,且类型一致,但列名不一定相同。
- UNION:从查询结果集中自动去除了重复的行;会对获取的结果进行排序操作。
- UNION ALL:不去除重复记录;不做排序处理。
7. LIKE 中的 % 和_是什么意思?
- %:1 个百分号(%)可以匹配任意个字符。
- :1 个下划线( )只匹配 1 个字符。
8. SQL 中 on、where、having 三种过滤的区别?
- on:用于多表关联时指定关联的条件,作用于 from 子句。on 是先对数据进行过滤,然后再进行连接表。
- where:用来筛选 FROM 子句中指定的操作所产生的行。where 是在两表进行关联查询之后,再进行过滤的。
- having:用于对聚合后的数据进行筛选过滤。
9. 数据库中空字符串、0 和 NULL 的区别?
- 空字符串:表示有输入数据,只是输入的数据为空字符串。
- 0:即一个数字,其值为 0。
- NULL:表示没有输入数据。
10. 窗口函数是什么?和普通聚合函数的区别是什么?
窗口函数,也叫 OLAP (Online Analytical Processing, 联机分析处理),可以对数据库进行实时分析处理。窗口函数和普通聚合函数的区别:
- 聚合函数是将多条记录聚合为一条,改变了表的行数;窗口函数是每条记录都会执行,不会改变原表中的行数。
- 可以使用聚合函数作为窗口函数。此时,可以在每一行的数据里直观的看到,截止到本行数据,统计数据是多少(最大值、最小值等等),同时可以看出每一行数据,对整体统计数据的影响。
11. SQL 中几种排序窗口函数的区别是什么?
rank()over():即跳跃式排序。如果有并列名次的行,就会占用下一名的位置。如 100,100,100,98,排名为 1,1,1,4dense_rank()over():即并列连续型排序。如果有并列名次的行,不占用下一名次的位置。如 100,100,100,98,排名为 1,1,1,2row_number()over():即连续型排序。不考虑并列名次的情况。如 100,100,100,98,排名为 1,2,3,4
13. 如何优化 SQL?
按以下顺序进行优化:
- 优化查询语句
- 优化索引、事务处理
- 优化数据表结构
- 优化系统配置
- 优化硬件
14. 如何优化 SQL 查询语句?
- 对查询进行优化,首先应尽量避免全表扫描,在比较频繁使用的字段上面加上索引。
- 尽量避免在 where 子句中对索引列使用计算或者进行 null 判断,否则将导致引擎放弃使用索引而进行全表扫描。
- WHERE 子句中:where 表之间的连接必须写在其他 Where 条件之前,那些可以过滤掉最大数量。
- 用 EXISTS 代替 IN,用 NOT EXISTS 代替 NOT IN。