本系列力争做到全面详细的介绍SQL的方方面面,目标是,关于SQL的使用直接查找对应相关文章即可,不需寻找额外的资料。
因此,总体分为“SQL全面教程”、以实际数据库为主线的“数据库教程”(主要分为PostgreSQL、MySQL/MariaDB、SQL Server,偶尔会涉及SQLite、Oracle)。数据库通用的内容放在数据库教程部分的系列,各数据库对应的文章也会进行后续区分
整个系列目前写下来,查找资料、练习、演示、斜纹等,很耗费时间、精力,感谢能够多加支持!...
本系列起初是打算参考《SQL基础教程(第2版)》,对SQL有个全面详细的总结和回顾,但最终写下来想要扩展的功能很多,后续参考了各不同数据库官方文档、维基百科、中国大学MOOC人大的《数据库系统概论(高级篇)》、《SQL必知必会》、《MySQL技术内幕:innodb存储引擎》以及网上的许多资料,补充完整和加深学习。
过程中,总体上使用PostgreSQL作为SQL的学习环境,同时结合SQL Server2016和MariaDB10.3,在介绍数据库和SQL基础的基础上,除了非特定数据库系统的内容,也介绍了各自数据库系统中的不同点,原则上使用任何数据库学习均可,而且不同数据库的不同SQL写法基本都会给出来。针对于不同的问题,也都尽量执行实际操作测试,比较区别。希望可以更好的和较为全面的介绍和帮助学习SQL。
PostgreSQL号称"世界上最先进的开源关系数据库"(The World's Most Advanced Open Source Relational Database,"功能强大的开源数据库系统"),PostgreSQL确实非常强大,最为开源数据库也越来越受到欢迎和重视,可能更多的是由于历史原因,使用上没有MySQL等数据库广泛(目前PostgreSQL排名第四,位于Oracle、MySQL、SQL Server之后)。
后续不断的深入,于是决定加入一些数据库方面的知识文章。实际上SQL和数据库的介绍在很多方面没法完全区分开,像SQL事务,除了事务管理和控制的SQL语句之外,锁、事务属性和状态、隔离级别、并发控制等,都属于数据库理论方面的内容,但是它们虽然对事务使用没什么影响,却对理解事务的实现和执行很有帮助,为了便于一气呵成的了解,因此关于事务的部分,都放在了一起介绍(实际只了解本系列中第一篇事务的文章即可)。
下面是系列文章的链接:
数据库系列
- 数据库教程1:带你详细了解数据库范式和基本的三范式
- 数据库教程2:数据库实体—关系模型(ER模型)
- 数据库教程3:关于数据库、数据库管理系统、数据库系统等概念和DQL DML DDL DCL TPL CCL的说明
- 数据库教程4:关于批语句
- 数据库教程5:数据字典
- 数据库教程6:数据库的物理结构——索引、存储结构和聚簇,B+树和Hash索引的存取
- 数据库教程7:理解数据库中的字符集和排序规则
- 数据库教程11:关于ORDER BY排序时的Collation和PostgreSQL实现不区分大小写的推荐通用方案
- 数据库教程12:关于生成列、衍生列或计算列的探讨,及每种数据库中的实现
- 数据库教程15:关系数据库中的“关系”到底是什么?关系数据库中的几个基础概念的介绍
- 数据库教程16:彻底聊聊关系数据库中的完整性约束:实体完整性、参照完整性和用户定义的完整性,及断言
SQL系列
- SQL全面教程一:数据库、SQL概念及使用DDL创建管理数据库表
- SQL全面教程二:基础查询全介绍
- SQL全面教程三:实现对数据的汇总——聚合、分组及分组内过滤和排序
- SQL全面教程四:数据更新——插入、删除、更新
- SQL全面教程五:事务(1)管理数据更新、事务介绍使用和事务模式 | 不容错过地详细介绍)
- SQL全面教程六:事务(2)事务性DDL、保留点的使用,及Oracle中如何实现在一个单一事务中创建多个表
- SQL全面教程七:事务(3)事务分类和MySQL中的commit work and chain
- SQL全面教程八:事务(4)事务的ACID属性和执行状态| 8月更文挑战
- SQL全面教程九:事务(5)彻底了解隔离级别与事务的实现| 8月更文挑战
- SQL全面教程十:事务(6)厘清PostgreSQL中如何查看和设置隔离级别| 8月更文挑战
- SQL全面教程十一:事务(6)厘清MySQL/MariaDB中如何查看和设置隔离级别,设置binlog_format为row
- SQL全面教程十二:事务(6)厘清SQL Server中如何查看和设置隔离级别,详解RCSI和SNAPSHOT的不同
- SQL全面教程十三:事务(7)事务的并发控制和并发事务中'丢失更改'不可重复读'幻读'脏读'
MySQL/Mariadb数据库相关
- 全网最详细 | 数据库教程10:MySQL中字符集和排序规则的详细介绍,为什么中文等字符编码(Unicode)下一定要使用utf8mb4?
- 数据库教程13:如何正确设置MySQL/MariaDB的字符编码为utf8mb4?如何支持全部的Unicode?
PostgreSQL数据库相关
- SQL全面教程零:PostgreSQL安装及使用介绍 | 开始PostgreSQL的第一步
- 数据库教程9:PostgreSQL中对序规则、区分大小写和字符集的支持,及修改查看Collate | [可能是]比较中区分大小写的唯二数据库
SQL Server数据库相关
- 数据库教程8:SQL Server中的有关排序规则、区分大小写的方方面面,及字符集
- 数据库教程17:必须了解的SQL Server DBCC的方方面面及其常用命令
- 数据库教程18:SQL Server获取DBCC中某一项或收集DBCC的结果到表中
- 数据库教程19:这可能是你了解SQL Server跟踪标记的最正确的姿势
- 数据库教程20:SQLServer中sp_Who、sp_Who2和sp_WhoIsActive介绍和查看监视运行的会话进程,sp_WhoIsActive详细介绍
- 数据库教程21:sp_who如何查找阻塞执行的会话sessionID并中止,及KILL spid WITH STATUSONLY详解
- 数据库教程22:SQL Server中如何查找查询慢、运行时间长的查询,sp_WhoIsActive及sp_WhoIsActive的替代
- 数据库教程23:SQL Server中如何正确的处理确认死锁问题
- 数据库教程24:SQL Server中一个你必须了解的存储过程sp_procoption
- 数据库教程25:SQL Server中xp_、sp_为前缀的存储过程及MSSQL的命名规范问题
- 数据库教程26:SQL Server中获取动态SQL的结果到变量中如何实现?
- 数据库教程27:SQL Server中的数字类型,如real、float、decimal、numeric、money等及各自区别
SQLite