第1篇SQL基础篇 2
第0章 数据库的运行环境及权限设置 2
0.1 SQL Server数据库的SQL代码运行环境 2
0.2 SQL Server数据库中的数据权限 3
0.2.1服务器角色 3
0.2.2数据库角色 3
0.2.3应用程序角色 4
0.3 Oracle数据库的SQL代码运行环境 4
0.4 Oracle数据库中的数据权限 4
0.4.1对象权限 4
0.4.2系统权限 5
0.4.3角色权限 5
0.5 MySQL数据库的SQL代码运行环境 6
0.6 MySQL数据库中的数据权限 7
0.6.1服务器检查是否允许用户连接 7
0.6.2检查登录用户的操作 7
第1章 数据库与SQL概述 9
1.1数据库概述 9
1.1.1数据库基本概念 9
1.1.2数据管理技术简史 11
1.2数据模型 12
1.2.1实体描述 13
1.2.2实体间联系及联系的种类 13
1.2.3概念模型的表示方法 13
1.2.4常用的3种数据模型 14
1.3关系数据库 15
1.3.1关系数据库的基本概念 15
1.3.2关系数据库的设计 16
1.3.3设计关系数据库的过程 16
1.3.4数据库规范化 16
1.3.5范式枚举 17
1.4 SQL概述 19
1.4.1 SQL简史 19
1.4.2 SQL的特点 20
1.4.3 SQL的约定和要求 20
1.5小结 21
第2章 创建、修改和删除数据库 22
2.1 SQL代码运行环境 22
2.2创建数据库的语法结构 23
2.3利用create database语句创建数据库 24
2.3.1创建默认数据库 24
2.3.2创建指定数据库文件位置的数据库 25
2.3.3创建多数据文件、多日志文件的数据库 26
2.3.4创建多个文件组的数据库 27
2.4修改数据库 28
2.4.1查看数据库的语法结构 28
2.4.2利用sp_ helpdb函数查看数据库 29
2.4.3重命名数据库的语法结构 30
2.4.4利用sp renamedb函数重命名数据库 30
2.4.5增加数据库的数据文件 31
2.4.6增加数据库的日志文件 32
2.4.7修改数据库文件 33
2.4.8删除数据库文件 34
2.5删除数据库 35
2.5.1利用SQL代码删除数据库 35
2.5.2利用IF和SQL语句动态删除数据库 36
2.6小结 37
第3章 创建和操作数据库表 38
3.1数据库表概述 38
3.2创建数据库表 38
3.2.1创建数据库表的语法结构 38
3.2.2创建普通数据库表 41
3.3创建临时数据库表 42
3.3.1创建局部临时表 42
3.3.2创建全局临时表 43
3.4创建含有列约束的数据库表 44
3.4.1创建含有不能为空字段的数据库表 44
3.4.2创建含有主键、唯一键字段的数据库表 45
3.4.3创建主键、外键关联的数据库表 46
3.4.4创建含有check约束字段的数据库表 47
3.5创建含有默认、计算字段的数据库表 48
3.5.1创建含有默认值字段的数据库表 48
3.5.2创建含有计算字段的数据库表 49
3.6创建含有自动编号、排序字段的数据库表 50
3.6.1创建含有自动编号字段的数据库表 50
3.6.2创建含有排序字段的数据库表 50
3.6.3动态判断数据库表是否存在 51
3.7修改数据库表 52
3.7.1查看数据库表的信息 52
3.7.2重命名数据库表 54
3.7.3增加数据库表的新字段 55
3.7.4修改数据库表的字段 55
3.7.5删除数据库表的字段 56
3.8删除数据库表 58
3.9 db business数据库的设计与实现 60
3.9.1创建db_business数据库表的E-R图 60
3.9.2创建db_usiness数据库 61
3.9.3创建仓库表并插入数据 61
3.9.4创建职工表并插入数据 63
3.9.5创建供应商表并插入数据 63
3.9.6创建订购单表并插入数据 64
3.10小结 65
第2篇SQL数据查询和处理篇 67
第4章SQL数据查询 67
4.1 SQL数据查询概述 67
4.2投影查询 68
4.2.1查询单列和多列 68
4.2.2查询所有列 69
4.2.3消除重复列 69
4.3列的计算 70
4.3.1显示职工的姓名、工资及奖金信息 70
4.3.2显示职工的姓名、工资、代扣税、奖金、应发工资信息 71
4.3.3显示职工的姓名、工资和职工评语信息 72
4.3.4连接列值 73
4.4 where条件查询 74
4.4.1等值查询 75
4.4.2不匹配查询 76
4.4.3 and运算符查询 78
4.4.4 or运算符查询 79
4.4.5 not运算符查询 80
4.4.6运算符的优先级 80
4.5 between…and区间查询 81
4.6 in运算符查询 82
4.7空值查询 83
4.8 like模糊查询 84
4.8.1%通配符在like模糊查询中的应用 85
4.8.2_通配符在like模糊查询中的应用 86
4.8.3[]通配符在like模糊查询中的应用 86
4.8.4[^]通配符在like模糊查询中的应用 87
4.8.5在多个字段中进行like模糊查询 88
4.9排序查询 88
4.9.1升序排序查询 88
4.9.2降序排序查询 89
4.9.3多列排序查询 90
4.9.4随机排序 91
4.9.5显示部分记录的排序 91
4.9.6计算字段排序 92
4.9.7按用户的需求对数据动态排序 93
4.10小结 93
第5章SQL数据类型 94
5.1 SQL数据类型概述 94
5.2数字类型 94
5.2.1精确数字 95
5.2.2近似数字 95
5.3字符串类型 97
5.4二进制字符串 97
5.4.1分割字符串类型数据 98
5.4.2转换字符串的大小写 98
5.5日期和时间类型 99
5.5.1转换日期和时间类型数据格式 100
5.5.2按时间查询数据 101
5.6 XML数据类型 102
5.7用户定义数据类型 102
5.8其他数据类型 103
5.9小结 103
第6章SQL高级查询 104
6.1聚合函数查询 104
6.1.1 count聚合函数的应用 104
6.1.2 sum聚合函数的应用 106
6.1.3 max和min聚合函数的应用 107
6.1.4 avg聚合函数的应用 108
6.1.5利用聚合函数产生虚拟字段 109
6.1.6聚合函数虚拟字段的排序 112
6.1.7聚合函数在where条件中的应用 114
6.2分组查询 115
6.2.1 group by简单分组查询 116
6.2.2带有虚拟字段的分组查询 117
6.2.3带有where条件的分组查询 117
6.2.4带有having条件的分组查询 118
6.2.5多列组合分组查询 119
6.2.6 all关键字在分组查询中的应用 121
6.2.7 cube关键字在分组查询中的应用 122
6.2.8 rollup关键字在分组查询中的应用 123
6.2.9分组查询的排序 125
6.2.10 compute by查询的应用 125
6.3小结 127
第7章SQL嵌套子查询 128
7.1 SQL嵌套子查询概述 128
7.2单行嵌套子查询 128
7.2.1等值单行嵌套子查询 128
7.2.2不匹配单行嵌套子查询 129
7.2.3区间单行嵌套子查询 130
7.2.4多表单行嵌套子查询 132
7.3多行嵌套子查询 133
7.3.1 in运算符在嵌套子查询中的运用 133
7.3.2 exists运算符在嵌套子查询中的运用 136
7.3.3 any运算符在嵌套子查询中的运用 137
7.3.4 all运算符在嵌套子查询中的运用 139
7.4产生虚拟字段的嵌套子查询 140
7.4.1单表产生虚拟字段的嵌套子查询 141
7.4.2多表产生虚拟字段的嵌套子查询 142
7.5产生虚拟表的嵌套子查询 143
7.6 group by分组在嵌套子查询中的应用 144
7.6.1利用group by产生虚拟表嵌套子查询 144
7.6.2 group by在where条件中的应用 145
7.7内外层嵌套子查询 146
7.8小结 148
第8章SQL多表连接查询 149
8.1 SQL多表连接查询概述 149
8.2笛卡儿积 149
8.3简单的多表连接查询 151
8.3.1带有比较运算符的多表连接查询 151
8.3.2带有模糊运算的多表连接查询 152
8.3.3带有排序的多表连接查询 153
8.4复杂的多表连接查询 154
8.4.1带有虚拟计算字段的多表连接查询 154
8.4.2带有复杂条件的多表连接查询 155
8.5带有保存功能的多表连接查询 156
8.6超连接查询 159
8.6.1内连接查询 159
8.6.2左连接查询 160
8.6.3右连接查询 162
8.6.4全连接查询 163
8.6.5超连接查询的综合应用 164
8.7集合的并、交、差运算查询 165
8.7.1集合的并运算 165
8.7.2集合的交运算 168
8.7.3集合的差运算 168
8.8小结 170
第9章SQL数据处理 171
9.1 SQL数据处理概述 171
9.2插入数据 171
9.3插入单行数据记录 172
9.3.1通过指定所有列插入记录 172
9.3.2通过指定部分列插入记录 175
9.3.3通过默认值插入记录 176
9.4插入多行数据记录 177
9.4.1利用values插入多行数据记录 177
9.4.2利用union all插入多行数据记录 178
9.4.3利用insert select插入多行数据记录 179
9.5更新数据 181
9.5.1更新一行中的一列数据信息 181
9.5.2更新多行中的一列数据信息 182
9.5.3利用嵌套查询更新数据信息 184
9.5.4更新多列中的数据信息 185
9.5.5更新所有行中的数据信息 187
9.6删除数据 188
9.6.1删除单行数据信息 188
9.6.2删除多行数据信息 189
9.6.3利用嵌套查询删除数据信息 190
9.6.4删除表中的所有记录 191
9.7小结 192
第10章SQL流程控制 193
10.1 SQL流程控制概述 193
10.2变量 193
10.2.1局部变量的声明 193
10.2.2局部变量的赋值 194
10.2.3局部变量的声明、赋值与输出 194
10.2.4利用局部变量动态查询数据表中的数据信息 196
10.2.5全部变量概述 196
10.2.6全局变量的应用 197
10.3注释符和常用运算符 198
10.4程序流程控制 199
10.5顺序结构与分支结构 199
10.6 if…else语句 199
10.6.1 if…else语句的应用 200
10.6.2 if…else语句在数据表查询中的应用 200
10.7 if…else if…else语句 202
10.7.1 if…else if…else语句的应用 202
10.7.2 if…else if…else语句在数据表中的应用 203
10.8 case语句 205
10.8.1 case语句的应用 206
10.8.2 case语句在数据表查询中的应用 207
10.9循环结构的语法结构 207
10.10 while语句的应用 208
10.11跳转语句 209
10.11.1 break语句 209
10.11.2 continue语句 210
10.11.3 goto语句 212
10.11.4 return语句 212
10.12小结 214
第3篇SQL常用对象技术篇 216
第11章 视图管理 216
11.1视图概述 216
11.1.1视图的优点 216
11.1.2视图的缺点 216
11.2创建视图 217
11.2.1单表视图 217
11.2.2多表视图 219
11.2.3带有聚合函数的视图 220
11.2.4基于视图的视图 221
11.2.5创建带有分组功能的视图 225
11.2.6创建与数据表字段不同的视图 227
11.2.7创建加密视图 228
11.3修改视图 228
11.4删除视图 229
11.4.1利用SQL代码删除视图 230
11.4.2带有判断条件的删除视图 230
11.5视图数据的查询 231
11.5.1查询视图中的数据与查询数据表中的数据对比 231
11.5.2排序视图中的数据信息 232
11.5.3分组查询视图中的数据信息 233
11.6通过视图添加、更新和删除数据 234
11.6.1通过视图添加数据 235
11.6.2通过视图更新数据 236
11.6.3通过视图删除数据 236
11.7小结 237
第12章 存储过程 238
12.1存储过程概述 238
12.1.1系统存储过程 238
12.1.2自定义存储过程 238
12.1.3存储过程的优点 239
12.2创建并执行存储过程 239
12.2.1不带参数的存储过程 240
12.2.2数据查询功能的不带参数的存储过程 241
12.2.3带有输入参数的存储过程 243
12.2.4带有输入参数的数据查询功能的存储过程 245
12.2.5带有输入和输出参数的存储过程 246
12.2.6带有登录判断功能的存储过程 247
12.2.7带有判断条件的插入功能的存储过程 248
12.2.8带有判断条件的删除功能的存储过程 250
12.2.9带有判断条件的更新功能的存储过程 251
12.2.10创建加密存储过程 252
12.3修改存储过程 253
12.3.1查看存储过程的属性和功能代码信息 253
12.3.2修改存储过程的功能代码 255
12.3.3重命名存储过程 256
12.4删除存储过程 256
12.4.1删除存储过程 257
12.4.2带有判断条件的删除存储过程 257
12.5存储过程的自动执行和监控 258
12.5.1存储过程的自动执行 259
12.5.2监控存储过程 259
12.6小结 260
第13章 函数 261
13.1 SQL函数概述 261
13.2聚合函数 261
13.2.1统计标准偏差stdev()函数的语法格式 261
13.2.2统计标准偏差函数stdev()的应用 262
13.2.3总体标准偏差stdevp() 262
13.2.4统计方差var() 263
13.2.5总体变异方差varp() 263
13.2.6其他统计函数的应用 263
13.3算术函数 265
13.3.1三角函数与反三角函数的应用 266
13.3.2符号函数的应用 267
13.3.3幂函数的应用 268
13.3.4取近似值函数的应用 269
13.3.5随机函数的应用 270
13.3.6利用随机函数与取近似值函数实现彩票30选7 271
13.4字符串函数 272
13.4.1字符转换函数的语法结构 273
13.4.2字符转换函数的应用 273
13.4.3循环输出26个小写英文字母及其ASCII码 274
13.4.4字符长度函数及去空格函数 275
13.4.5取子串函数 276
13.4.6字符串操作函数的分类 278
13.4.7字符串操作函数的应用 279
13.4.8利用字符串操作函数绘制菱形美元图案 280
13.5数据类型转换函数 281
13.6日期时间函数 281
13.6.1显示当前日期 282
13.6.2显示时间 283
13.6.3显示星期 284
13.6.4日期时间函数在查询语句中的应用 284
13.7自定义函数 285
13.7.1创建并调用函数的语法结构 285
13.7.2标量值函数的创建与调用 285
13.7.3表值函数的创建与调用 288
13.7.4查看函数的属性和功能代码信息 289
13.7.5修改函数的功能代码 291
13.7.6重命名函数 293
13.7.7删除自定义函数 294
13.8小结 295
第14章 游标 296
14.1游标概述 296
14.1.1游标的优点 296
14.1.2实现游标的方法 296
14.2游标的类型 297
14.3游标的基本构成 298
14.3.1声明游标 298
14.3.2打开游标 300
14.3.3读取游标中的数据 300
14.3.4游标的关闭和释放 301
14.4游标的基本操作 301
14.4.1游标的声明、打开、读取和关闭 301
14.4.2利用变量输出游标中的字段值 302
14.4.3利用游标修改数据表中的数据记录 303
14.4.4利用游标删除数据表中的数据记录 303
14.4.5利用游标判断记录是否存在 304
14.4.6利用游标逐条显示数据表中的数据记录 304
14.4.7在存储过程中使用游标 305
14.5游标的管理 306
14.5.1 sp cursor_ list()系统存储过程的语法格式 307
14.5.2使用sp_ cursor_list()系统存储过程管理游标 308
14.5.3 sp_ describe_cursor()系统存储过程 309
14.5.4使用sp describe_cursor()系统存储过程管理游标 310
14.5.5 sp_ describe_cursor_columns()系统存储过程的语法格式 310
14.5.6使用sp describe_cursor_columns()系统存储过程管理游标 312
14.5.7 sp_ describe_ cursor_tables()系统存储过程的语法格式 313
14.5.8使用sp describe_ cursor_tables()系统存储过程管理游标 314
14.6小结 315
第15章 触发器 316
15.1触发器概述 316
15.1.1触发器的作用 316
15.1.2触发器的分类 317
15.2创建与执行事后触发器 318
15.3创建与执行替代触发器 320
15.4查看触发器的属性和功能代码信息 323
15.5修改触发器的功能代码 325
15.6重命名触发器 326
15.7删除触发器 327
15.7.1删除无判断条件的触发器 327
15.7.2删除带有判断条件的触发器 328
15.8禁用与启用触发器 328
15.9 DDL触发器 329
15.10创建与执行DDL触发器 330
15.10.1保护数据表不被修改和删除的DDL触发器 330
15.10.2保护数据库不能被删除的DDL触发器 331
15.10.3 记录数据库修改状态的DDL触发器 332
15.11修改和删除DDL触发器 334
15.12触发器的使用 335
15.12.1删除功能触发器 336
15.12.2插入功能触发器 337
15.12.3更新功能触发器 338
15.12.4嵌套触发器 339
15.13小结 340
第4篇SQL高级性能篇 342
第16章SQL事务处理 342
16.1 SQL事务概述 342
16.1.1事务的作用 342
16.1.2事务的属性 342
16.1.3数据一致性问题 343
16.2锁机制 344
16.2.1锁的粒度 344
16.2.2锁的类型 344
16.3事务的隔离级别 345
16.4事务的控制 345
16.4.1启动事务 346
16.4.2结束事务 346
16.4.3利用API函数控制事务 346
16.5事务的错误处理 346
16.5.1事务的设置及提交 346
16.5.2回滚事务 347
16.6事务保存点机制 349
16.6.1创建事务保存点的语法格式 349
16.6.2事务保存点的应用 349
16.7死锁 352
16.7.1避免与降低死锁的方法 352
16.7.2事务中锁的应用 352
16.7.3 SQL中的死锁 353
16.8调试事务 354
16.8.1利用dbcc opentran查看事务信息 354
16.8.2利用sp who查看活动进程信息 356
16.8.3利用dbcc inputbuffer获取进程中的SQL语句 358
16.8.4利用kill终止进程 359
16.9孤立事务 360
16.9.1孤立事务的产生 360
16.9.2利用if条件语句解决孤立事务 361
16.10事务设计原则和注意事项 361
16.11小结 362
第17章SQL安全性控制 363
17.1 SQL安全性概述 363
17.1.1服务器认证 363
17.1.2数据库认证 363
17.1.3设置服务器身份验证模式 364
17.2角色 365
17.2.1服务器角色 365
17.2.2数据库角色 366
17.2.3应用程序角色 367
17.3登录账号的管理 367
17.3.1登录账号的管理的语法格式 367
17.3.2登录账号管理的应用 367
17.4数据库用户的管理 370
17.4.1数据库用户管理的语法格式 370
17.4.2数据库用户管理的应用 370
17.5服务器角色 372
17.6数据库角色 373
17.7应用程序角色 375
17.8权限的管理 377
17.9小结 379
第18章SQL高级特性 380
18.1 SQL规则 380
18.1.1创建规则 380
18.1.2创建规则绑定 382
18.1.3解除规则绑定 384
18.1.4删除规则 385
18.2索引概述 386
18.2.1索引的优点 386
18.2.2索引的缺点 387
18.2.3索引的分类 387
18.3创建索引 387
18.3.1创建普通索引 388
18.3.2创建唯一索引和簇索引 389
18.4修改索引 389
18.4.1重命名和查看索引 390
18.4.2维护索引 390
18.4.3重构索引 391
18.5删除索引 392
18.6约束完整性 393
18.6.1约束完整性的分类 393
18.6.2约束完整性的实现方法 394
18.7 SQL查询优化 394
18.7.1避免使用or、 not和distinct运算符 394
18.7.2简化连接条件 396
18.8小结 397
第19章 数据库的维护 398
19.1压缩数据库 398
19.1.1压缩数据库的语法格式 398
19.1.2压缩数据库的应用 399
19.1.3压缩数据库的指定数据文件或日志文件 400
19.2备份数据库 401
19.2.1备份和定时备份数据库 402
19.2.2备份数据库的日志文件 402
19.2.3备份数据库的文件和文件组 403
19.2.4检查备份集 404
19.3恢复数据库 404
19.4数据库的分离和附加 405
19.4.1利用sp_ detach_db分离数据库 406
19.4.2利用sp_ attach db附加数据库 406
19.5小结 407
第20章 动态SQL 408
20.1动态SQL概述 408
20.1.1嵌入式SQL 408
20.1.2动态SQL与静态SQL的区别 409
20.2 ODBC和OLE DB 409
20.2.1开放式数据库连接ODBC 409
20.2.2数据库对象链接和嵌入OLE DB 409
20.3 ADO.NET接口 410
20.4 C#调用SQL语句创建各种数据对象 411
20.4.1 C#调用SQL语句创建数据库 411
20.4.2 C#调用SQL语句创建数据库表 414
20.5 C#调用SQL语句处理数据表中的数据 417
20.5.1 C#调用SQL语句插入数据记录 417
20.5.2 C#调用SQL语句更新数据记录 420
20.5.3 C#调用SQL语句删除数据记录 425
20.6 C#调用SQL语句查询数据库中的数据信息 427
20.6.1 C#调用SQL语句显示不同数据表中的数据信息 427
20.6.2 C#调用SQL语句动态查询多表信息 429
20.6.3 C#调用SQL语句统计职工工资信息 430
20.6.4 C#调用SQL语句排序视图中的数据信息 431
20.7 C#中存储过程和触发器的应用 435
20.7.1 C#调用存储过程显示视图中的数据信息 435
20.7.2利用触发器实现同时删除仓库备份表和职工备份表中的数据信息 437
20.8 ASP.NET与SQL 440
20.8.1 ASP.NET调用SQL语句显示数据库连接信息 440
20.8.2 ASP.NET调用SQL自定义函数实现工资评语 442
20.9小结 445
第21章SQL的未来 446
21.1 SQL展望 446
21.2 OLAP和商业智能 446
21.2.1报表的创建及美化 447
21.2.2动态上传和下载文件 452
21.2.3发送电子邮件 456
21.2.4备份数据库 457
21.3 SQL的LINQ 459
21.4面向对象的数据库 462
21.5小结 462