内容简介
本书共分为14章,由易到难,逐步讲解SQL语句的应用。其中,第1章介绍了SQL概述;第2章简单介绍了SCOTT模式;第3~6章分别介绍了SQL常用的增删改查知识;第7~12章分别介绍了常用的数据库对象,包含了视图、索引、约束、触发器、存储过程和函数;第13章介绍了非常重要的事务知识;第14章对SQLSERVER数据库和Oracle数据库中存在的一些差异进行了举例比较。
目录
推荐序
前言
第1章 SQL概述1
1.1 DML1
1.2 DDL1
1.3 TCL2
1.4 DCL2
1.5 总结2
第2章 SCOTT模式4
2.1 DEPT5
2.2 EMP7
2.3 SALGRADE10
2.4 BONUS11
2.5 总结12
第3章 新增语句13
3.1 单行新增13
3.1.1 values单行新增14
3.1.2 select单行新增16
3.2 建表新增18
3.3 查询结果新增20
3.4 常见误区分析21
3.4.1 历史数据转移引起的问题21
3.4.2 values单行新增不要省略列名24
3.5 总结25
第4章 删除语句26
4.1 delete语法26
4.1.1 直接删除表中记录26
4.1.2 基于其他表删除表中记录27
4.2 truncate语法28
4.3 误删数据恢复29
4.4 误删对象恢复30
4.5 常见误区分析31
4.5.1 慎用delete31
4.5.2 画蛇添足32
4.6 总结32
第5章 更新语句33
5.1 update语法33
5.2 单表更新33
5.3 表关联更新35
5.4 常见误区分析36
5.4.1 注意表关联更新36
5.4.2 注意数据类型38
5.5 总结39
第6章 查询语句40
6.1 查询语句的语法40
6.2 where子句中常用的运算符41
6.2.1 算术运算符42
6.2.2 逻辑运算符43
6.2.3 比较运算符44
6.2.4 优先级50
6.3 分组51
6.3.1 分组函数51
6.3.2 创建组52
6.4 排序52
6.5 空值56
6.6 多表连接56
6.6.1 交叉连接57
6.6.2 非等值连接58
6.6.3 等值连接之内连接59
6.6.4 等值连接之外连接60
6.6.5 等值连接之自连接64
6.6.6 等值连接之自然连接66
6.7 集合运算67
6.7.1 并集67
6.7.2 交集68
6.7.3 差集69
6.8 子查询70
6.8.1 多行单列子查询70
6.8.2 多行多列子查询72
6.8.3 单行单列子查询72
6.8.4 单行多列子查询73
6.8.5 内联视图74
6.8.6 关联子查询74
6.9 别名76
6.9.1 表别名77
6.9.2 列别名77
6.10 常见误区分析79
6.10.1 count争议79
6.10.2 null的比较80
6.10.3 单行子查询返回多行82
6.10.4 分组函数的嵌套83
6.10.5 not in84
6.10.6 with(nolock)86
6.10.7 with(readpast)88
6.10.8 max用于字符型属性89
6.11 总结91
第7章 视图92
7.1 视图语法92
7.1.1 创建语法92
7.1.2 修改语法93
7.1.3 删除语法93
7.2 视图举例94
7.3 视图的作用95
7.3.1 定制用户数据95
7.3.2 复杂查询简单化96
7.4 简单视图97
7.5 复杂视图97
7.6 键值保存表97
7.7 只读视图98
7.8 with check option98
7.9 物化视图101
7.9.1 创建时生成数据选项101
7.9.2 刷新方式102
7.9.3 数据刷新的时间102
7.9.4 物化视图索引103
7.9.5 物化视图举例103
7.10 索引视图106
7.11 常见误区分析107
7.11.1 单张表组成的视图可以更新107
7.11.2 多张表组成的视图不能更新109
7.12 总结111
第8章 索引112
8.1 索引语法113
8.1.1 创建语法113
8.1.2 删除语法113
8.2 B-Tree索引113
8.3 聚集索引122
8.4 唯一索引122
8.5 非唯一索引124
8.6 组合索引124
8.7 反向键索引125
8.8 函数索引125
8.9 索引组织表127
8.10 常见误区128
8.10.1 null全表扫描128
8.10.2 < >比较符引起全表扫描129
8.10.3 引起全表扫描131
8.10.4 函数造成全表扫描131
8.10.5 慎用全表扫描132
8.10.6 组合索引如何进行索引133
8.11 总结135
第9章 约束136
9.1 约束语法136
9.1.1 创建语法136
9.1.2 删除语法137
9.2 主键约束137
9.3 外键约束138
9.4 唯一性约束141
9.5 非空约束142
9.6 check约束143
9.7 默认值约束144
9.8 常见误区分析146
9.8.1 是否有必要使用外键146
9.8.2 程序校验代替检查约束146
9.9 总结148
第10章 触发器149
10.1 触发器语法149
10.1.1 创建语法149
10.1.2 修改语法150
10.1.3 删除语法151
10.2 变异表151
10.3 触发器内置对象151
10.4 行级触发器151
10.5 语句级触发器153
10.6 触发时间156
10.7 instead of触发器160
10.8 常见误区分析162
10.8.1 读变异表162
10.8.2 触发器死循环162
10.9 总结164
第11章 存储过程165
11.1 存储过程语法165
11.1.1 创建语法166
11.1.2 修改语法166
11.1.3 删除语法167
11.2 IN模式参数167
11.3 OUT模式参数169
11.4 删除存储过程171
11.5 常见误区分析171
11.5.1 存储过程事务控制171
11.5.2 参数名称引发的事故179
11.6 总结181
第12章 函数183
12.1 系统函数183
12.1.1 字符函数183
12.1.2 数值函数186
12.1.3 日期函数186
12.1.4 null相关的函数189
12.1.5 聚合函数190
12.1.6 其他常用函数190
12.2 自定义函数191
12.2.1 自定义函数语法191
12.2.2 SQL Server标量值函数193
12.2.3 SQL Server内联表值函数193
12.2.4 SQL Server多语句表值函数194
12.2.5 Oracle标量值函数194
12.2.6 Oracle表值函数195
12.3 常见误区分析196
12.3.1 SQL函数必须有返回值196
12.3.2 SQL函数中不能进行DML操作198
12.4 总结200
第13章 事务201
13.1 银行转账案例201
13.2 事务的4个属性204
13.2.1 原子性205
13.2.2 一致性205
13.2.3 隔离性205
13.2.4 持久性206
13.3 并发引起的问题207
13.3.1 脏读207
13.3.2 不可重复读207
13.3.3 幻读207
13.4 事务隔离级别208
13.4.1 读未提交208
13.4.2 读提交208
13.4.3 重复读208
13.4.4 序列化209
13.5 事务保存点209
13.6 自治事务210
13.6.1 自治事务用于存储过程210
13.6.2 自治事务用于触发器212
13.7 常见误区分析214
13.7.1 自治事务死锁214
13.7.2 自治事务获取主事务的信息214
13.7.3 主事务获取自治事务的信息216
13.8 总结217
第14章 SQL Server与Oracle的差异219
14.1 前N行219
14.2 字符串拼接220
14.3 获取系统时间221
14.4 空字符串221
14.5 表别名223
14.6 null值排序224
14.7 update引起 select阻塞225
14.8 SQL、T-SQL和PL/SQL227
14.9 视图定义中出现排序227
14.10 对视图非键值保存表的更新229
14.11 分组函数嵌套231
14.12 内联视图232
14.13 关联表删除233
14.14 关联表更新234
14.15 自增列235
14.16 总结238
前言/序言
前 言 Preface
在信息管理系统中,SQL语句是非常重要的组成部分。虽然用户不会直接使用SQL语句操作信息管理系统,但是,信息管理系统必须使用SQL语句去响应用户的请求。作为信息管理系统的创造者和维护者,每一位相关IT人员都应该能熟练使用SQL。随着社会的进步以及信息技术的革新,新的信息管理系统业务逻辑变得越来越复杂,业务数据量变得越来越庞大,SQL语句应该引起信息技术从业者的足够重视。好的SQL语句能够帮助信息管理系统更稳健地运行,相反,差的SQL语句则将极大地降低信息管理系统运行的效率,从而影响用户的体验。
编者自2008年从江南大学计算机科学与技术专业毕业后,一直从事医院信息管理系统(HIS)的研发与技术支持工作。在近10年的项目实战中,遇到了无数次由于不合理地使用SQL语句而造成的各种问题。有些性能问题甚至直到系统运行数年,数据量达到一定程度,已经影响用户日常使用了才被发现。项目组中很多技术支持人员及工程人员对SQL语句没有足够的重视,以至于很多不合理的SQL语句年复一年地出现在软件产品中,降低了产品的质量。一个好的程序员不是熟练使用开发语言就可以了,还要对SQL语句乃至数据库知识有深入的了解。编者凭借多年的项目实战经验,并结合扎实的理论知识编写了此书,希望能够帮助更多的读者学会SQL语句,并能正确、高效地使用它,从而保障信息管理系统高质量、高效率地运行。
不同于一些纯理论书,本书在编写过程中一直秉承理论结合实践的原则来介绍SQL语句的应用。并且,用切身体会来分析平常遇到的一些SQL语句的使用误区,以便读者更好地理解SQL语句,也希望能够帮助读者在以后的工作中避免陷入误区。本书所讲的知识完全来自于编者近年来数百次的项目实战。由于本书是一本介绍SQL语句的书籍,一些举例尽量使用标准SQL。标准SQL以外的SQL相关知识,分别以SQL Server数据库的T-SQL和Oracle数据库的PL/SQL来讲解。之所以选择SQL Server数据库和Oracle数据库来讲解,是因为在信息管理系统领域,SQL Server数据库和Oracle数据库具有非常高的市场占有率,而且很多读者平时接触最多的也是SQL Server数据库和Oracle数据库。
本书讲解过程中用到的是Oracle数据库管理系统中SCOTT模式下的关系模型。该关系模型主要包含4张表,分别是EMP(员工表)、DEPT(部门表)、SALGRADE(月薪等级表)以及BONUS(奖金表)。SCOTT模型是Oracle数据库安装过程中默认安装的一个非常精简并且容易理解的关系模型,非常适合SQL语句的学习。本书分别给出了这4张表在SQL Server数据库与Oracle数据库中的建表语句,以及基础数据导入的SQL脚本,后续SQL语句的举例也基本围绕这4张表展开。
本书共分为14章,由易到难,逐步讲解SQL语句的应用。其中,第1章是SQL概述;第2章简单介绍SCOTT模式;第3~6章分别介绍SQL常用的增删改查功能;第7~12章分别介绍常用的数据库对象,包含视图、索引、约束、触发器、存储过程和函数;第13章介绍非常重要的事务知识;第14章通过示例比较SQL Server数据库和Oracle数据库的差异。
本书在编写过程中得到了创业软件股份有限公司多位领导和同事的支持和帮助,感谢高级副总裁沈建苗、人力资源总经理于瑶以及研发中心各位同事。
由于编者的精力和水平有限,书中错误和疏漏之处在所难免,敬请广大读者批评指正。
SQL应用及误区分析 电子书 下载 mobi epub pdf txt