首页>参考读物>计算机科学与技术>数据库

SQL应用及误区分析
作者 : 张振磊 编著
丛书名 : 数据库技术丛书
出版日期 : 2018-05-11
ISBN : 978-7-111-59730-8
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 248
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书共分为十四章,由易到难,逐步讲解SQL语句的应用。其中,第一章介绍了SQL概述,第二章简单介绍了SCOTT模式,第三章到第六章,分别介绍了SQL最常用的增删改查知识。第七章到第十二章分别介绍了常用的数据库对象,包含了视图、索引、约束、触发器、存储过程和函数。第十三章介绍了非常重要的事务知识。第十四章对SQL SERVER数据库和ORACLE数据库中存在的一些差异进行了举例比较。

图书特色

SQL专家近10年项目实施经验总结,深度解析SQL应用及常见使用误区。
结合大量实例全面剖析SQL知识。充分考虑兼容SQL Server数据库和Oracle数据库,
深入剖析索引及事务的原理。
SQL应用
及误区分析
张振磊 编著

图书前言

在信息管理系统中,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数据库的差异。
本书在编写过程中得到了创业软件股份有限公司多位领导和同事的支持和帮助,感谢高级副总裁沈建苗、人力资源总经理于瑶以及研发中心各位同事。
由于编者的精力和水平有限,书中错误和疏漏之处在所难免,敬请广大读者批评指正。也可将问题以邮件形式发送到编者邮箱:zhangzl@bsoft.com.cn。

上架指导

计算机\数据库

封底文字

随着社会的进步及信息技术的革新,“大数据时代”企业内部的业务数据量逐年呈指数增长。SQL一方面是信息管理系统重要的利器,另一方面系统性能问题也影响着众多的企业。因此,要求程序员不仅会用SQL,更要用好SQL。

本书结合大量实例全面剖析SQL的基础知识,并深入分析了常见的使用误区。全书共14章:第1章介绍了SQL概述;第2章介绍了SCOTT模式;第3~6章分别介绍了SQL最常用的增删改查知识;第7~12章分别介绍了常用的数据库对象,包含了视图、索引、约束、触发器、存储过程和函数;第13章介绍了非常重要的事务知识;第14章对SQL Server数据库和Oracle数据库中存在的一些差异进行了举例比较。

本书既适合SQL的初学者,又可帮助中高级读者对SQL有一个崭新的理解。

本书特色:
基于数百次一线项目开发与实施的经验沉淀,案例丰富
对实际项目中常见的使用误区进行了深入的分析解读
兼容SQL Server数据库和Oracle数据库
比较了SQL Server数据库与Oracle数据库的差异
深入剖析了索引及事务

推荐序

经过作者一年多的努力,《SQL应用及误区分析》一书终于和广大读者见面了。
不知不觉,我们已经迈入大数据时代。当今,作为大数据源头,信息系统生产的数据量每年都在呈几何增长。由于SQL的不合理使用导致的信息系统性能问题困扰着众多IT从业者。本书正是基于这个背景来编写:不仅让读者学会SQL的使用,最大效能地用好SQL是本书的更进一步目的。
本书系统介绍了SQL的核心知识,既包含基础的增删改查,又包含视图、索引、约束、触发器、存储过程和函数等,同时详解了重要事务知识。本书有两大特色:一是对所有知识点进行了详细的举例论证;二是对常见的使用误区进行了深入解读。相信读者在以后的产品开发中能最大程度地避免不必要的认知误区和实践失误。
本书同时结合市场占有率较高的SQL Server数据库和Oracle数据库进行举例。对两种关系型数据库的差异性进行了专门和独到的比较,尤其让开发者在构建适合多种关系型数据库信息系统的过程中充分受益。
近些年随着大数据的崛起,NoSQL数据库和Hadoop技术已经非常活跃,然而其主旨还是应对非结构化数据。SQL技术在近50年的发展过程中已经深入人心,不仅没有没落,反而更受关注,更需要审视和进步。如今NewSQL的出现也标志着NoSQL与SQL已经从对立面向融合体转变。SQL作为关系型数据库的标准语言,应当被所有IT从业者所充分掌握。
本书作者张振磊是一个资深、严谨、钻研型的技术男,创新思维、推崇技术、善于分享、精益求精,这正是我推荐本书的原因。无论在数据库还是系统架构领域,作者都投入了很大的精力去探究实践,像他这样既能拿到Oracle认证专家又能拿到系统架构师认证、有着数百次一线项目开发和实施经验的年轻人,的确少数。本书完全就是10年间数百次项目实践经验沉淀的产物,着实宝贵。
希望本书能广受欢迎,给广大IT从业者带来兴奋愉悦、全新气息的学习资源。更期待这种学习资源能影响到更多的项目,体现更大的价值。

应晶
浙江大学教授
2018年3月

图书目录

推荐序
前言
第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

教学资源推荐
作者: [美] 亚伯拉罕·西尔伯沙茨 (Abraham Silberschatz) [美] 亨利·F. 科思 (Henry F. Korth) [印] S. 苏达尔尚(S. Sudarshan) 著
作者: Gerhard Weikum,Gottfried Vossen
作者: Nello Cristianini John Shawe-Taylor
作者: [美] 亚伯拉罕·西尔伯沙茨 (Abraham Silberschatz) [美] 亨利·F. 科思 (Henry F. Korth) [印] S. 苏达尔尚(S. Sudarshan) 著
参考读物推荐
作者: (美)Christopher Allen
作者: 高斌 著
作者: 梁晶 等编著