- 一、了解 SQL
- 二、检索数据
- 三、排序检索数据
- 四、过滤数据
- 五、高级数据过滤
- 六、用通配符进行过滤
- 七、创建计算字段
- 八、使用函数处理数据
- 九、汇总数据
- 十、分组数据
- 十一、使用子查询
- 十二、联结表
- 十三、创建高级联结
- 十四、组合查询
- 十五、插入数据
- 十六、更新和删除数据
- 十七、创建和操纵表
- 十八、使用视图
- 十九、使用存储过程
- 二十、管理事务处理
- 二十一、使用游标
- 二十二、高级 SQL 特性
SQL 是使用最为广泛的数据库语言。不管你是应用开发者、数据库管理员、Web 应用设计师、移动应用开发人员,还是只使用流行的报表工具的普遍用户,掌握良好的 SQL 知识对用好数据库都是很重要的。
本 SQL 零基础入门教程将讲授读者需要了解的 SQL 知识,从简单的数据检索入手,逐步过渡到一些较为复杂的内容,如联结、子查询、存储过程、游标、触发器以及表约束等。读者将从本教程中循序渐进、系统而直接地学到 SQL 的知识和技巧。
一、了解 SQL
- 数据库基础
- 什么是 SQL
- 动手实践
这一部分介绍了什么是 SQL,它为什么很有用。因为 SQL 是用来与数据库打交道的,所以,我们也复习了一些基本的数据库术语。
二、检索数据
- SELECT 语句
- 检索单个列
- 检索多个列
- 检索所有列
- 检索不同的值
- 限制结果
- 使用注释
- SELECT 练习题
这一部分的 SQL 教程学习了如何使用 SQL 的 SELECT
语句来检索单个表列、多个表列以及所有表列。你也学习了如何返回不同的值,如何注释代码。同时不好的消息是,复杂的 SQL 语句往往不够通用。下一部分将讲授如何对检索出来的数据进行排序。
三、排序检索数据
- 排序数据
- 按多个列排序
- 按列位置排序
- 指定排序方向
- ORDER BY 练习题
这一部分的 SQL 教程学习了如何用 SELECT
语句的 ORDER BY
子句对检索出的数据进行排序。这个子句必须是 SELECT
语句中的最后一条子句。根据需要,可以利用它在一个或多个列上对数据进行排序。
四、过滤数据
- 使用 WHERE 子句
- WHERE 子句操作符
- WHERE 练习题
这一部分的 SQL 零基础入门教程介绍了如何用 SELECT
语句的 WHERE
子句过滤返回的数据。我们学习了如何检验相等、不相等、大于、小于、值的范围以及 NULL
值等。
五、高级数据过滤
- 组合 WHERE 子句
- IN 操作符
- NOT 操作符
- WHERE AND OR IN NOT 练习题
这一部分讲授如何用 AND
和 OR
操作符组合成 WHERE
子句,还讲授了如何明确地管理求值顺序,如何使用 IN
和 NOT
操作符。
六、用通配符进行过滤
- LIKE 操作符
- LIKE 练习题
这一部分的 SQL 零基础入门教程介绍了什么是通配符,如何在 WHERE
子句中使用 SQL 通配符,还说明了通配符应该细心使用,不要使用过度。
七、创建计算字段
- 计算字段
- 拼接字段
- 执行算术计算
- 计算字段练习题
这一部分介绍了计算字段以及如何创建计算字段。我们用例子说明了计算字段在字符串拼接和算术计算中的用途。此外,还讲述了如何创建和使用别名,以便应用程序能引用计算字段。
八、使用函数处理数据
- 函数
- 使用函数
- 函数练习题
这一部分的 SQL 教程介绍了如何使用 SQL 的数据处理函数。虽然这些函数在格式化、处理和过滤数据中非常有用,但它们在各种 SQL 实现中很不一致。
九、汇总数据
- 聚集函数
- 聚集不同值
- 聚集函数练习题
聚集函数用来汇总数据。SQL 支持 5 个聚集函数,可以用多种方法使用它们,返回所需的结果。这些函数很高效,它们返回结果一般比你在自己的客户端应用程序中计算要快得多。
十、分组数据
- 数据分组
- 过滤分组
- 分组和排序
- GROUP BY 练习题
上一部分介绍了如何用 SQL 聚集函数对数据进行汇总计算。这一部分的 SQL 教程讲授了如何使用 GROUP BY
子句对多组数据进行汇总计算,返回每个组的结果。我们看到了如何使用 HAVING
子句过滤特定的组,还知道了 ORDER BY
和 GROUP BY
之间以及 WHERE
和 HAVING
之间的差异。
十一、使用子查询
- 子查询
- 作为计算字段使用子查询
- 子查询练习题
这一部分的 SQL 教程学习了什么是子查询,如何使用它们。子查询常用于 WHERE
子句的 IN
操作符中,以及用来填充计算列。我们举了这两种操作类型的例子。
十二、联结表
- 联结
- 创建联结
- 联结(JOIN)练习题
联结是 SQL 中一个最重要、最强大的特性,有效地使用联结需要对关系数据库设计有基本的了解。这一部分的 SQL 零基础入门教程在介绍联结时,讲述了一些关系数据库设计的基本知识,包括等值联结(也称为内联结)这种最常用的联结。下一部分将介绍如何创建其他类型的联结。
十三、创建高级联结
- 使用表别名
- 使用不同类型的联结
- 使用带聚集函数的联结
- 高级联结(JOIN)练习题
这一部分是上一部分的延续,首先讲授了如何以及为什么使用别名,然后讨论不同的联结类型以及每类联结所使用的语法。我们还介绍了如何与联结一起使用聚集函数,以及在使用联结时应该注意的问题。
十四、组合查询
- 组合查询
- 创建组合查询
- 组合(UNION)查询练习题
这一部分的 SQL 教程讲授如何用 UNION
操作符来组合 SELECT
语句。利用 UNION
,可以把多条查询的结果作为一条组合查询返回,不管结果中有无重复。使用 UNION
可极大地简化复杂的 WHERE
子句,简化从多个表中检索数据的工作。
十五、插入数据
- 数据插入
- 从一个表复制到另一个表
- 数据插入(INSERT)练习题
这一部分的 SQL 教程介绍如何将行插入到数据库表中。我们学习了使用 INSERT
的几种方法,为什么要明确使用列名,如何用 INSERT SELECT
从其他表中导入行,如何用 SELECT INTO
将行导出到一个新表。下一部分将讲述如何使用 UPDATE
和 DELETE
进一步操作表数据。
十六、更新和删除数据
- 更新数据
- 删除数据
- 更新(UPDATE)和删除(DELETE)数据练习题
这一部分的 SQL 教程讲述了如何使用 UPDATE
和 DELETE
语句处理表中的数据。我们学习了这些语句的语法,知道了它们可能存在的危险,了解了为什么 WHERE
子句对 UPDATE
和 DELETE
语句很重要,还学习了为保证数据安全而应该遵循的一些指导原则。
十七、创建和操纵表
- 创建表
- 更新表
- 删除表
- 创建和操纵表练习题
这一部分的 SQL 教程介绍了几条新的 SQL 语句。CREATE TABLE
用来创建新表,ALTER TABLE
用来更改表列(或其他诸如约束或索引等对象),而 DROP TABLE
用来完整地删除一个表。这些语句必须小心使用,并且应该在备份后使用。由于这些语句的语法在不同的 DBMS 中有所不同,所以更详细的信息请参阅相应的 DBMS 文档。
十八、使用视图
- 视图
- 创建视图
- 视图练习题
视图为虚拟的表。它们包含的不是数据而是根据需要检索数据的查询。视图提供了一种封装 SELECT
语句的层次,可用来简化数据处理,重新格式化或保护基础数据。
十九、使用存储过程
- 使用存储过程
这一部分的 SQL 教程介绍了什么是存储过程,为什么使用存储过程。我们介绍了执行和创建存储过程的语法,使用存储过程的一些方法。存储过程是个相当重要的主题,一个部分的内容无法全部涉及。各种 DBMS 对存储过程的实现不一,你使用的 DBMS 可能提供了一些这里提到的功能,也有其他未提及的功能,更详细的介绍请参阅具体的 DBMS 文档。
二十、管理事务处理
- 管理事务处理
这一部分的 SQL 教程介绍了事务是必须完整执行的 SQL 语句块。我们学习了如何使用 COMMIT
和 ROLLBACK
语句对何时写数据、何时撤销进行明确的管理;还学习了如何使用保留点,更好地控制回退操作。事务处理是个相当重要的主题,一个部分的内容无法全部涉及。各种 DBMS 对事务处理的实现不同,详细内容请参考具体的 DBMS 文档。
二十一、使用游标
- 使用游标
我们在这个部分讲授了什么是游标,为什么使用游标。你使用的 DBMS 可能会提供某种形式的游标,以及这里没有提及的功能。更详细的内容请参阅具体的 DBMS 文档。
二十二、高级 SQL 特性
- 高级 SQL 特性
本部分的 SQL 零基础入门教程讲授如何使用 SQL 的一些高级特性。约束是实施引用完整性的重要部分,索引可改善数据检索的性能,触发器可以用来执行运行前后的处理,安全选项可用来管理数据访问。不同的 DBMS 可能会以不同的形式提供这些特性,更详细的信息请参阅具体的 DBMS 文档。
(完)