编辑推荐
SQL经典畅销书,麻省理工学院、伊利诺伊大学等众多大学的参考教材!
由浅入深地讲解SQL的基本概念和语法,内容丰富,简洁实用,数据的排序、过滤和分组、表、视图、联结、子查询、游标、存储过程和触发器等核心知识点一应俱全。
内涵丰富精彩实例,实例已根据新版本更新,同时便于查阅!
内容简介
SQL是使用广泛的数据库语言,几乎所有重要的DBMS都支持SQL。《图灵程序设计丛书:SQL必知必会(第4版)》由浅入深地讲解了SQL的基本概念和语法,涉及数据的排序、过滤和分组,以及表、视图、联结、子查询、游标、存储过程和触发器等内容,实例丰富,便于查阅。新版增加了针对ApacheOpenOfficeBase、MariaDB、SQlite等DBMS的描述,并根据新版本的Oracle、SQLServer、MySQL和PostgreSQL更新了相关示例。
《图灵程序设计丛书:SQL必知必会(第4版)》适合SQL初学者,也可供广大开发及管理人员参考。作者简介
Adobe公司开发者关系部总监,世界知名的技术作家,在计算机产品开发、支持、培训和营销等方面拥有20多年的丰富经验。多年来,他撰写了SQL、MySQL、正则表达式、JSP、WAP和Windows开发等方面的十多部技术图书,其中不少已被翻译为多种语言在世界各地出版发行并成为畅销经典。读者可以通过他的个人网站forta.com了解更多信息。精彩书评
“书是传道授业解惑的工具,重要的是能讲明白知识点,而不是篇幅有多厚……学校图书馆里的这《SQL必知必会 第4版》,封皮都被翻烂了,受欢迎程度可见一斑。”
——读者对《SQL必知必会 第4版》第3版的评论
目录
第1课了解SQL
1.1数据库基础
1.2什么是SQL
1.3动手实践
1.4小结
第2课检索数据
2.1SELECT语句
2.2检索单个列
2.3检索多个列
2.4检索所有列
2.5检索不同的值
2.6限制结果
2.7使用注释
2.8小结
第3课排序检索数据
3.1排序数据
3.2按多个列排序
3.3按列位置排序
3.4指定排序方向
3.5小结
第4课过滤数据
4.1使用WHERE子句
4.2WHERE子句操作符
4.3小结
第5课高级数据过滤
5.1组合WHERE子句
5.2IN操作符
5.3NOT操作符
5.4小结
第6课用通配符进行过滤
6.1LIKE操作符
6.2使用通配符的技巧
6.3小结
第7课创建计算字段
7.1计算字段
7.2拼接字段
7.3执行算术计算
7.4小结
第8课使用数据处理函数
8.1函数
8.2使用函数
8.3小结
第9课汇总数据
9.1聚集函数
9.2聚集不同值
9.3组合聚集函数
9.4小结
第10课分组数据
10.1数据分组
10.2创建分组
10.3过滤分组
10.4分组和排序
10.5SELECT子句顺序
10.6小结
第11课使用子查询
11.1子查询
11.2利用子查询进行过滤
11.3作为计算字段使用子查询
11.4小结
第12课联结表
12.1联结
12.2创建联结
12.3小结
第13课创建高级联结
13.1使用表别名
13.2使用不同类型的联结
13.3使用带聚集函数的联结
13.4使用联结和联结条件
13.5小结
第14课组合查询
14.1组合查询
14.2创建组合查询
14.3小结
第15课插入数据
15.1数据插入
15.2从一个表复制到另一个表
15.3小结
第16课更新和删除数据
16.1更新数据
16.2删除数据
16.3更新和删除的指导原则
16.4小结
第17课创建和操纵表
17.1创建表
17.2更新表
17.3删除表
17.4重命名表
17.5小结
第18课使用视图
18.1视图
18.2创建视图
18.3小结
第19课使用存储过程
19.1存储过程
19.2为什么要使用存储过程
19.3执行存储过程
19.4创建存储过程
19.5小结
第20课管理事务处理
20.1事务处理
20.2控制事务处理
20.3小结
第21课使用游标
21.1游标
21.2使用游标
21.3小结
第22课高级SQL特性
22.1约束
22.2索引
22.3触发器
22.4数据库安全
22.5小结
附录A样例表脚本
附录B流行的应用程序
附录CSQL语句的语法
附录DSQL数据类型
附录ESQL保留字
常用SQL语句速查
索引精彩书摘
(3)在Orders表添加一行,它与顾客ID相关联;
(4)检索Orders表中赋予的新订单ID;
(5)为订购的每个物品在OrderItems表中添加一行,通过检索出来的ID把它与Orders表关联(并且通过产品Ⅲ与Products表关联)。
现在假设由于某种数据库故障(如超出磁盘空间、安全限制、表锁等),这个过程无法完成。数据库中的数据会出现什么情况?
如果故障发生在添加顾客之后,添加Orders表之前,则不会有什么问题。某些顾客没有订单是完全合法的。重新执行此过程时,所插入的顾客记录将被检索和使用。可以有效地从出故障的地方开始执行此过程。
但是,如果故障发生在插入Orders行之后,添加OrderItems行之前,怎么办?现在,数据库中有一个空订单。
更糟的是,如果系统在添加OrderItems行之时出现故障,怎么办?结果是数据库中存在不完整的订单,而你还不知道。
如何解决这种问题?这就需要使用事务处理了。事务处理是一种机制,用来管理必须成批执行的SQL操作,保证数据库不包含不完整的操作结果。利用事务处理,可以保证一组操作不会中途停止,它们要么完全执行,要么完全不执行(除非明确指示)。如果没有错误发生,整组语句提交给(写到)数据库表;如果发生错误,则进行回退(撤销),将数据库恢复到某个已知且安全的状态。
再看这个例子,这次我们说明这一过程是如何工作的:
(1)检查数据库中是否存在相应的顾客,如果不存在,添加他;
(2)提交顾客信息;
(4)在Orders表中添加一行;
(5)如果向Orders表添加行时出现故障,回退;
(6)检索Orders表中赋予的新订单ID;
(7)对于订购的每项物品,添加新行到OrderItems表;
(8)如果向OrderItems添加行时出现故障,回退所有添加的OrderItems行和Orders行。
在使用事务处理时,有几个反复出现的关键词。下面是关于事务处理需要知道的几个术语:
事务(transaction)指一组SQL语句;
回退(rollback)指撤销指定SQL语句的过程;
提交(commit)指将未存储的SQL语句结果写入数据库表;
保留点(savepoint)指事务处理中设置的临时占位符(placeholder),可以对它发布回退(与回退整个事务处理不同)。
……