本书以零基础讲解为宗旨,用实例引导读者深入学习,采取“SQL Server数据库基础→SQL Server数据库基本操作→Transact-SQL查询语句→SQL Server数据库不错管理→SQL Server 应用案例设计”的讲解模式,深入浅出地讲解SQL Server 2012的各项技术及实战技能。
本书靠前篇“SQL Server数据库基础”主要讲解初识SQL Server 2012和SQL Server 2012的安装与配置等;第2篇“SQL Server数据库基本操作”主要讲解操作数据库,数据表的操作,Transact-SQL语言基础, Transact-SQL语句,视图操作,数据的插入、更新和删除等;第3篇“Transact-SQnull
第1篇SQL Server数据库基础
第1章初识SQL Server 20123
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.2SQL语言6
1.2.3数据库访问技术7
1.3SQL Server 2012的优势8
1.4SQL Server 2012的新功能8
1.5SQL Server 2012的组成9
1.5.1SQL 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 201215
2.2.1SQL Server 2012 安装环境要求15
2.2.2实例1——安装SQL
Server 201215
2.2.3SQL Server 2012常见实用程序26
2.3SSMS基本操作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数据库基本操作
第3章操作数据库49
3.1数据库组成50
3.1.1数据文件50
3.1.2日志文件50
3.2系统数据库51
3.2.1master数据库51
3.2.2model数据库51
3.2.3msdb数据库51
3.2.4tempdb数据库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.1Transact-SQL概述104
5.1.1什么是Transact-SQL104
5.1.2Transact-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.8Transact-SQL表达式的分类118
5.6Transact-SQL利器——通配符119
5.7Transact-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查询语句
第9章SQL Server函数183
9.1SQL 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)和LOG10(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——使用ORDER BY排序236
10.3.8实例16——使用GROUP BY分组238
10.3.9实例17——使用HAVING对分组结果过滤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——ROW_NUMBER()函数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数据库高级管理
第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.1SQL Server安全性概述382
17.1.1SQL Server 2012的安全机制382
17.1.2基本安全术语383
17.2安全验证方式384
17.2.1Windows身份验证模式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应用案例设计
第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