分类:
2009-01-06 09:58:11
目录
第1章 了解SQL 1
1.1 数据库基础 1
1.1.1 什么是数据库 2
1.1.2 表 2
1.1.3 列和数据类型 3
1.1.4 行 4
1.1.5 主键 4
1.2 什么是SQL 5
1.3 动手实践 6
1.4 小结 7
第2章 MySQL简介 8
2.1 什么是MySQL 8
2.1.1 客户机-服务器软件 8
2.1.2 MySQL版本 9
2.2 MySQL工具 10
2.2.1 mysql命令行实用
程序 11
2.2.2 MySQL Adminis-
trator 12
2.2.3 MySQL Query
Browser 13
2.3 小结 14
第3章 使用MySQL 15
3.1 连接 15
3.2 选择数据库 16
3.3 了解数据库和表 17
3.4 小结 19
第4章 检索数据 20
4.1 SELECT语句 20
4.2 检索单个列 20
4.3 检索多个列 22
4.4 检索所有列 23
4.5 检索不同的行 24
4.6 限制结果 25
4.7 使用完全限定的表名 26
4.8 小结 27
第5章 排序检索数据 28
5.1 排序数据 28
5.2 按多个列排序 30
5.3 指定排序方向 31
5.4 小结 33
第6章 过滤数据 34
6.1 使用WHERE子句 34
6.2 WHERE子句操作符 35
6.2.1 检查单个值 36
6.2.2 不匹配检查 37
6.2.3 范围值检查 37
6.2.4 空值检查 38
6.3 小结 39
第7章 数据过滤 40
7.1 组合WHERE子句 40
7.1.1 AND操作符 40
7.1.2 OR操作符 41
7.1.3 计算次序 42
7.2 IN操作符 43
7.3 NOT操作符 44
7.4 小结 45
第8章 用通配符进行过滤 46
8.1 LIKE操作符 46
8.1.1 百分号(%)通配符 47
8.1.2 下划线(_)通配符 48
8.2 使用通配符的技巧 49
8.3 小结 50
第9章 用正则表达式进行搜索 51
9.1 正则表达式介绍 51
9.2 使用MySQL正则表达式 52
9.2.1 基本字符匹配 52
9.2.2 进行OR匹配 54
9.2.3 匹配几个字符之一 54
9.2.4 匹配范围 55
9.2.5 匹配特殊字符 56
9.2.6 匹配字符类 58
9.2.7 匹配多个实例 58
9.2.8 定位符 59
9.3 小结 61
第10章 创建计算字段 62
10.1 计算字段 62
10.2 拼接字段 63
10.3 执行算术计算 66
10.4 小结 67
第11章 使用数据处理函数 68
11.1 函数 68
11.2 使用函数 68
11.2.1 文本处理函数 69
11.2.2 日期和时间处理
函数 71
11.2.3 数值处理函数 74
11.3 小结 74
第12章 汇总数据 75
12.1 聚集函数 75
12.1.1 AVG()函数 76
12.1.2 COUNT()函数 77
12.1.3 MAX()函数 78
12.1.4 MIN()函数 79
12.1.5 SUM()函数 79
12.2 聚集不同值 80
12.3 组合聚集函数 81
12.4 小结 82
第13章 分组数据 83
13.1 数据分组 83
13.2 创建分组 83
13.3 过滤分组 85
13.4 分组和排序 87
13.5 SELECT子句顺序 88
13.6 小结 89
第14章 使用子查询 90
14.1 子查询 90
14.2 利用子查询进行过滤 90
14.3 作为计算字段使用
子查询 93
14.4 小结 96
第15章 联结表 97
15.1 联结 97
15.1.1 关系表 97
15.1.2 为什么要使用
联结 99
15.2 创建联结 99
15.2.1 WHERE子句的
重要性 100
15.2.2 内部联结 103
15.2.3 联结多个表 104
15.3 小结 105
第16章 创建高级联结 106
16.1 使用表别名 106
16.2 使用不同类型的联结 107
16.2.1 自联结 107
16.2.2 自然联结 109
16.2.3 外部联结 109
16.3 使用带聚集函数的联结 111
16.4 使用联结和联结条件 112
16.5 小结 112
第17章 组合查询 113
17.1 组合查询 113
17.2 创建组合查询 113
17.2.1 使用UNION 114
17.2.2 UNION规则 115
17.2.3 包含或取消重复
的行 116
17.2.4 对组合查询结果
排序 117
17.3 小结 118
第18章 全文本搜索 119
18.1 理解全文本搜索 119
18.2 使用全文本搜索 120
18.2.1 启用全文本搜索
支持 120
18.2.2 进行全文本
搜索 121
18.2.3 使用查询扩展 124
18.2.4 布尔文本搜索 126
18.2.5 全文本搜索的
使用说明 129
18.3 小结 130
第19章 插入数据 131
19.1 数据插入 131
19.2 插入完整的行 131
19.3 插入多个行 134
19.4 插入检索出的数据 136
19.5 小结 138
第20章 更新和删除数据 139
20.1 更新数据 139
20.2 删除数据 141
20.3 更新和删除的指导原则 142
20.4 小结 143
第21章 创建和操纵表 144
21.1 创建表 144
21.1.1 表创建基础 144
21.1.2 使用NULL值 146
21.1.3 主键再介绍 147
21.1.4 使用AUTO_ INCREMENT 148
21.1.5 指定默认值 149
21.1.6 引擎类型 150
21.2 更新表 151
21.3 删除表 153
21.4 重命名表 153
21.5 小结 154
第22章 使用视图 155
22.1 视图 155
22.1.1 为什么使用
视图 156
22.1.2 视图的规则和
限制 157
22.2 使用视图 157
22.2.1 利用视图简化
复杂的联结 157
22.2.2 用视图重新格式化
检索出的数据 158
22.2.3 用视图过滤不
想要的数据 159
22.2.4 使用视图与计算
字段 160
22.2.5 更新视图 161
22.3 小结 162
第23章 使用存储过程 163
23.1 存储过程 163
23.2 为什么要使用存储过程 164
23.3 使用存储过程 165
23.3.1 执行存储过程 165
23.3.2 创建存储过程 165
23.3.3 删除存储过程 167
23.3.4 使用参数 167
23.3.5 建立智能存储
过程 170
23.3.6 检查存储过程 173
23.4 小结 173
第24章 使用游标 174
24.1 游标 174
24.2 使用游标 174
24.2.1 创建游标 175
24.2.2 打开和关闭游标 175
24.2.3 使用游标数据 176
24.3 小结 180
第25章 使用触发器 181
25.1 触发器 181
25.2 创建触发器 182
25.3 删除触发器 183
25.4 使用触发器 183
25.4.1 INSERT触发器 183
25.4.2 DELETE触发器 184
25.4.3 UPDATE触发器 185
25.4.4 关于触发器的进
一步介绍 186
25.5 小结 186
第26章 管理事务处理 187
26.1 事务处理 187
26.2 控制事务处理 189
26.2.1 使用ROLLBACK 189
26.2.2 使用COMMIT 190
26.2.3 使用保留点 191
26.2.4 更改默认的提交
行为 192
26.3 小结 192
第27章 全球化和本地化 193
27.1 字符集和校对顺序 193
27.2 使用字符集和校对顺序 194
27.3 小结 196
第28章 安全管理 197
28.1 访问控制 197
28.2 管理用户 198
28.2.1 创建用户账号 199
28.2.2 删除用户账号 200
28.2.3 设置访问权限 200
28.2.4 更改口令 203
28.3 小结 204
第29章 数据库维护 205
29.1 备份数据 205
29.2 进行数据库维护 206
29.3 诊断启动问题 207
29.4 查看日志文件 207
29.5 小结 208
第30章 改善性能 209
30.1 改善性能 209
30.2 小结 211
附录A MySQL入门 212
附录B 样例表 214
附录C MySQL语句的语法 220
附录D MySQL数据类型 224
附录E MySQL保留字 228
索引 232
作者介绍
Ben Forta是世界知名的技术作家,也是Adobe技术界最为知名的专家之一,目前担任Adobe公司的高级技术推广专家。他具有计算机行业20多年工作经验,多年来撰写了十几本技术图书,包括《正则表达式必知必会》、《SQL必知必会》(人民邮电出版社出版)等世界性的畅销书,已被翻译为十几种文字。读者可以通过他的个人网站了解更多信息。
致谢
首先,我要感谢Sams出版公司的伙伴们,他们再一次给了我灵活的自由度,让我把书写成我认为合适的样子。谢谢Mark Renfrow提供的关于本书和前面几本书的反馈意见。特别感谢Loretta Yates不仅在中途勇敢地介入到出版过程中,使其回归正轨,继续进行,而且还果断地签署了本系列书中后两部书籍的出版合约。
谢谢Jochem van Dieten和Timothy Boronczyk这两位技术编辑,他们对书稿进行了出色的技术审查。余下的那些"错误"都是我"故意"犯的,就是想看看读者们有没有注意到。:-)
最后,本书是应《SQL必知必会》读者的请求编写的。那本书收到了很多极有价值的反馈意见和建议,在此我深表谢意。谢谢大家,我希望自己达到了大家的期望。
评论
"此书使我获益匪浅,书的内容和版式都堪称完美,期待作者的下一部著作!"
--Raymond Camden,BroadChoice公司软件开发副总裁
封底文字
MySQL作为开源软件的代表,已经成为世界上最受欢迎的数据库管理系统之一。
本书是经典畅销书《SQL必知必会》之后,作者应众多读者的请求编写的,专门针对MySQL用户。书中继承了《SQL必知必会》的优点,没有过多阐述数据库基础理论,而是紧贴实战需要,直接从数据检索开始,逐步深入各种复杂的内容,包括联结的使用、子查询、正则表达式和基于全文本的搜索、存储过程、游标、触发器、表约束,等等。通过本书,读者能够掌握扎实的基本功,迅速成为MySQL高手。
作者为本书专门开设了网站:,提供下载、勘误和答疑论坛。
宣传语
《SQL必知必会》作者新作
Amazon全五星评价
学习与参考皆宜
第8章用通配符进行过滤
本章介绍什么是通配符、如何使用通配符以及怎样使用LIKE操作符进行通配搜索,以便对数据进行复杂过滤。
8.1 LIKE操作符
前面介绍的所有操作符都是针对已知值进行过滤的。不管是匹配一个还是多个值,测试大于还是小于已知值,或者检查某个范围的值,共同点是过滤中使用的值都是已知的。但是,这种过滤方法并不是任何时候都好用。例如,怎样搜索产品名中包含文本anvil的所有产品?用简单的比较操作符肯定不行,必须使用通配符。利用通配符可创建比较特定数据的搜索模式。在这个例子中,如果你想找出名称包含anvil的所有产品,可构造一个通配符搜索模式,找出产品名中任何位置出现anvil的产品。
通配符(wildcard) 用来匹配值的一部分的特殊字符。
搜索模式(search pattern) 由字面值、通配符或两者组合构成的搜索条件。
通配符本身实际是SQL的WHERE子句中有特殊含义的字符,SQL支持几种通配符。
为在搜索子句中使用通配符,必须使用LIKE操作符。LIKE指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。
谓词 操作符何时不是操作符?答案是在它作为谓词(predi- cate)时。从技术上说,LIKE是谓词而不是操作符。虽然最终的结果是相同的,但应该对此术语有所了解,以免在SQL文档中遇到此术语时不知道。
8.1.1 百分号(%)通配符
最常使用的通配符是百分号(%)。在搜索串中,%表示任何字符出现任意次数。例如,为了找出所有以词jet起头的产品,可使用以下SELECT语句:
此例子使用了搜索模式'jet%'。在执行这条子句时,将检索任意以jet起头的词。%告诉MySQL接受jet之后的任意字符,不管它有多少字符。
区分大小写 根据MySQL的配置方式,搜索可以是区分大小写的。如果区分大小写,'jet%'与JetPack 1000将不匹配。
通配符可在搜索模式中任意位置使用,并且可以使用多个通配符。下面的例子使用两个通配符,它们位于模式的两端:
搜索模式'%anvil%'表示匹配任何位置包含文本anvil的值,而不论它之前或之后出现什么字符。
通配符也可以出现在搜索模式的中间,虽然这样做不太有用。下面的例子找出以s起头以e结尾的所有产品:
重要的是要注意到,除了一个或多个字符外,%还能匹配0个字符。%代表搜索模式中给定位置的0个、1个或多个字符。
注意尾空格 尾空格可能会干扰通配符匹配。例如,在保存词anvil时,如果它后面有一个或多个空格,则子句WHERE prod_name LIKE '%anvil'将不会匹配它们,因为在最后的l后有多余的字符。解决这个问题的一个简单的办法是在搜索模式最后附加一个%。一个更好的办法是使用函数(第11章将会介绍)去掉首尾空格。
注意NULL 虽然似乎%通配符可以匹配任何东西,但有一个例外,即NULL。即使是WHERE prod_name LIKE '%'也不能匹配用值NULL作为产品名的行。
8.1.2 下划线(_)通配符
另一个有用的通配符是下划线(_)。下划线的用途与%一样,但下划线只匹配单个字符而不是多个字符。
举一个例子:
此WHERE子句中的搜索模式给出了后面跟有文本的两个通配符。结果只显示匹配搜索模式的行:第一行中下划线匹配1,第二行中匹配2。.5 ton anvil产品没有匹配,因为搜索模式要求匹配两个通配符而不是一个。对照一下,下面的SELECT语句使用%通配符,返回三行产品:
与%能匹配0个字符不一样,_总是匹配一个字符,不能多也不能少。
8.2 使用通配符的技巧
正如所见,MySQL的通配符很有用。但这种功能是有代价的:通配符搜索的处理一般要比前面讨论的其他搜索所花时间更长。这里给出一些使用通配符要记住的技巧。
不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。
在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。
仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。
总之,通配符是一种极重要和有用的搜索工具,以后我们经常会用到它。
8.3 小结
本章介绍了什么是通配符以及如何在WHERE子句中使用SQL通配符,并且还说明了通配符应该细心使用,不要过度使用。