第1章 配置与管理 SQL Server 1
1.1安装SQL Server 2
实例001安装SQL Server 2000个人版 2
实例002安装SQL Server 2000企业版 6
实例003安装SQL Server 2005企业版 10
实例004安装SQL Server 2008 企业版 16
实例005安装SQL Server 2012客户端 27
实例006升级SQL Server 39
实例007卸载SQL Server 41
1.2配置服务器 42
实例008创建服务器组 42
实例009注册服务器 43
实例010启动、暂停和停止SQL Server 2000 45
实例011启动SQL Server 2005/ 2008/2012 47
实例012配置网络连接 49
实例013配置链接服务器 50
实例014配置远程服务器 53
实例015测试服务器的配置 55
实例016影响SQL Server运行的设置 57
1.3配置客户端 58
实例017客户端Net-Library 58
实例018配置ODBC数据源 60
实例019测试客户端的配置 62
1.4通过Internet访问SQL Server 63
实例020建立访问SQL Server 2000的虚拟目录 63
实例021通过HTTP访问SQL Server 66
实例022通过Microsoft Proxy Server连接SQL Server 68
1.5管理SQL Server 68
实例023启动企业管理器 68
实例024使用查询分析器 69
实例025使用SQL事件探查器 72
实例026通过“服务”管理SQL Server 75
实例027使用SQL Server联机丛书 78
实例028启动SQL Server ManagementStudio 79
实例029使用SQL Server配置管理器 81
实例030使用Reporting Services配置管理器 82
实例 031应用数据库引擎优化顾问 83
1.6脚本与批处理 84
实例032将数据库生成脚本 84
实例033将指定表生成脚本 86
实例034执行脚本 87
实例035批处理 89
1.7维护SQL Server 91
实例036复制数据库 91
实例037分离数据库 94
实例038附加数据库 95
1.8导入、导出数据库 96
实例039导入SQL Server数据库 96
实例040导入Access数据 98
实例041导出数据到Access数据库 101
实例042导出数据到Excel 104
1.9数据备份与还原 105
实例043完全备份与还原 105
实例044差异备份与还原 108
实例045部分数据库还原 110
实例046备份和恢复系统数据库 112
1.10常见问题与解决 113
实例047连接失败 113
实例048用户登录失败 115
实例049解决SQL Server 2000无法安装 117
实例050解决SQL Server 2000卸载失败问题 118
实例051解决安装SQL Server补丁时出现的问题 119
第2章 SQL Server数据库安全性管理 121
2.1 SQL Server的身份验证模式 122
实例052 Windows验证模式 122
实例053混合验证模式 123
2.2管理SQL Server登录 124
实例054查看登录 124
实例055创建一个登录账号 125
实例056更改、删除登录账号 126
实例057禁止登录账号 127
实例058删除SQL Server登录 128
2.3服务器角色管理 129
实例059添加成员 129
实例060删除成员 130
2.4数据库角色管理 131
实例061创建数据库用户账户 131
实例062为数据库角色添加和删除成员 133
实例063创建和删除数据库角色 135
2.5权限管理 136
实例064为数据库角色设置权限 136
实例065设置数据库的访问权限 138
实例066设置对象的访问权限 139
2.6高级安全主题 140
实例067数据文件安全 141
实例068安全配置 142
实例069使用安全套接字层(SSL)加密 145
实例070如何防范SQL注入式攻击 150
第3章 使用管理器管理数据 151
3.1设计数据库 152
实例071创建数据库 152
实例072修改数据库 154
实例073删除数据库 155
3.2设计数据表 156
实例074创建数据表 156
实例075创建计算字段 160
实例076修改表 163
实例077删除表 164
3.3索引的建立与维护 164
实例078建立惟一索引 165
实例079定义主键索引 167
实例080删除索引 168
3.4关系的建立与维护 169
实例081建立一对一关系 169
实例082建立一对多关系 172
实例083删除关系 172
3.5维护数据表 173
实例084在表结构中添加新字段 173
实例085在表结构中删除字段 174
实例086修改表结构中字段的顺序 175
实例087重命名表 176
3.6浏览数据 177
实例088查看所有数据 177
实例089查看某一条记录 179
实例090浏览指定行数的数据 179
3.7数据的基本操作 180
实例091添加数据 180
实例092修改数据 182
实例093删除数据 183
第四章 Transact-SQL动态维护SQL Server 185
4.1设计数据库 186
实例094创建数据库 186
实例095修改数据库 188
实例096删除数据库 191
4.2维护数据表 192
实例097创建数据表 192
实例098定义计算字段 194
实例099修改表 196
实例100删除表 198
实例101修改表和字段的名称 199
4.3维护数据库 200
实例102分离数据库 201
实例103附加数据库 202
实例104附加单文件数据库 203
4.4数据库备份与恢复 204
实例105建立备份设备 204
实例 106删除备份设备 206
实例107备份数据库 207
实例108还原数据库 209
第5章 SQL基本查询 211
5.1 SELECT子句检索 212
实例109查询图书销售表中特定列数据信息 212
实例110查询商品编号、价格等多列信息 213
实例111查询商品销售表中全部商品信息 214
实例112将学生成绩表中英文列名设置为中文列名 215
实例113在商品销售表中添加商品利润的新列 217
5.2区间查询 218
实例114列出商品利润大于300的商品名称 218
实例115列出商品利润小于300的商品名称 219
实例116列出商品利润在200元~500元之间的商品名称 220
实例117查询图书价格介于68元~88元之间的图书名称 221
实例118利用模糊查询进行区间查询 223
5.3数据前若干名 225
实例119查询图书库存表中现存数量前5名的图书信息 225
实例120查询图书库存表中现存数量后5名的图书信息 227
实例121查询编程词典销售表中销售额前3名的数据 228
5.4查询结果排序 229
实例122将职工表中的信息按照奖金升序(或降序)输出 229
实例123查询员工表中按工资、奖金两次排序后的信息 230
实例124将在留学生表中查询的结果中按国籍降序排序 231
实例125在学生信息表中按学生的姓氏笔画重新排序 232
实例126根据工资与奖金之和生成的列对员工信息排序 233
5.5模式查询 234
实例127查询数字 234
实例128利用_通配符查数学成绩在80~89之间学生信息 236
实例129利用%通配符查询学生表中姓李的员工信息 237
实例130利用[]通配符查英语成绩95~99之间的学生信息 238
实例131利用[^]通配符查数学不在90~99之间的学生信息 239
实例132复杂的模式查询 240
5.6除去重复记录或空值 241
实例133除去图书销售表中相同的图书信息 241
实例134列出图书销售表中图书重印超过1次的图书 242
实例135查询学生信息表中备注信息不为空的学生信息 243
实例136列出学生信息表中备注信息为空的学生信息 244
5.7在查询中使用OR和AND运算符 245
实例137利用OR运算符进行区间定位查询 246
实例138利用AND运算符进行区间定位查询 247
实例139应用OR、AND执行多个搜索条件查询 248
5.8格式化字段和结果集 250
实例140统一字段格式进行查询 250
实例141将客户信息表中客户姓名字段中的空格去除 252
实例142对工资数据表中查询出的工资进行四舍五入 253
第6章 字符串/数字/日期时间查询 256
6.1字符串查询 257
实例143在职工表中去除编号与姓名字符串中尾部的空格 257
实例144 在学生信息表中截取学生的姓和名字信息 258
实例145连接图书表中的书名与类别生成图书说明信息 259
实例146在报名表中将“200900”插入到原用户报名编号中 260
实例147获取字符在字符串中出现的次数 261
实例148将外籍留学生表中的学生姓大写名小写 262
6.2截取字符串 263
实例149从字符串中删除元音字符 263
实例150从字符串中分离字符和数字 264
实例151去除字符串中非字母和数字的字符 265
6.3比较字符串 266
实例152比较留学生信息中学生的姓是否相同 266
实例153在留学生信息中比较查询留学生的名是否相似 267
实例154在外籍留学生信息中英文姓名大小写敏感查询 268
6.4格式化字符串 269
实例155将电话号码中的“-”去掉,但保留分机号前的“-” 270
实例156提取电话号码中的区号和号码 271
实例157格式化字符串为日期格式 272
6.5数学函数 273
实例158使用SQRT函数查询公式表中字段A的平方根 273
实例159使用EXP函数查询数学公式表中e的A次幂 275
实例160利用三角函数查询公式表中字段A的余弦、正弦 276
6.6时间段查询 277
实例161查询出版日期在10月份的图书名称及出版日期 278
实例162查询今天是周几 279
实例163查询学生信息表中学生间入学时间间隔多少天 280
实例164查询某笔记本的两次进货日期相差的月份数 282
实例165计算员工全年工作日 283
实例166查询当前图书出版日期与下一次出版日期间隔 285
6.7获取日期 286
实例167将图书出版日期中的年月日以列的形式显示 286
实例168查询当前日期加3个月以后的日期 287
实例169分别获取某月份、本周和当前季度的第一天 289
实例170分别获取上个月、去年和本年的最后一天 291
6.8格式化日期 293
实例171把长日期格式数据转化为短日期格式数据 293
实例172显示长日期格式数据中的小时、分、秒 294
实例173将日期格式中的“.”转化为“-” 296
第7章 聚合数据查询 298
7.1聚合函数 299
实例174利用SUM函数对职员工资进行汇总 299
实例175利用AVG函数求学生各学科的平均成绩 300
实例176利用MIN函数求销售额和利润的最低值 302
实例177利用MAX函数求员工月销售业绩的最高值 304
实例178利用COUNT函数求日销售额大于某值的商品数 306
7.2分组统计 309
实例179统计学生的总成绩并排序 309
实例180使用COALESCE函数将NULL转换成0后,计算员工的平均工资 311
实例181使用ALL查询书名和出版社的全部分组 312
实例182使用ROLLUP按所属类别和等级统计商品的总销售额 314
实例183使用CUBE生成带有小计和总计的交叉表 316
实例184使用HAVING子句返回图书分组后汇总销售额大于某值的数据 319
实例185使用GROUPING SETS组合多个分组结果集 321
实例186使用OVER子句和SUM函数根据订单编号分区聚合数据 322
实例187使用COMPUTE返回商品销售表中的明细及汇总数据 324
实例188使用COMPUTE BY返回部门分组信息及对应汇总数据 326
第8章 子查询 329
8.1简单子查询 330
实例189子查询的查询结果作为SELECT子句的列 330
实例190查询学生成绩大于平均成绩的记录 331
实例191子查询作为FROM子句的查询依据 332
8.2多行子查询 333
实例192查询外语成绩大于某值的学生明细信息(IN) 333
实例193返回月销售不在同类图书前100名的图书信息(NOT IN) 335
实例194显示一班学生总成绩大于二班所有学生总成绩的学生信息(ALL) 336
实例195查询商品三月销售额大于当月同类平均销售额的商品信息(ANY/SOME) 337
8.3相关子查询 339
实例196求出部门内职员工资最高的职员信息(IN) 339
实例197查询图书销量大于某值的图书信息(EXISTS) 341
实例198返回商品采购量不小于某值的商品销售信息(NOT EXISTS) 343
实例199在HAVING子句使用子查询过滤一组数据 345
8.4嵌套子查询 346
实例200查询指定学历的部门经理当月工资情况 346
实例201返回学科成绩小于指定的多个成绩任意一个的学生信息 347
8.5子查询更新数据 349
实例202在UPDATE语句中使用子查询更新数据 349
实例203在INSERT INTO语句中使用子查询添加数据 350
实例204在DELETE语句中使用子查询删除数据 351
第9章 联接/组合查询 353
9.1多表联接 354
实例205使用CROSS JOIN实现两表的笛卡尔乘积查询 354
实例206在WHERE子句中设置联接条件 355
9.2内联接 356
实例207返回职员指定月份的工资及其所在部门信息 356
实例208使用INNER JOIN实现自身联接 358
实例209多表联接的查询 359
9.3外联接 361
实例210使用LEFT OUTER JOIN返回以左表为主的所有匹配数据 361
实例211使用RIGHT OUTER JOIN返回以右表为主的所有匹配数据 363
实例212使用FULL JOIN返回两表相匹配的所有数据 364
9.4组合查询 365
实例213使用UNION组合多个结果集 365
实例214对组合查询结果进行排序 367
实例215 使用INTERSECT运算符求两个结果集的交集 369
实例216使用EXCEPT运算符求两个结果集的差集 370
第10章 高级查询 372
10.1利用CASE语句进行查询 373
实例217利用CASE语句返回备注信息 373
实例218利用CASE语句更新列值 375
10.2交叉表查询 376
实例219使用CASE语句生成静态交叉表 376
实例 220行列转换 378
实例221 PIVOT交叉表统计商品各月份的销售数量 379
实例222 UNPIVOT反转交叉表 381
实例223调用存储过程生成动态交叉表 383
10.3递归查询 385
实例224 CTE递归生成连续数 385
第11章 分布式查询 388
11.1链接服务器 389
实例225用“企业管理器”建立链接 389
实例226创建、查看、删除链接 391
实例227建立、查看、删除映射 393
实例228用T_SQL设置链接选项 395
实例229创建关联Access数据库的链接并查询其数据 396
实例230创建到电子表格的链接 398
11.2分布式查询 399
实例231简单的分布式查询 399
实例232使用OpenDatasource进行分布式查询图书信息处理 401
实例233用OpenQuery函数进行分布式查询客户信息 402
实例234使用OpenRowSet进行分布式查询客户表中信息 405
11.3分布式事务处理 406
实例235创建分布式事务 406
第12章 更新SQL Server数据 408
12.1添加数据 409
实例236使用INSERT语句添加单条数据 409
实例237使用UNION ALL运算符批量添加数据 410
实例238 INSERT插入多行数据 411
实例239创建表并添加数据 412
12.2修改数据 413
实例240使用UPDATE语句修改单条数据 414
实例241批量修改数据 415
实例242修改指定日期字段内的数据 415
12.3删除数据 416
实例243删除单条记录 416
实例244删除指定字段数据为空的记录 417
实例245使用OUTPUT子句删除数据并返回结果 418
12.4使用事务 420
实例246使用事务维护数据一致性 420
第13章 流程控制与功能性语句 422
13.1流程控制语句 423
实例247 BEGIN...END控制批处理 423
实例248通过IF语句给定执行条件 424
实例249 IF EXISTS语句检测数据是否存在 425
实例250 WHILE执行循环语句块 426
实例251 CASE分支判断语句 427
实例252 RETURE无条件返回语句 428
实例253 WAITFOR延期执行语句 429
实例254 GOTO 跳转语句 430
实例255 TRY CATCH异常处理语句 431
13.2功能性语句 432
实例256 PRINT输出语句 432
实例257 RAISERROR返回错误信息 433
实例258 SET选项设置语句 435
第14章 索引 437
14.1创建索引 438
实例259创建惟一聚集索引快速定位记录位置 438
实例260使用Transact-SQL命令创建索引 440
实例261使用UNIQUE关键字创建惟一索引 442
实例262使用CLUSTERDE关键字创建簇索引 443
实例263索引的销毁 444
实例264创建多字段非聚集索引检索数据 445
实例265使用索引视图查询数据 446
14.2维护索引 448
实例266修改索引 448
实例267重建索引 449
实例268删除索引 450
14.3全文索引 452
实例269启用全文检索服务 452
实例270定义全文索引 453
实例271使用Transact-SQL创建全文索引 456
实例272使用Transact-SQL维护全文索引 461
实例273检索词或短语 462
实例274模糊查询 463
实例275对格式化的二进制数据进行全文检索 463
第15章 视图 466
15.1创建和使用视图 467
实例276使用企业管理器创建视图 467
实例277使用CREATE VIEW创建视图显示客户信息 469
实例278使用创建视图向导创建视图 471
实例279使用视图简化复杂的连接 472
实例280创建基于视图的视图 474
实例281使用视图生成计算列 475
实例282使用视图重新格式化检索出的数据 476
实例283使用视图添加表数据 477
实例284通过视图修改表数据 479
实例285通过视图删除表数据 480
实例286使用视图过滤不想要的数据 482
15.2管理视图 483
实例287使用sp_helptext获取视图信息 483
实例288如何修改视图 484
实例289如何删除视图 486
15.3使用视图加强数据安全 487
实例290对视图定义文本进行加密 487
实例291通过视图对不同用户设置权限 488
第16章 存储过程 490
16.1创建和使用存储过程 491
实例292使用Transact-SQL语句创建存储过程并执行 491
实例293在存储过程中使用RETURN语句返回值 493
实例294使用带参数的存储过程以实现动态检索 495
实例295执行带回传参数的存储过程 496
实例296在存储过程中使用事务 497
实例297创建并添加扩展存储过程 499
实例298创建加密存储过程 500
16.2管理存储过程 501
实例299查看存储过程相关信息 501
实例300修改存储过程 503
实例301删除存储过程 505
实例302存储过程的重新编译 506
实例303重命名存储过程 508
16.3应用存储过程 509
实例304使用存储过程调用Com组件(sp_OACreate) 509
实例305监控存储过程 511
实例306自动执行存储过程 513
实例307执行远程存储过程 514
第17章 触发器 518
17.1创建触发器 519
实例308使用企业管理器创建触发器 519
实例309用INSERT触发器向员工表中添加新员工信息 520
实例310用UPDATE触发器更新员工表中员工基本工资 523
实例311应用DELETE触发器删除离职员工信息 524
实例312创建具有触发条件的触发器 526
实例313创建INSTEAD OF触发器 527
实例314创建递归触发器,实现只允许一次删除一条记录 529
17.2管理触发器 531
实例315触发器的嵌套 531
实例316 Rollback触发器 533
实例317查看触发器数据 534
实例318修改触发器 536
实例319删除触发器 539
实例320重命名触发器 540
17.3触发器的应用 540
实例321应用触发器向员工表添加数据并初使化工资表 541
实例322应用触发器修改员工信息表中离职员工信息 543
实例323应用触发器删除相关联的两表间的数据 544
第18章 游标的使用 547
18.1游标的基本操作 548
实例324声明游标并分别创建一个标准、只读和更新游标 548
实例325打开游标并检索图书信息表中指定条件的数据 550
实例326读取游标中存储的前两条职工表中的员工记录 551
实例327关闭释放游标 553
实例328 利用sp_cursor_list查看服务及游标属性 555
实例329利用sp_describe_cursor查看游标的全局特性 556
18.2游标的高级操作 558
实例330利用游标在商品销售表中返回指定商品行数据 558
实例331用ORDER BY子句改变游标中行的顺序 560
实例332使用FETCH将值存入变量 562
实例333利用游标设计带滚动的商品销售数据查询 563
实例334应用游标的嵌套查询两个员工表间员工信息 565
18.3通过游标维护数据 567
实例335使用游标根据商品单价和销售量计算出销售额 567
实例336基于游标定位修改员工信息表中员工的姓名 568
实例337只允许用户更新游标中指定列中的值 569
实例338使用游标定位删除员工表中指定条件的员工 571
实例339用索引改变游标中员工编号的行顺序 572
实例340应用参数化游标更改员工部门信息 573
第19章 SQL Server高级应用 575
19.1 XML与SQL Server 576
实例341用FOR XML RAW读取图书表中所有图书信息 576
实例342 FOR XML AUTO将图书表中数据作为嵌套输出 578
实例343读取图书销售表中字段均作为节点元素输出 580
实例344将存储在XML中的图书信息插入到数据表中 581
实例345创建、修改和删除XML索引 583
实例346查询存储图书信息的XML节点(query方法) 585
实例347获取XML节点或元素值 (value方法) 586
实例348编辑存储图书信息的XML节点(modify方法) 587
实例349将XML节点转变为对应字段 (nodes方法) 591
19.2监视与优化 592
实例350使用“事件查看器”监视事件日志中记录的事件 592
实例351使用SQL Server Managesment Studio的查询编辑器 594
实例352使用SQL Server Profiler监视数据库引擎等性能 595
实例353使用“数据库引擎优化顾问”优化 599
实例354使用dta实用工具优化数据库工作负荷 602
19.3编程与服务 603
实例355创建SQL Server 2005对象 603
实例356使用SMO管理对象模型开发数据库 609
实例357创建报表连接到数据源并进行布局设计 614
实例358使用Magagement Studio管理报表 619
实例359创建分析服务项目并在项目中定义数据源 626
实例360创建目标邮件方案挖掘对邮件信息逻辑分组 632
实例361在服务器之间复制数据以提高伸缩性和可用性 639
实例362将Microsoft Excel 2007数据导入到SQL Server 644
实例363在Exce12007中引用SQLServer数据生成报表 649
第20章 Visual Basic与SQL Server 653
20.1连接数据库 654
实例364 ADO连接数据库 654
实例365 DAO连接数据库 655
实例366 RDO连接数据库 656
实例367 ODBC连接数据库 657
20.2浏览数据库 659
实例368通过文本框浏览数据库 659
实例369通过表格单页浏览数据库 661
实例370使用表格多页浏览数据库 662
20.3数据查询 663
实例371通用查询 663
实例372模糊查询 664
实例373逻辑查询 666
实例374空数据查询 667
实例375时间段查询 668
实例376多表查询 670
20.4编辑数据表 671
实例377录入数据 671
实例378批量修改数据 673
实例379批量删除数据 675
20.5存储过程、视图和触发器 676
实例380视图的应用 676
实例381触发器的应用 678
实例382存储过程的应用 680
20.6备份、恢复数据 681
实例383附加数据库 681
实例384备份数据库 683
实例385恢复数据库 684
20.7使用代码维护数据库 685
实例386新建数据库和数据表 685
实例387提取数据表结构 688
实例388修改数据表结构 690
实例389删除无用的数据表 691
第21章 Delphi与SQL Server 693
21.1连接数据库 694
实例390使用ADO连接SQL Server2000数据库 694
实例391如何使用ODBC连接SQLServer数据库 696
21.2浏览数据库 698
实例392通过文本框浏览数据库 698
实例393通过DBGrid表格浏览数据 700
21.3数据查询 701
实例394通用查询 702
实例395模糊查询 703
实例396逻辑查询 705
实例397空数据查询 706
实例398时间段查询 707
实例399多表查询 709
21.4编辑数据表 710
实例400录入数据 710
实例401批量修改数据 713
实例402批量删除数据 715
21.5存储过程、视图和触发器 716
实例403存储过程的应用 716
实例404视图的应用 719
实例405触发器的应用 721
21.6备份、恢复数据 723
实例406附加数据库 723
实例407备份数据库 724
实例408恢复数据库 726
21.7使用代码维护数据库 728
实例409新建数据库和数据表 728
实例410修改数据表结构 732
实例411删除无用数据表 735