第1章 初识SQL Server 2012 1
1.1 SQL Server 2012的优势 1
1.2 SQL Server 2012的新功能 1
1.3 SQL Server 2012的组成 2
1.3.1 SQL Server 2012数据库引擎 2
1.3.2分析服务(Analysis Services) 2
1.3.3集成服务(Integration Services) 3
1.3.4报表服务(Reporting Services) 3
1.4如何选择SQL Server 2012的版本 3
1.5安装SQL Server 2012 4
1.5.1 SQL Server 2012安装环境需求 4
1.5.2安装SQL Server 2012 5
1.5.3 SQL Server 2012常见实用程序 16
1.6 SSMS基本操作 17
1.6.1 SSMS的启动与连接 18
1.6.2使用模板资源管理器、解决方案与项目脚本 20
1.6.3配置SQL Server 2012服务器的属性 22
1.6.4查询编辑器 32
1.7本章小结 36
1.8经典习题 36
第2章 数据库的操作 37
2.1数据库组成 37
2.1.1数据文件 37
2.1.2日志文件 38
2.2系统数据库 38
2.2.1 master数据库 38
2.2.2 model数据库 38
2.2.3 msdb数据库 38
2.2.4 tempdb数据库 39
2.3创建数据库 39
2.3.1使用对象资源管理器创建数据库 39
2.3.2使用Transact-SQL创建数据库 43
2.4管理数据库 47
2.4.1修改数据库 47
2.4.2修改数据库容量 48
2.4.3增加数据库容量 50
2.4.4缩减数据库容量 52
2.4.5查看数据库信息 53
2.4.6数据库更名 57
2.4.7删除数据库 58
2.5疑难解惑 60
2.6经典习题 60
第3章 数据表的操作 61
3.1 SQL Server 2012数据库对象 61
3.2创建数据表 62
3.2.1数据类型 63
3.2.2使用对象资源管理器创建表 73
3.2.3使用Transact-SQL创建表 75
3.3管理数据表 76
3.3.1修改表字段 77
3.3.2修改表约束 82
3.3.3查看表中有关信息 88
3.3.4删除表 91
3.4疑难解惑 92
3.5经典习题 92
第4章 Transact-SQL语言基础 94
4.1 Transact-SQL概述 94
4.1.1什么是Transact-SQL 94
4.1.2 T-SQL语法的约定 95
4.2如何给标识符起名 96
4.3常量 98
4.3.1数字常量 98
4.3.2字符串常量 98
4.3.3日期和时间常量 99
4.3.4符号常量 99
4.4变量 100
4.4.1全局变量 100
4.4.2局部变量 102
4.4.3批处理和脚本 103
4.5运算符和表达式 105
4.5.1算术运算符 105
4.5.2比较运算符 105
4.5.3逻辑运算符 106
4.5.4连接运算符 106
4.5.5按位运算符 106
4.5.6运算符的优先级 107
4.5.7什么是表达式 107
4.5.8 Transact-SQL表达式的分类 107
4.6 Transact-SQL利器——通配符 108
4.7 Transact-SQL语言中的注释 109
4.8疑难解惑 109
4.9经典习题 110
第5章 轻松掌握Transact-SQL语句 111
5.1数据定义语句(DDL) 111
5.1.1 CREATE的应用 111
5.1.2 DROP的功能 114
5.1.3 ALTER的功能 115
5.2数据操作语句(DML) 116
5.2.1数据的插入——INSERT 116
5.2.2数据的更改——UPDATE 119
5.2.3数据的删除——DELETE 120
5.2.4数据的查询——SELECT 122
5.3数据控制语句(DCL) 130
5.3.1授予权限操作——GRANT 130
5.3.2拒绝权限操作——DENY 130
5.3.3收回权限操作——REVOKE 130
5.4其他基本语句 131
5.4.1数据声明——DECLARE 131
5.4.2数据赋值——SET 132
5.4.3数据输出——PRINT 133
5.5流程控制语句 133
5.5.1 BEGIN…END语句 134
5.5.2 IF…ELSE语句 135
5.5.3 CASE语句 135
5.5.4 WHILE语句 137
5.5.5 GOTO语句 139
5.5.6 WAITFOR语句 139
5.5.7 RETURN语句 140
5.6批处理语句 141
5.7疑难解惑 142
5.8经典习题 142
第6章 认识函数 143
6.1 SQL Server 2012函数简介 143
6.2字符串函数 143
6.2.1 ASCII()函数 143
6.2.2 CHAR()函数 144
6.2.3 LEFT()函数 144
6.2.4 RIGHT()函数 145
6.2.5 LTRIM()函数 145
6.2.6 RTRIM()函数 146
6.2.7 STR()函数 146
6.2.8字符串逆序的函数REVERSE(s) 147
6.2.9计算字符串长度的函数LEN(str) 147
6.2.10匹配子串开始位置的函数 148
6.2.11 SUBSTRING()函数 148
6.2.12 LOWER()函数 149
6.2.13 UPPER()函数 150
6.2.14替换函数REPLACE(s,s1,s2) 150
6.3数学函数 151
6.3.1绝对值函数ABS(x)和返回圆周率的函数 151
6.3.2平方根函数SQRT(x) 151
6.3.3获取随机数的函数RAND()和RAND(x) 152
6.3.4四舍五入函数ROUND(x,y) 153
6.3.5符号函数SIGN(x) 154
6.3.6获取整数的函数CEILING(x)和FLOOR(x) 154
6.3.7幂运算函数POWER(x,y)、SQUARE(x)和EXP(x) 155
6.3.8对数运算函数LOG(x)和LOG 10(x) 157
6.3.9角度与弧度相互转换的函数RADIANS(x)和DEGREES(x) 158
6.3.10正弦函数SIN(x)和反正弦函数ASIN(x) 158
6.3.11余弦函数COS(x)和反余弦函数ACOS(x) 159
6.3.12正切函数、反正切函数和余切函数 160
6.4数据类型转换函数 162
6.5文本和图像函数 163
6.5.1 TEXTPTR函数 163
6.5.2 TEXTVALID函数 163
6.6日期和时间函数 164
6.6.1获取系统当前日期的函数GETDATE() 164
6.6.2返回UTC日期的函数UTCDATE() 165
6.6.3获取天数的函数DAY(d) 165
6.6.4获取月份的函数MONTH(d) 166
6.6.5获取年份的函数YEAR(d) 166
6.6.6获取日期中指定部分字符串值的函数DATENAME(dp,d) 166
6.6.7获取日期中指定部分的整数值的函数DATEPART(dp,d) 167
6.6.8计算日期和时间的函数DATEADD(dp,num,d) 168
6.7系统函数 168
6.7.1返回表中指定字段的长度值 168
6.7.2返回表中指定字段的名称 169
6.7.3返回数据表达式的数据的实际长度函数 170
6.7.4返回数据库的编号 170
6.7.5返回数据库的名称 171
6.7.6返回当前数据库默认的NULL值 171
6.7.7返回服务器端计算机的标识号 172
6.7.8返回服务器端计算机的名称 172
6.7.9返回数据库对象的编号 173
6.7.10返回用户的SID(安全标识号) 173
6.7.11返回用户的登录名 174
6.7.12返回数据库对象的名称 174
6.7.13返回数据库用户的标识号 175
6.7.14返回数据库用户名 176
6.8疑难解惑 176
6.9经典习题 176
第7章 Transact-SQL查询 178
7.1查询工具的使用 178
7.1.1编辑查询 178
7.1.2查询结果的显示方法 179
7.2使用SELECT进行查询 180
7.2.1使用星号和列名 181
7.2.2使用DISTINCT取消重复 183
7.2.3使用TOP返回前n行 184
7.2.4修改列标题 185
7.2.5在查询结果集中显示字符串 186
7.2.6查询的列为表达式 187
7.3使用WHERE子句进行条件查询 188
7.3.1使用关系表达式查询 188
7.3.2使用BETWEEN AND表示范围 190
7.3.3使用IN关键字 191
7.3.4使用LIKE关键字 192
7.3.5使用IS NULL查询空值 196
7.3.6使用EXISTS关键字 197
7.3.7使用ORDER BY排序 199
7.3.8使用GROUP BY分组 201
7.3.9使用HAVING对分组结果过滤 203
7.3.10使用COMPUTE子句对查询结果小计 203
7.3.11使用COMPUTE BY子句分组小计 204
7.3.12使用UNION合并查询结果集 205
7.4使用聚合函数统计汇总 206
7.4.1使用SUM()求列的和 207
7.4.2使用AVG()求列平均值 208
7.4.3使用MAX()求列最大值 209
7.4.4使用MIN()求列最小值 211
7.4.5使用COUNT()统计 212
7.5嵌套查询 214
7.5.1使用比较运算符 214
7.5.2使用IN关键字 215
7.5.3使用ANY、SOME和ALL关键字 217
7.5.4使用EXISTS关键字 218
7.6多表连接查询 220
7.6.1相等连接 220
7.6.2不等连接 221
7.6.3带选择条件的连接 221
7.6.4自连接 222
7.7外连接 223
7.7.1左外连接 223
7.7.2右外连接 224
7.7.3全外连接 224
7.8使用排序函数 225
7.9动态查询 228
7.10疑难解惑 229
7.11经典习题 229
第8章 数据的更新 231
8.1插入数据——INSERT 231
8.1.1插入单行数据 232
8.1.2插入多行数据 234
8.2修改数据——UPDATE 236
8.2.1修改单行数据 237
8.2.2修改多行数据 237
8.3删除数据——DELETE 239
8.3.1删除部分数据 239
8.3.2删除表中所有数据 240
8.4疑难解惑 240
8.5经典习题 241
第9章 规则、默认和完整性约束 242
9.1规则和默认概述 242
9.2规则的基本操作 242
9.2.1创建规则 242
9.2.2把自定义规则绑定到列 243
9.2.3验证规则作用 243
9.2.4取消规则绑定 244
9.2.5删除规则 244
9.3默认的基本操作 245
9.3.1创建默认 246
9.3.2把自定义默认绑定到列 246
9.3.3验证默认作用 246
9.3.4取消默认绑定 247
9.3.5删除默认值 248
9.4完整性约束 248
9.4.1主键约束 249
9.4.2外键约束 252
9.4.3唯一性约束 255
9.4.4 CHECK约束 256
9.4.5 DEFAULT约束 256
9.4.6 NOT NULL约束 256
9.5疑难解惑 257
9.6经典习题 257
第10章 创建和使用索引 258
10.1索引的含义和特点 258
10.2索引的分类 258
10.3索引的设计原则 260
10.4创建索引 260
10.4.1使用对象资源管理器创建索引 260
10.4.2使用T-SQL语句创建索引 263
10.5管理和维护索引 265
10.5.1显示索引信息 266
10.5.2重命名索引 269
10.5.3删除索引 270
10.6疑难解惑 271
10.7经典习题 271
第11章 事务和锁 273
11.1事务管理 273
11.1.1事务的原理 273
11.1.2事务管理的常用语句 274
11.1.3事务的隔离级别 275
11.1.4事务的应用案例 276
11.2锁 278
11.2.1锁的内涵与作用 278
11.2.2可锁定资源与锁的类型 279
11.2.3死锁 280
11.2.4锁的应用案例 281
11.3疑难解惑 285
11.4经典习题 286
第12章 游标 287
12.1认识游标 287
12.1.1游标的概念 287
12.1.2游标的优点 287
12.1.3游标的分类 287
12.2游标的基本操作 289
12.2.1声明游标 289
12.2.2打开游标 290
12.2.3读取游标中的数据 291
12.2.4关闭游标 292
12.2.5释放游标 293
12.3游标的运用 293
12.3.1使用游标变量 293
12.3.2用游标为变量赋值 294
12.3.3用ORDER BY子句改变游标中行的顺序 295
12.3.4用游标修改数据 296
12.3.5用游标删除数据 298
12.4使用系统存储过程管理游标 298
12.4.1 sp_cursor_list存储过程 299
12.4.2 sp_describe_cursor存储过程 300
12.4.3 sp_describe_cursor_columns存储过程 302
12.4.4 sp_describe_cursor_tables存储过程 303
12.5疑难解惑 304
12.6经典习题 305
第13章 存储过程和自定义函数 306
13.1存储过程概述 306
13.2存储过程分类 307
13.2.1系统存储过程 307
13.2.2自定义存储过程 307
13.2.3扩展存储过程 307
13.3创建存储过程 308
13.3.1如何创建存储过程 308
13.3.2调用存储过程 311
13.3.3创建带输入参数的存储过程 312
13.3.4创建带输出参数的存储过程 315
13.4管理存储过程 316
13.4.1修改存储过程 316
13.4.2查看存储过程信息 317
13.4.3重命名存储过程 319
13.4.4删除存储过程 320
13.5扩展存储过程 322
13.6自定义函数 323
13.6.1创建标量函数 324
13.6.2创建表值函数 326
13.6.3删除函数 327
13.7疑难解惑 329
13.8经典习题 329
第14章 视图操作 330
14.1视图概述 330
14.1.1视图的概念 330
14.1.2视图的分类 331
14.1.3视图的优点和作用 331
14.2创建视图 332
14.2.1使用视图设计器创建视图 332
14.2.2使用T-SQL命令创建视图 334
14.3修改视图 336
14.4查看视图信息 337
14.5使用视图修改数据 339
14.5.1通过视图向基本表中插入数据 339
14.5.2通过视图修改基本表中的数据 340
14.5.3通过视图删除基本表中的数据 341
14.6删除视图 342
14.7疑难解惑 343
14.8经典习题 344
第15章 触发器 345
15.1触发器概述 345
15.1.1什么是触发器 345
15.1.2触发器作用 345
15.1.3触发器分类 346
15.2创建DML触发器 347
15.2.1 INSERT触发器 347
15.2.2 DELETE触发器 350
15.2.3 UPDATE触发器 351
15.2.4替代触发器 352
15.2.5允许使用嵌套触发器 353
15.2.6递归触发器 355
15.3创建DDL触发器 357
15.3.1创建DDL触发器的语法 357
15.3.2创建服务器作用域的DDL触发器 357
15.4管理触发器 359
15.4.1查看触发器 359
15.4.2修改触发器 361
15.4.3删除触发器 361
15.4.4启用和禁用触发器 362
15.5疑难解惑 363
15.6经典习题 363
第16章 SQL Server 2012的安全机制 364
16.1 SQL Server 2012安全性概述 364
16.1.1 SQL Server 2012的安全机制简介 364
16.1.2基本安全术语 365
16.2安全验证方式 367
16.2.1 Windows身份验证模式 367
16.2.2混合模式 367
16.2.3设置验证模式 367
16.3 SQL Server 2012登录名 368
16.3.1创建登录账户 369
16.3.2修改登录账户 378
16.3.3删除登录账户 380
16.4 SQL Server 2012的角色与权限 381
16.4.1固定服务器角色 381
16.4.2数据库角色 382
16.4.3自定义数据库角色 382
16.4.4应用程序角色 388
16.4.5将登录指派到角色 390
16.4.6将角色指派到多个登录账户 392
16.4.7权限管理 395
16.5疑难解惑 397
16.6经典习题 397
第17章 数据库的备份与恢复 398
17.1备份与恢复介绍 398
17.1.1备份类型 398
17.1.2恢复模式 399
17.1.3配置恢复模式 400
17.2备份设备 401
17.2.1备份设备类型 401
17.2.2创建备份设备 402
17.2.3查看备份设备 403
17.2.4删除备份设备 404
17.3使用T-SQL语言备份数据库 404
17.3.1完整备份与差异备份 404
17.3.2文件和文件组备份 407
17.3.3事务日志备份 409
17.4在SQL Server Management Studio中还原数据库 410
17.4.1还原数据库的方式 410
17.4.2还原数据库前要注意的事项 410
17.4.3还原数据库备份 412
17.4.4还原文件和文件组备份 415
17.5用T-SQL语言还原数据库 416
17.5.1完整备份还原 416
17.5.2差异备份还原 418
17.5.3事务日志备份还原 419
17.5.4文件和文件组备份还原 419
17.5.5将数据库还原到某个时间点 420
17.5.6将文件还原到新位置上 422
17.6建立自动备份的维护计划 423
17.7疑难解惑 428
17.8经典习题 428