图书目录

目 录 

第 1 章 数据库及基本操作   1 

1.1 数据库基础知识   1 

1.1.1 数据库的应用   1 

1.1.2 数据库相关术语   1 

1.1.3 SQL 简介   2 

1.1.4 数据库的类型   3 

1.2 主要关系数据库管理系统简介   3 

1.2.1 MySQL   3 

1.2.2 SQL Server   3 

1.2.3 Oracle   4 

1.3 在 MySQL 中执行 SQL 语句   4 

1.3.1 安装 MySQL   4 

1.3.2 使用命令行执行 SQL 语句   5 

1.3.3 使用 Workbench 执行 SQL 语句   6 

1.4 在 SQL Server 中执行 SQL 语句   9 

1.4.1 SQL Server 2022 的安装   9 

1.4.2 使用 SQL Server 管理工具创建数据库   10 

1.4.3 使用 SQL Server 管理工具执行SQL 语句   11 

1.5 在 Oracle 21c 中执行 SQL 语句   13 

1.5.1 安装 Oracle 21c   13 

1.5.2 使用 SQL Developer 执行 SQL语句   15 

1.5.3 使用 SQL Plus 执行 SQL 语句   17 

第 2 章 SQL 基础   20 

2.1 SQL 概述   20 

2.1.1 SQL 的历史   20 

2.1.2 SQL 的特点   20 

2.1.3 SQL 的功能   21 

2.2 SQL 的组成   22 

2.2.1 数据定义语言    22 

2.2.2 数据查询语言    22 

2.2.3 数据操纵语言    23 

2.2.4 数据控制语言    23 

2.3 探索 SQL 环境    23 

2.3.1 了解 SQL 执行环境    23 

2.3.2 了解 SQL 数据库的层次结构   24 

2.3.3 在 SQL 环境中命名对象   24 

第 3 章 数据表   26 

3.1 数据类型   26 

3.1.1 SQL 常用数据类型    26 

3.1.2 MySQL 中的数据类型    27 

3.1.3 SQL Server 中的数据类型    30 

3.1.4 Oracle 中的数据类型   32 

3.2 数据表基础   33 

3.2.1 数据表中的记录和字段   33 

3.2.2 表结构   34 

3.3 表逻辑设计   34 

3.3.1 E-R 模型图    34 

3.3.2 规范化与范式    36 

3.4 表的创建(CREATE TABLE)   36 

3.4.1 使用 CREATE TABLE 语句创建表   36 

3.4.2 创建带有主键的表   38 

3.5 表结构的修改(ALTER TABLE)   39 

3.5.1 ALTER TABLE 语句格式   39 

3.5.2 增加新字段   40 

3.5.3 增加带有默认值的新字段   42 

3.5.4 修改字段的类型和宽度   43 

3.5.5 删除字段   45 

3.5.6 删除带有默认值的字段   45

3.5.7 更改主键   47 

3.6 表的删除、截断与重命名   48 

3.6.1 删除表   48 

3.6.2 截断表   48 

3.6.3 重命名表   48 

3.7 创建与删除数据库   49 

3.7.1 创建数据库   49 

3.7.2 删除数据库   50 

3.7.3 创建本书使用的数据表   50 

第 4 章 索引   54 

4.1 索引基础   54 

4.1.1 使用索引的原因   54 

4.1.2 索引的种类   54 

4.2 索引的创建和使用   55 

4.2.1 创建索引前应当注意的内容   55 

4.2.2 创建索引的 SQL 语句   56 

4.2.3 创建和使用非聚簇索引   57 

4.2.4 创建和使用唯一索引   60 

4.3 索引的删除   61 

第 5 章 查询数据—SELECT 语句    63 

5.1 SELECT 语句的组成结构    63 

5.1.1 最基本的语法格式    63 

5.1.2 带有主要子句的语法格式    64 

5.1.3 SELECT 各子句的执行顺序    64 

5.1.4 关于 SELECT 语句的一些说明    65 

5.2 查询数据   65 

5.2.1 查询单字段的方法   65 

5.2.2 去除重复信息—DISTINCT    66 

5.2.3 查询多字段    67 

5.2.4 查询所有字段    67 

5.2.5 根据现有字段值计算新字段值    68 

5.2.6 命名新列(别名)—AS    69 

5.2.7 将查询结果保存为新表    70 

5.2.8 连接字段   71 

5.3 排序数据   73 

5.3.1 按单字段排序    73 

5.3.2 设置排序方向    74 

5.3.3 按多字段排序    75 

5.3.4 按字段位置排序    75 

第 6 章 条件查询    77 

6.1 条件表达式   77 

6.1.1 指针与字段变量的概念   77 

6.1.2 条件表达式   78 

6.2 使用 WHERE 关键字设置查询条件   80 

6.2.1 WHERE 子句用法   80 

6.2.2 查询数值数据   81 

6.2.3 查询字符型数据   83 

6.2.4 查询日期数据   84 

6.2.5 按范围查询数据(BETWEEN)   85 

6.2.6 查询空值   86 

6.3 排序条件查询的结果   86 

6.4 查询前 n 条记录   87 

第 7 章 高级条件查询   89 

7.1 组合 WHERE 子句   89 

7.1.1 AND 运算符   89 

7.1.2 OR 运算符   91 

7.1.3 AND 与 OR 的优先顺序问题   91 

7.2 IN 运算符   93 

7.2.1 使用 IN 运算符   93 

7.2.2 使用 IN 运算符的优点   94 

7.3 NOT 运算符   96 

7.4 实现模糊查询   98 

7.4.1 LIKE 运算符   98 

7.4.2 “%”通配符   99 

7.4.3 使用“%”通配符查询日期型数据   101 

7.4.4 “_”通配符   103 

7.4.5 正则表达式   104 

7.4.6 定义转义字符   106 

第 8 章 SQL 函数的使用   108 

8.1 SQL 函数的说明   108 

8.2 SQL Server 的函数   108 

8.2.1 类型转换函数   108 

8.2.2 日期函数   111

8.2.3 数值函数   115 

8.2.4 字符函数   116 

8.3 Oracle 的函数   120 

8.3.1 类型转换函数   120 

8.3.2 日期函数   123 

8.3.3 数值函数   126 

8.3.4 字符函数   127 

8.4 MySQL 的函数   128 

8.4.1 类型转换函数   128 

8.4.2 日期函数   129 

8.4.3 数值函数   131 

8.4.4 字符函数   132 

8.5 将 NULL 更改为其他值的函数   132 

8.5.1 SQL Server 的 ISNULL()函数   132 

8.5.2 Oracle 的 NVL()函数   133 

8.5.3 MySQL 的 IFNULL()函数   134 

8.6 IF…ELSE 逻辑函数   134 

8.6.1 DECODE()函数   134 

8.6.2 CASE()函数   135 

第 9 章 聚合函数与分组数据   136 

9.1 聚合函数  136 

9.1.1 使用 COUNT()函数求记录个数   136 

9.1.2 使用 SUM()函数求某字段的和   138 

9.1.3 使用 AVG()函数求某字段的平均值   140 

9.1.4 使用 MAX()、MIN()函数求最大、最小值   140 

9.1.5 统计汇总相异值(不同值)记录   141 

9.1.6 聚合函数对 NULL 值的处理   141 

9.2 数据分组   144 

9.2.1 将表内容按列分组   144 

9.2.2 聚合函数与分组配合使用   145 

9.2.3 查询数据的直方图    146 

9.2.4 排序分组结果   147 

9.2.5 反转查询结果   147 

9.2.6 使用 HAVING 子句设置分组查询条件   149 

9.2.7 HAVING 子句与 WHERE 子句的区别   149 

第 10 章 多表连接查询   151 

10.1 将数据存储在多个不同表的原因   151 

10.2 范式   152 

10.3 连接查询   153 

10.3.1 连接两表的方法   153 

10.3.2 使用笛卡儿积解决录入难题   155 

10.3.3 使用两表连接查询数据   157 

10.3.4 多表连接查询   157 

10.3.5 使用表别名简化语句   158 

10.3.6 使用 INNER JOIN 连接查询   160 

10.4 高级连接查询   161 

10.4.1 自连接查询   161 

10.4.2 内连接查询   163 

10.4.3 外连接查询   165 

10.4.4 交叉连接查询   167 

10.4.5 连接查询中使用聚合函数   169 

10.5 组合查询   170 

10.5.1 使用组合查询   170 

10.5.2 使用 UNION 的规则   173 

10.5.3 使用 UNION 解决不支持全外连接的问题   174 

10.5.4 使用 UNION 得到复杂的统计汇总样式   175 

10.5.5 排序组合查询的结果   175 

第 11 章 子查询   178 

11.1 返回单值的子查询   178 

11.1.1 使用返回单值的子查询   178 

11.1.2 子查询与聚合函数的配合使用   179 

11.2 返回一列值的子查询   182 

11.2.1 使用 IN 的子查询   182 

11.2.2 使用 NOT IN 的子查询   183 

11.3 相关子查询   183 

第 12 章 视图   186 

12.1 视图基础   186 

12.1.1 视图引例   186

12.1.2 使用视图的原因以及注意问题   188 

12.1.3 视图的规则和限制   189 

12.2 视图的创建   190 

12.2.1 创建视图的 SQL 语句   190 

12.2.2 利用视图提高数据安全性   192 

12.2.3 利用视图得到汇总数据   193 

12.2.4 利用视图简化计算字段的使用   195 

12.2.5 利用视图简化多表连接   196 

12.3 视图的删除  197 

第 13 章 插入数据   198 

13.1 直接向表插入数据   198 

13.1.1 插入完整的行   198 

13.1.2 向日期和时间型字段插入数据   199 

13.1.3 将数据插入到指定字段   201 

13.1.4 将查询结果插入表   204 

13.1.5 INSERT SELECT 与 SELECT INTO 的区别   205 

13.2 通过视图插入数据   205 

13.2.1 通过视图插入数据的方法   206 

13.2.2 使用带有 WITH CHECK OPTION 选项的视图   208 

第 14 章 更新和删除数据    209 

14.1 更新表中的数据   209 

14.1.1 更新单个字段的数据    209 

14.1.2 更新多个字段的数据    211 

14.1.3 使用子查询更新数据    212 

14.1.4 使用表连接更新数据    213 

14.1.5 使用 UPDATE 语句删除指定字段的数据    214 

14.2 删除表中的数据   215 

14.2.1 使用 DELETE 语句删除指定记录   215 

14.2.2 在 DELETE 语句中使用多表连接   217 

14.2.3 使用 DELETE 语句删除所有记录   218 

14.2.4 使用 TRUNCATE 语句删除所有记录   219 

14.3 通过视图更新表   219 

14.3.1 不能用于更新的视图    219 

14.3.2 通过视图更新表数据    220 

14.3.3 通过视图删除表数据    222 

第 15 章 管理数据库的安全   224 

15.1 MySQL 数据库安全   224 

15.1.1 权限相关的表   224 

15.1.2 用 SQL 语句创建用户与授权   225 

15.1.3 MySQL Workbench 创建用户与授权   227 

15.2 Oracle 数据库用户管理   229 

15.2.1 创建用户   229 

15.2.2 修改用户   231 

15.2.3 给用户授予 CREATE SESSION权限   231 

15.2.4 给用户授予 SELECT 权限   233 

15.2.5 给用户授予 INSERT、UPDATE 和 DELETE 权限   235 

15.2.6 给用户授予系统权限   238 

15.2.7 给所有用户授予权限   239 

15.2.8 查看用户拥有的权限   240 

15.2.9 取消用户的指定权限   241 

15.2.10 删除用户   242 

15.3 Oracle 数据库角色管理   242 

15.3.1 角色的概念   242 

15.3.2 创建角色——CREATE ROLE   243 

15.3.3 给角色授权——GRANT   243 

15.3.4 将角色授予用户——GRANT   244 

15.3.5 查看角色的权限   246 

15.3.6 取消角色——REVOKE   248 

15.3.7 删除角色——DROP ROLE    248 

15.3.8 Oracle 中系统预定义的角色   248 

15.4 SQL Server 安全管理   249 

15.4.1 SQL Server 的安全认证模式    249 

15.4.2 向 SQL Server 添加安全账户   250

15.4.3 从 SQL Server 删除安全账户   252 

15.4.4 SQL Server 权限管理    253 

15.4.5 SQL Server 角色管理    255 

第 16 章 完整性控制    258 

16.1 了解完整性约束   258 

16.1.1 数据的完整性   258 

16.1.2 完整性约束的类型   259 

16.2 与表有关的约束   260 

16.2.1 字段约束与表约束的创建   260 

16.2.2 非空约束   260 

16.2.3 唯一约束   262 

16.2.4 主键约束   264 

16.2.5 外键约束   266 

16.2.6 校验约束   268 

16.3 扩展外键约束的内容   270 

第 17 章 存储过程和函数   274 

17.1 存储过程基础   274 

17.1.1 存储过程基础    274 

17.1.2 存储过程的优点    275 

17.2 在 MySQL 中创建和使用存储过程   276 

17.2.1 创建存储过程的语法    276 

17.2.2 调用存储过程   277 

17.2.3 创建带输出参数的存储过程   277 

17.2.4 删除存储过程   278 

17.3 在 SQL Server 中创建和使用存储过程   279 

17.3.1 SQL Server 的系统存储过程   279 

17.3.2 创建存储过程的语法   280 

17.3.3 调用语句 EXECUTE 的语法   281 

17.3.4 创建简单存储过程   282 

17.3.5 创建带输入参数的存储过程   283 

17.3.6 给输入参数设置默认值   284 

17.3.7 创建带输出参数的存储过程   285 

17.3.8 创建有多条 SQL 语句的存储过程   286 

17.3.9 删除存储过程   287 

17.4 在 SQL Server 中创建和使用函数   288 

17.4.1 标量值函数   289 

17.4.2 表值函数   290 

17.4.3 删除用户定义函数   292 

17.5 SQL Server 几个系统存储过程的使用   293 

17.5.1 使用 sp_rename 重命名对象   293 

17.5.2 使用 sp_depends 显示引用对象   293 

17.5.3 使用 sp_help 显示对象信息   294 

17.5.4 使用 sp_helptext 显示对象的源码   294 

17.6 Oracle 中的存储过程和函数   295 

17.6.1 在 Oracle 中使用存储过程    295 

17.6.2 在 Oracle 中使用函数    296 

17.6.3 在 Oracle 中使用 user_source获取信息   297 

第 18 章 SQL 触发器    298 

18.1 SQL 触发器基础   298 

18.2 在 SQL Server 中创建和使用触发器   298 

18.2.1 创建触发器的语法   299 

18.2.2 使用 INSERT 触发器   300 

18.2.3 使用 DELETE 触发器   302 

18.2.4 使用 UPDATE 触发器   303 

18.2.5 使用 INSTEAD OF 触发器   305 

18.2.6 使用条件插入触发器   306 

18.2.7 删除触发器   309 

18.3 在 Oracle 中创建和使用触发器   309 

18.3.1 创建触发器的语法   309 

18.3.2 行级触发器   310 

18.3.3 语句级触发器   311 

18.3.4 判断所执行的数据修改操作   312 

18.3.5 系统触发器   312 

18.3.6 追踪数据库启动与关闭信息   313 

18.3.7 追踪用户 DDL 操作信息   316 

18.3.8 禁用和删除触发器   318 

18.3.9 从 user_triggers 中查询触发器信息   319 

18.4 在 MySQL 中创建和使用触发器  320

18.4.1 创建触发器的语法   320 

18.4.2 使用 INSERT 触发器    320 

18.4.3 删除触发器   322 

第 19 章 控制流语句   323 

19.1 SQL Server 的控制流语句   323 

19.1.1 BEGIN…END 语句   323 

19.1.2 IF…ELSE 语句   323 

19.1.3 WHILE 语句   324 

19.1.4 BREAK 命令   325 

19.1.5 CONTINUE 命令   325 

19.1.6 WAITFOR 语句    326 

19.2 Oracle 的控制流语句    326 

19.2.1 IF…THEN…ELSE 语句   327 

19.2.2 IF…THEN…ELSIF 语句   327 

19.2.3 LOOP 语句   328 

19.2.4 WHILE 语句   328 

19.2.5 FOR 语句   329 

19.3 MySQL 的控制流语句   329 

19.3.1 IF…THEN…ELSE 语句   329 

19.3.2 LOOP 语句   330 

19.3.3 REPEAT 语句   331 

19.3.4 WHILE 语句   331 

19.4 控制流语句的应用   332 

19.4.1 判断数据库对象是否存在   332 

19.4.2 向日志表循环插入日期数据   335 

19.4.3 使用游标和循环提取数据   337 

第 20 章 事务处理   340 

20.1 事务基础   340 

20.1.1 事务的概念   340 

20.1.2 事务的案例   340 

20.1.3 事务的 ACID 特性   341 

20.2 控制事务处理   341 

20.2.1 开始事务处理   341 

20.2.2 使用 ROLLBACK 撤销事务   342 

20.2.3 使用 COMMIT 提交事务   345 

20.2.4 根据判断提交或撤销事务   348 

20.2.5 Oracle 的语句级事务处理   350 

20.2.6 使用保存点   351 

20.3 并发事务   353 

20.3.1 并发事务处理   353 

20.3.2 事务锁  354 

20.3.3 事务隔离级别   355