第1章 数据库入门 1
1.1数据库概述 1
数据库与数据库管理系统 1
数据库能做什么 2
主流数据库管理系统介绍 2
1.2数据库基础概念 5
Catalog 5
表(Table ) 6
列(Column) 7
数据类型(DataType) 8
记录(Record) 9
主键(PrimaryKey) 9
索引(Index) 10
表关联 12
数据库的语言——SQL 13
DBA与程序员 14
第2章 数据表的创建和管理 17
2.1数据类型 17
整数类型 17
数值类型 19
字符相关类型 21
日期时间类型 23
二进制类型 24
2.2通过SQL语句管理数据表 25
创建数据表 25
定义非空约束 26
定义默认值 27
定义主键 27
定义外键 29
修改已有数据表 30
删除数据表 31
受限操作的变通解决方案 31
第3章 数据的增、删、改 33
3.1数据的插入 34
简单的INSERT语句 34
简化的INSERT语句 36
非空约束对数据插入的影响 36
主键对数据插入的影响 37
外键对数据插入的影响 38
3.2数据的更新 38
简单的数据更新 39
带WHERE子句的UPDATE语句 40
非空约束对数据更新的影响 41
主键对数据更新的影响 42
外键对数据更新的影响 42
3.3数据的删除 43
简单的数据删除 43
带WHERE子句的DELETE语句 44
第4章 数据的检索 47
4.1 SELECT基本用法 48
简单的数据检索 48
检索出需要的列 49
列别名 51
按条件过滤 52
数据汇总 53
排序 56
4.2高级数据过滤 59
通配符过滤 59
空值检测 63
反义运算符 64
多值检测 65
范围值检测 66
低效的“WHERE 1=1” 68
4.3数据分组 72
数据分组入门 74
数据分组与聚合函数 76
HAVING语句 79
4.4限制结果集行数 81
MySQL 81
MS SQL Server 2000 82
MS SQL Server 2005 83
Oracle 84
DB2 86
数据库分页 88
4.5抑制数据重复 90
4.6计算字段 91
常量字段 92
字段间的计算 93
数据处理函数 95
字符串的拼接 97
计算字段的其他用途 103
4.7不从实体表中取的数据 105
4.8联合结果集 107
简单的结果集联合 108
联合结果集的原则 110
UNION ALL 112
联合结果集应用举例 114
第5章 函数 119
5.1数学函数 122
求绝对值 122
求指数 122
求平方根 123
求随机数 123
舍入到最大整数 125
舍入到最小整数 126
四舍五入 127
求正弦值 128
求余弦值 129
求反正弦值 129
求反余弦值 130
求正切值 130
求反正切值 131
求两个变量的反正切 131
求余切 132
求圆周率π值 132
弧度制转换为角度制 133
角度制转换为弧度制 134
求符号 134
求整除余数 135
求自然对数 136
求以10为底的对数 136
求幂 137
5.2字符串函数 137
计算字符串长度 138
字符串转换为小写 138
字符串转换为大写 139
截去字符串左侧空格 139
截去字符串右侧空格 140
截去字符串两侧的空格 141
取子字符串 143
计算子字符串的位置 144
从左侧开始取子字符串 145
从右侧开始取子字符串 146
字符串替换 147
得到字符的ASCII码 148
得到一个ASCII码数字对应的字符 149
发音匹配度 151
5.3日期时间函数 153
日期、时间、日期时间与时间戳 153
主流数据库系统中日期时间类型的表示方式 154
取得当前日期时间 154
日期增减 157
计算日期差额 166
计算一个日期是星期几 172
取得日期的指定部分 177
5.4其他函数 183
类型转换 183
空值处理 188
CASE函数 191
5.5各数据库系统独有函数 194
MySQL中的独有函数 195
MS SQL Server中的独有函数 202
Oracle中的独有函数 206
第6章 索引与约束 209
6.1索引 209
6.2约束 211
非空约束 211
唯一约束 212
CHECK约束 217
主键约束 221
外键约束 224
第7章 表连接 233
7.1表连接简介 236
7.2内连接(INNER JOIN) 236
7.3不等值连接 240
7.4交叉连接 241
7.5自连接 245
7.6外部连接 248
左外部连接 250
右外部连接 251
全外部连接 252
第8章 子查询 255
8.1子查询入门 261
单值子查询 261
列值子查询 263
8.2 SELECT列表中的标量子查询 265
8.3 WHERE子句中的标量子查询 267
8.4集合运算符与子查询 270
IN运算符 270
ANY和SOME运算符 272
ALL运算符 274
EXISTS运算符 275
8.5在其他类型SQL语句中的子查询应用 277
子查询在INSERT语句中的应用 277
子查询在UPDATE语句中的应用 283
子查询在DELETE语句中的应用 285
第9章 主流数据库的SQL语法差异解决方案 287
9.1 SQL语法差异分析 287
数据类型的差异 287
运算符的差异 288
函数的差异 289
常用SQL的差异 289
取元数据信息的差异 290
9.2消除差异性的方案 293
为每种数据库编写不同的SQL语句 293
使用语法交集 294
使用SQL实体对象 294
使用ORM工具 295
使用SQL翻译器 296
9.3 CowNewSQL翻译器 299
CowNewSQL支持的数据类型 299
CowNewSQL支持的SQL语法 300
CowNewSQL支持的函数 305
CowNewSQL的使用方法 309
第10章 高级话题 313
10.1 SQL注入漏洞攻防 313
SQL注入漏洞原理 313
过滤敏感字符 314
使用参数化SQL 315
10.2 SQL调优 316
SQL调优的基本原则 317
索引 317
全表扫描和索引查找 318
优化手法 318
10.3事务 324
事务简介 324
事务的隔离 325
事务的隔离级别 326
事务的使用 327
10.4自动增长字段 327
MySQL中的自动增长字段 327
MS SQL Server中的自动增长字段 328
Oracle中的自动增长字段 329
DB2中的自动增长字段 332
10.5业务主键与逻辑主键 333
10.6 NULL的学问 334
NULL与比较运算符 336
NULL和计算字段 337
NULL和字符串 338
NULL和函数 339
NULL和聚合函数 339
10.7开窗函数 340
开窗函数简介 342
PARTITION BY子句 344
ORDER BY子句 346
高级开窗函数 353
10.8 WITH子句与子查询 360
第11章 案例讲解 363
11.1报表制作 371
显示制单人详细信息 371
显示销售单的详细信息 373
计算收益 374
产品销售额统计 378
统计销售记录的份额 379
为采购单分级 380
检索所有重叠日期销售单 383
为查询编号 385
标记所有单内最大销售量 386
11.2排序 389
非字段排序规则 389
随机排序 390
11.3表间比较 391
检索制作过采购单的人制作的销售单 391
检索没有制作过采购单的人制作的销售单 392
11.4表复制 394
复制源表的结构并复制表中的数据 394
只复制源表的结构 395
11.5计算字符在字符串中出现的次数 396
11.6去除最高分、最低分 396
去除所有最低、最高值 397
只去除一个最低、最高值 397
11.7与日期相关的应用 398
计算销售确认日和制单日之间相差的天数 398
计算两张销售单之间的时间间隔 399
计算销售单制单日期所在年份的天数 401
计算销售单制单日期所在月份的第一天和最后一天 402
11.8结果集转置 403
将结果集转置为一行 404
把结果集转置为多行 406
11.9递归查询 410
Oracle中的CONNECT BY子句 410
Oracle中的SYS_CONNECT_BY_PATH()函数 414
My SQL Server和DB2中递归查询 415
附录A常用数据库系统的安装和使用 417
A.1 DB2的安装和使用 417
A.2 MySQL的安装和使用 429
A.3 Oracle的安装和使用 441
A.4 Microsoft SQL Server的安装和使用 452