第1篇 SQL Server数据库基础 3
第1章 初识SQL Server 2012 3
1.1 数据库的基本概念 4
1.1.1 什么是数据库 4
1.1.2 表 4
1.1.3 数据类型 5
1.1.4 主键 5
1.2 数据库的技术构成 5
1.2.1 数据库系统 5
1.2.2 SQL语言 6
1.2.3 数据库访问技术 7
1.3 SQL Server 2012的优势 8
1.4 SQL Server 2012的新功能 8
1.5 SQL Server 2012的组成 9
1.5.1 SQL Server数据库引擎 9
1.5.2 分析服务 10
1.5.3 集成服务 10
1.5.4 报表服务 10
1.6 高手甜点 10
1.7 跟我学上机 11
第2章 SQL Server 2012的安装与配置 13
2.1 如何选择SQL Server 2012的版本 14
2.2 安装SQL Server 2012 15
2.2.1 SQL Server 2012安装环境要求 15
2.2.2 实例1——安装 SQLServer 2012 15
2.2.3 SQL Server 2012常见实用程序 26
2.3 SSMS基本操作 28
2.3.1 实例2——SSMS的启动与连接 28
2.3.2 实例3——使用模板资源管理器、解决方案与脚本项目 30
2.3.3 实例4 ——配置SQL Server服务器的属性 32
2.3.4 实例5——查询设计器 41
2.4 高手甜点 45
2.5 跟我学上机 45
第2篇 SQL Server数据库基本操作 49
第3章 操作数据库 49
3.1 数据库组成 50
3.1.1 数据文件 50
3.1.2 日志文件 50
3.2 系统数据库 51
3.2.1 master数据库 51
3.2.2 model数据库 51
3.2.3 msdb数据库 51
3.2.4 tempdb数据库 51
3.3 创建数据库 52
3.3.1 实例1——使用对象资源管理器创建数据库 52
3.3.2 实例2——使用Transact-SQL创建数据库 56
3.4 管理数据库 59
3.4.1 实例3——修改数据库 59
3.4.2 实例4——修改数据容量 60
3.4.3 实例5——增加数据库容量 61
3.4.4 实例6——缩减数据库容量 63
3.4.5 实例7——查看数据库信息 64
3.4.6 实例8——数据库更名 68
3.4.7 实例9——删除数据库 69
3.5 高手甜点 70
3.6 跟我学上机 70
第4章 数据表的操作 73
4.1 数据类型 74
4.1.1 系统数据类型 74
4.1.2 实例1——自定义数据类型 79
4.2 创建数据表 82
4.2.1 创建数据表的条件 82
4.2.2 实例2——使用对象资源管理器创建表 83
4.2.3 实例3——使用Transact-SQL创建表 84
4.3 修改表字段 86
4.3.1 实例4——增加字段 86
4.3.2 实例5——修改字段 88
4.3.3 实例6——删除字段 90
4.4 修改表约束 91
4.4.1 实例7——了解常见的表约束 91
4.4.2 实例8——增加约束 93
4.4.3 实例9——删除约束 96
4.5 实例10——查看表中有关信息 97
4.6 实例11——删除表 99
4.7 高手甜点 100
4.8 跟我学上机 101
第5章 Transact-SQL语言基础 103
5.1 Transact-SQL概述 104
5.1.1 什么是Transact-SQL 104
5.1.2 Transact-SQL语法的约定 105
5.2 如何给标识符起名 106
5.3 常量 107
5.3.1 数字常量 107
5.3.2 字符串常量 108
5.3.3 日期和时间常量 109
5.3.4 符号常量 109
5.4 变量 110
5.4.1 实例1——全局变量 110
5.4.2 实例2——局部变量 112
5.4.3 实例3——批和脚本 113
5.5 运算符和表达式 115
5.5.1 算术运算符 115
5.5.2 比较运算符 115
5.5.3 逻辑运算符 116
5.5.4 字符串串联运算符 116
5.5.5 位运算符 116
5.5.6 运算符的优先级 117
5.5.7 什么是表达式 117
5.5.8 Transact-SQL表达式的分类 118
5.6 Transact-SQL利器——通配符 119
5.7 Transact-SQL语言中的注释 119
5.8 高手甜点 120
5.9 跟我学上机 120
第6章 Transact-SQL语句 121
6.1 数据定义语句 122
6.1.1 实例1——创建语句(CREATE) 122
6.1.2 实例2——删除语句(DROP) 125
6.1.3 实例3——修改语句(ALTER) 125
6.2 数据操作语句 127
6.2.1 实例4——插入数据(INSERT) 127
6.2.2 实例5——更改数据(UPDATE) 129
6.2.3 实例6——删除数据(DELETE) 131
6.2.4 实例7——查询数据(SELECT) 132
6.3 数据控制语句 140
6.3.1 实例8——给用户授予权限(GRANT) 140
6.3.2 实例9——拒绝权限操作(DENY) 141
6.3.3 实例10——收回权限操作(REVOKE) 141
6.4 其他基本语句 141
6.4.1 实例11——数据声明(DECLARE) 141
6.4.2 实例12——数据赋值(SET) 142
6.4.3 实例13——数据输出(PRINT) 143
6.5 流程控制语句 144
6.5.1 实例14——BEGIN...END语句 144
6.5.2 实例15——IF...ELSE语句 145
6.5.3 实例16——CASE语句 146
6.5.4 实例17——WHILE语句 148
6.5.5 实例18——GOTO语句 149
6.5.6 实例19——WAITFOR语句 150
6.5.7 实例20——RETURN语句 151
6.6 实例21——批处理语句 152
6.7 高手甜点 153
6.8 跟我学上机 153
第7章 视图操作 155
7.1 视图概述 156
7.1.1 视图的概念 156
7.1.2 视图分类 156
7.1.3 视图优点和作用 157
7.2 创建视图 157
7.2.1 实例1——使用视图设计器创建视图 158
7.2.2 实例2——使用Transact-SQL命令创建视图 159
7.3 实例3——修改视图 161
7.4 实例4——查看视图信息 162
7.5 使用视图修改数据 163
7.5.1 实例5——通过视图向基本表中插入数据 164
7.5.2 实例6——通过视图修改基本表中的数据 165
7.5.3 实例7——通过视图删除基本表中的数据 165
7.6 实例8——删除视图 166
7.7 高手甜点 167
7.8 跟我学上机 168
第8章 数据的插入、更新和删除 169
8.1 插入数据(INSERT) 170
8.1.1 实例1——插入单行数据 170
8.1.2 实例2——插入多行数据 172
8.2 修改数据(UPDATE) 174
8.2.1 实例3——修改单行数据 175
8.2.2 实例4——修改多行数据 175
8.3 删除数据(DELETE) 177
8.3.1 实例5——删除部分数据 177
8.3.2 实例6——删除表中所有数据 178
8.4 高手甜点 178
8.5 跟我学上机 179
第3篇 Transact-SQL查询语句 183
第9章 SQL Server函数 183
9.1 SQL Server函数简介 184
9.2 字符串函数 184
9.2.1 实例1 ——ASCII()函数 184
9.2.2 实例2——CHAR()函数 185
9.2.3 实例3——LEFT()函数 185
9.2.4 实例4——RIGHT()函数 186
9.2.5 实例5——LTRIM()函数 186
9.2.6 实例6——RTRIM()函数 187
9.2.7 实例7——STR()函数 187
9.2.8 实例8——字符串逆序的函数REVERSE(s) 188
9.2.9 实例9——计算字符串长度的函数LEN(str) 188
9.2.10 实例10——匹配子串开始位置的函数CHARINDEX() 189
9.2.11 实例11——SUBSTRING()函数 190
9.2.12 实例12——LOWER(函数 190
9.2.13 实例13——UPPER()函数 191
9.2.14 实例14——替换函数REPLACE(s,s1,s2) 191
9.3 数学函数 192
9.3.1 实例15——绝对值函数ABS(x)和返回圆周率的函数PI() 192
9.3.2 实例16——平方根函数SQRT(x) 193
9.3.3 实例17——获取随机数的函数RAND()和RAND(x) 193
9.3.4 实例18——四舍五入函数ROUND(x,y) 194
9.3.5 实例19——符号函数SIGN(x) 195
9.3.6 实例20——获取整数的函数CEILING(x)和FLOOR(x) 195
9.3.7 实例21——幂运算函数POWER(x,y)、 SQUARE(x)和EXP(x) 196
9.3.8 实例22——对数运算函数LOG(x)和LOG 10(x) 197
9.3.9 实例23——角度与弧度相互转换的数RADIANS(x)和DEGREES(x) 198
9.3.10 实例24——正弦函数SIN(x)和反正弦函数ASIN(x) 198
9.3.11 实例25——余弦函数COS(x)和反余弦函数ACOS(x) 199
9.3.12 实例26——正切函数TAN(x)、反正切函数ATAN(x)和余切函数COT(x) 199
9.4 实例27——数据类型转换函数 201
9.5 文本和图像函数 201
9.5.1 实例28——TEXTPTR()函数 201
9.5.2 实例29——TEXTVALID()函数 202
9.6 日期和时间函数 203
9.6.1 实例30——获取系统当前日期的函数GETDATE() 203
9.6.2 实例31——返回UTC日期的函数UTC_DATE() 203
9.6.3 实例32——获取天数的函数DAY(d) 204
9.6.4 实例33——获取月份的函数MONTH(d) 204
9.6.5 实例34——获取年份的函数YEAR(d) 205
9.6.6 实例35——获取日期中指定部分字符串值的函数DATENAME(dp,d) 205
9.6.7 实例36——获取日期中指定部分的整数值的函数DATEPART(dp,d) 206
9.6.8 实例37——计算日期和时间的函数DATEADD(dp,num,d) 207
9.7 系统函数 207
9.7.1 实例38——返回表中指定字段的长度值的函数COL_LENGTH() 207
9.7.2 实例39——返回表中指定字段的名称的函数COL_NAME() 208
9.7.3 实例40——返回数据表达式的数据的实际长度函数DATALENGTH() 208
9.7.4 实例41——返回数据库的编号的函数DB_ID() 209
9.7.5 实例42——返回数据库的名称的函数DB_NAME() 209
9.7.6 实例43——返回当前数据库默认的NULL值的函数GETANSINULL() 210
9.7.7 实例44——返回服务器端计算机的标识号的函数HOST_ID() 211
9.7.8 实例45——返回服务器端计算机的名称的函数HOST_NAME() 211
9.7.9 实例46——返回数据库对象的编号的函数OBJECT_ID() 212
9.7.10 实例47——返回用户的SID(安全标识号)的函数SUSER_SID() 212
9.7.11 实例48——返回用户的登录名的函数SUSER_SNAME() 213
9.7.12 实例49——返回数据库对象的名称的函数OBJECT_NAME() 213
9.7.13 实例50——返回数据库用户的标识号的函数USER_ID() 214
9.7.14 实例51——返回数据库用户名的函数USER_NAME() 215
9.8 高手甜点 215
9.9 跟我学上机 215
第10章 Transact-SQL查询 217
10.1 查询工具的使用 218
10.1.1 实例1——编辑查询 218
10.1.2 实例2——查询结果的显示方法 219
10.2 使用SELECT进行查询 220
10.2.1 实例3——使用星号和列名 221
10.2.2 实例4——使用DISTINCT取消重复 223
10.2.3 实例5——使用TOP返回前n行 223
10.2.4 实例6——修改列标题 224
10.2.5 实例7——在查询结果集中显示字符串 225
10.2.6 实例8——查询列表达式 226
10.3 使用WHERE进行条件查询 227
10.3.1 实例9——使用关系表达式查询 227
10.3.2 实例10——使用BETWEEN...AND表示范围 229
10.3.3 实例11——使用IN关键字 229
10.3.4 实例12——使用LIKE关键字 230
10.3.5 实例13——使用IS NULL查询空值 233
10.3.6 实例14——使用EXISTS关键字 235
10.3.7 实例15——使用ORDERBY排序 236
10.3.8 实例16——使用GROUPBY分组 238
10.3.9 实例17——使用HAVNG对分组结果过滤 239
10.3.10 实例18——使用COMPUTE子句对查询结果小计 240
10.3.11 实例19——使用COMPUTE BY子句分组小计 241
10.3.12 实例20——使用UNION合并查询结果集 241
10.4 使用聚合函数统计汇总 243
10.4.1 实例21——使用SUM()函数求列的和 244
10.4.2 实例22——使用AVG()函数求列平均值 245
10.4.3 实例23——使用MAX()函数求列最大值 246
10.4.4 实例24——使用MIN()函数求列最小值 247
10.4.5 实例25——使用COUNT()函数统计 248
10.5 嵌套查询 250
10.5.1 实例26——使用比较运算符 250
10.5.2 实例27——使用IN关键字 251
10.5.3 实例28——使用ANY、SOME和ALL关键字 252
10.5.4 实例29——使用EXISTS关键字 254
10.6 多表连接查询 256
10.6.1 实例30——相等连接 256
10.6.2 实例31——不等连接 257
10.6.3 实例32——带选择条件的连接 257
10.6.4 自连接 258
10.7 外连接 259
10.7.1 实例33——左外连接 259
10.7.2 实例34——右外连接 260
10.7.3 实例35——全外连接 260
10.8 使用排序函数 261
10.8.1 实例36——ROWNUMBER()函数 261
10.8.2 实例37——RANK(函数 262
10.8.3 实例38——DENSE_RANK()函数 263
10.8.4 实例39——NTILE()函数 263
10.9 实例40——动态查询 264
10.10 高手甜点 265
10.11 跟我学上机 265
第11章 存储过程和自定义函数 269
11.1 存储过程概述 270
11.2 存储过程分类 270
11.2.1 系统存储过程 271
11.2.2 自定义存储过程 271
11.2.3 扩展存储过程 271
11.3 创建存储过程 271
11.3.1 实例1——创建存储过程 272
11.3.2 实例2——存储过程调用 275
11.3.3 实例3——创建带输入参数的存储过程 276
11.3.4 实例4——创建带输出参数的存储过程 278
11.4 管理存储过程 280
11.4.1 实例5——修改存储过程 280
11.4.2 实例6——查看存储过程 281
11.4.3 实例7——重命名存储过程 283
11.4.4 实例8——删除存储过程 284
11.5 实例9——扩展存储过程 285
11.6 自定义函数 286
11.6.1 实例10——创建标量函数 287
11.6.2 实例11——创建表值函数 289
11.6.3 实例12——删除函数 290
11.7 高手甜点 291
11.8 跟我学上机 291
第12章 触发器 293
12.1 触发器概述 294
12.1.1 什么是触发器 294
12.1.2 触发器的作用 294
12.1.3 触发器的分类 295
12.2 创建DML触发器 295
12.2.1 实例1——INSERT触发器 295
12.2.2 实例2——DELETE触发器 298
12.2.3 实例3——UPDATE触发器 299
12.2.4 实例4——替代触发器 300
12.2.5 实例5——允许使用嵌套触发器 301
12.2.6 实例6——递归触发器 303
12.3 创建DDL触发器 304
12.3.1 创建DDL触发器的语法 304
12.3.2 实例7——创建服务器作用域的DDL触发器 304
12.4 管理触发器 306
12.4.1 实例8——查看触发器 306
12.4.2 实例9——修改触发器 308
12.4.3 实例10——删除触发器 308
12.4.4 实例11——启用和禁用触发器 309
12.5 高手甜点 310
12.6 跟我学上机 310
第13章 创建和使用索引 311
13.1 索引的含义和特点 312
13.2 索引的分类 312
13.3 索引的设计原则 313
13.4 创建索引 314
13.4.1 实例1——使用【对象资源管理器】面板创建索引 314
13.4.2 实例2——使用Transact-SQL语句创建索引 316
13.5 管理和维护索引 319
13.5.1 实例3——显示索引信息 319
13.5.2 实例4——重命名索引 322
13.5.3 实例5——删除索引 323
13.6 高手甜点 324
13.7 跟我学上机 324
第14章 游标 327
14.1 认识游标 328
14.1.1 游标的概念 328
14.1.2 游标的优点 328
14.1.3 游标的分类 328
14.2 游标的基本操作 330
14.2.1 实例1——声明游标 330
14.2.2 实例2——打开游标 331
14.2.3 实例3——读取游标中的数据 332
14.2.4 实例4——关闭游标 333
14.2.5 实例5——释放游标 334
14.3 游标的运用 334
14.3.1 实例6——使用游标变量 334
14.3.2 实例7——用游标为变量赋值 335
14.3.3 实例8——用ORDER BY子句改变游标中行的顺序 336
14.3.4 实例9——用游标修改数据 337
14.3.5 实例10——用游标删除数据 338
14.4 使用系统存储过程管理游标 339
14.4.1 实例11——sp_cursor_list存储过程 339
14.4.2 实例12——sp_describe_cursor存储过程 341
14.4.3 实例13——sp_describe_cursor_columns存储过程 343
14.4.4 实例14——sp_describe_cursor_tables存储过程 344
14.5 高手甜点 346
14.6 跟我学上机 346
第4篇 SQL Server数据库高级管理 349
第15章 规则、默认和完整性约束 349
15.1 规则和默认概述 350
15.2 规则的基本操作 350
15.2.1 实例1——创建规则 350
15.2.2 实例2——把自定义规则绑定到列 350
15.2.3 实例3——验证规则作用 351
15.2.4 实例4——取消规则绑定 352
15.2.5 实例5——删除规则 352
15.3 默认的基本操作 353
15.3.1 实例6——创建默认 353
15.3.2 实例7——把自定义默认绑定到列 354
15.3.3 实例8——验证默认作用 354
15.3.4 实例9——取消默认绑定 355
15.3.5 实例10——删除默认值 355
15.4 完整性约束 356
15.4.1 实例11——主键约束 357
15.4.2 实例12——外键约束 360
15.4.3 实例13——唯一性约束 363
15.4.4 实例14——CHECK约束 364
15.4.5 实例15——DEFAULT约束 364
15.4.6 实例16——NOT NULL约束 364
15.5 高手甜点 365
15.6 跟我学上机 365
第16章 事务和锁 367
16.1 事务管理 368
16.1.1 事务的原理 368
16.1.2 事务管理的常用语句 369
16.1.3 事务的隔离级别 369
16.1.4 实例1——事务的应用 370
16.2 锁 372
16.2.1 锁的内涵与作用 373
16.2.2 可锁定资源与锁的类型 374
16.2.3 死锁 375
16.2.4 实例2——锁的应用 376
16.3 高手甜点 379
16.4 跟我学上机 380
第17章 SQL Server 2012的安全机制 381
17.1 SQL Server安全性概述 382
17.1.1 SQL Server 2012的安全机制 382
17.1.2 基本安全术语 383
17.2 安全验证方式 384
17.2.1 Windows身份验证模式 385
17.2.2 混合模式 385
17.2.3 实例1——设置验证模式 385
17.3 创建登录账户 386
17.3.1 实例2——创建Windows登录账户 387
17.3.2 实例3——创建SQL Server登录账户 391
17.4 实例4——修改登录账户 394
17.5 实例5——删除登录账户 395
17.6 角色管理 396
17.6.1 固定服务器角色 396
17.6.2 数据库角色 398
17.6.3 实例6——自定义数据库角色 398
17.6.4 实例7——应用程序角色 402
17.6.5 实例8——将登录指派到角色 404
17.6.6 将角色指派到多个登录用户 405
17.7 权限管理 407
17.7.1 实例9——授予权限 408
17.7.2 实例10——拒绝权限 409
17.7.3 实例11——撤销权限 409
17.8 高手甜点 410
17.9 跟我学上机 410
第18章 数据库的备份与恢复 411
18.1 备份与恢复介绍 412
18.1.1 备份类型 412
18.1.2 恢复模式 413
18.1.3 实例1——配置恢复模式 413
18.2 备份设备 414
18.2.1 备份设备类型 414
18.2.2 实例2——创建备份设备 415
18.2.3 实例3——查看设备备份 416
18.2.4 实例4——删除备份设备 417
18.3 使用Transact-SQL语言备份数据库 417
18.3.1 实例5——完整备份与差异备份 417
18.3.2 实例6——文件和文件组备份 420
18.3.3 实例7——事务日志备份 422
18.4 在SQL Server Management Studio中还原数据库 423
18.4.1 还原数据库的方式 423
18.4.2 还原数据库前要注意的事项 423
18.4.3 实例8——还原数据库备份 425
18.4.4 实例9——还原文件和文件组备份 428
18.5 用Transact-SQL语言还原数据库 429
18.5.1 实例10——还原完整备份 429
18.5.2 实例11——还原差异备份 431
18.5.3 实例12——还原事务日志备份 432
18.5.4 实例13——还原文件和文件组备份 432
18.5.5 实例14——将数据库还原到某个时间点 433
18.5.6 实例15——将文件还原到新位置上 435
18.6 实例16——建立自动备份的维护计划 436
18.7 高手甜点 441
18.8 跟我学上机 441
第5篇 SQL Server应用案例设计 445
第19章 论坛管理系统数据库设计 445
19.1 系统概述 446
19.2 系统功能 446
19.3 数据库设计和实现 447
19.3.1 设计方案图表 447
19.3.2 设计表 449
19.3.3 设计索引 453
19.3.4 设计视图 454
19.4 本章小结 454
第20章 新闻发布系统数据库设计 455
20.1 系统概述 456
20.2 系统功能 456
20.3 数据库设计和实现 457
20.3.1 设计表 457
20.3.2 设计索引 462
20.3.3 设计视图 463
20.4 本章小结 464