SQL 知识点回顾总结(以 SQLite 为例)

很久没有更新博客了,埋头工作有时候都忘了思考,但学习积累的步伐不能停止,今儿个把 SQL 相关知识点重新捡起来,供大家参考,也方便自己查阅备忘。梳理的主线主要基于牛客网《数据库SQL实战》。

1. left join, right join 和 inner join

left join(左联接):返回包括左表中的所有记录和右表中联结字段相等的记录;
right join(右联接):返回包括右表中的所有记录和左表中联结字段相等的记录;
inner join(等值连接):只返回两个表中联结字段相等的行。

2. having

having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用 having 条件显示特定的组,也可以使用多个分组标准进行分组。与 where 和 select 的交互方式类似。where 搜索条件在进行分组操作之前应用;而 having 搜索条件在进行分组操作之后应用。

3. like

like 操作符用于在 where 子句中搜索列中的指定模式,"%" 可用于定义通配符(模式中缺少的字母)。

4. explain

explain 可以对 select 语句进行分析并且输出 select 执行过程的详细信息,让开发者从这些信息中获得优化的思路。具体输出字段可参考:explain SQL语句

5. 字符串连接

不同数据库连接字符串的方法不完全相同,MySQL、SQL Server、Oracle 等数据库支持 concat 方法,而 SQLite 数据库只支持用连接符号"||"来连接字符串。

6. insert ignore 与 insert into

insert ignore 与 insert into 的区别:insert ignore 会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。

7. 唯一索引与普通索引

用 create unique index … on … 对某列创建唯一索引值,再用 create index … on … 对某列创建普通索引值。关于两者区别,可参考:选择唯一索引还是普通索引?

8. 视图

视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询 select 语句组成。关于更详细的视图知识点,可参考:SQL视图

9. 触发器

SQLite 触发器(Trigger)是数据库的回调函数,它会在指定的数据库事件发生时自动执行/调用。具体可参考:SQL触发器

10. 外键(foreign key)

表的外键是另一个表的主键,可重复、可空值。更细致的分析可参考:数据库的主键和外键

11. 系统表 sqlite_master

SQLite 数据库中一个特殊的名叫 sqlite_master 上执行一个 select 查询以获得所有表的索引。每一个 SQLite 数据库都有一个叫 sqlite_master 的表, 它定义数据库的模式。sqlite_master 表可参考:sqlite 的系统表 sqlite_master

12. 聚合函数 group_concat(X,Y)

SQLite的聚合函数 group_concat(X,Y),其中X是要连接的字段,Y是连接时用的符号,可省略,默认为逗号。此函数必须与 group by 配合使用,指将分组中的数据聚合。

13. 分页查找

分页查找可结合 limit 关键字。

14. in 和 exists

in 和 exists的区别: 如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in, 反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用exists。如果是exists,那么以外层表为驱动表,先被访问,如果是 in,那么先执行子查询,所以我们会以驱动表的快速返回为目标,那么就会考虑到索引及结果集的关系了 ,另外 in 时不对 NULL 进行处理。相关实例和详细解析可参考:SQL 中 in 和 exists 区别

15. case 表达式

case 表达式为SQL条件选择语句,参考牛客网实例:case 表达式

发布了225 篇原创文章 · 获赞 647 · 访问量 89万+

猜你喜欢

转载自blog.csdn.net/huangfei711/article/details/104157188