3.6小结 3 1
目 录 1
附录A复习题及其答案 31 1
7.4.1 捆绑规则和缺省到用户定义数据类型 11 1
7.4规则和缺省与用户定义数据类型的捆绑 1 1 1
6.5.1 索引简介 7 1
A.1创建规则、缺省和唯一索引 31 1
1.1 客户/服务器体系结构基本特征 1
第一章Sybase客户/服务器体系结构概貌 1
1.2客户节点和服务器节点 2
1.3.2主要优点 3
1.3 Sybase客户/服务器数据库环境 3
1.3.1基本特点 3
1.4 Sybase的Open Client和Open Server 4
1.4.1 Open Client 4
1.4.2 Open Server 5
1.5 Sybase客户/服务器产品系列 5
1.5.1两层配置模式的客户/服务器体系结构 5
1.5.2能满足企业级分布计算要求的三层配置模式 6
1.5.3 Sybase产品系列 6
1.6关于Sybase Adaptive Server 8
1.6.1 Adaptive Server组件 9
1.6.2 SQLServer兼容性 10
第二章SQL Server数据库服务器及isql客户软件的基本功能简介 12
2.1 SQLServe的功能和特点 12
A.2使用T-SQL的SQLServer程序设计 3 12
表J-64 8002~801 1,远程过程调用消息 5 12
2.2 SQLServer支持多数据库结构 13
2.2.1系统数据库简介 14
2.2.2系统表—数据字典 15
2.2.3系统过程 15
表J-73 9101~9148,日志转换管理器消息 5 16
B.1 简介 3 16
7.6.2创建唯一索引 1 16
2.3 限定数据库对象和指定当前数据库 16
2.3.1 数据库属主(dbo)和数据库对象的限定 16
2.3.2当前数据库 16
2.4用isql客户软件访问SQLServer 17
2.4.1 isql的使用方法 17
7.7小结:规则、缺省、唯一索引 1 17
7.9实现数据完整性可选择的方法 1 18
表J-74 9301~9336,syslabels管理器消息 5 19
7.1 1复习题 .1 19
2.4.2 wisql32(及wisql)的使用方法 19
第三章关系数据库概念 20
3.1数据库元素 20
3.2实体和联系 21
3.3 键 23
3.4.1数据完整性 25
3.4数据完整性 25
3.4.2参照完整性 27
3.5业务规则 30
第四章创建简单表的方法 32
4.1 SQL Server的表 32
4.1.2转换实体和属性为表和列 33
4.1.1 SQL Server的对象及其命名 33
4.2.1精确数值数据类型 34
4.2 Sybase SQLServer的数据类型 34
4.2.2近似数值数据类型 35
4.2.3货币数据类型 36
4.2.4 日期时间数据类型 37
4.2.5字符数据类型 38
4.2.6二进制数据类型 39
4.3用户定义数据类型 40
4.3.1定义和使用用户定义数据类型 40
4.3.2查看、重新命名和删除用户定义数据类型 42
4.4.1 列的性质:NULL性质 42
4.4列的性质 42
4.4.2 列的性质:IDENTITY 43
4.5确定每列的特征 45
4.6使用CREATE TABLE语句创建表 46
4.7检索表的信息 47
4.9实验4:创建一个简单表 48
4.8创建简单表小结 48
5.1.1 语法 50
5.1创建基于现存表的新表 50
第五章创建表的其他方法 50
5.1.3举例 . 51
5.1.2注释 51
5.2.1 只能由当前会话访问的临时表 52
5.2创建临时表 52
9.10COMPUTE子句与行集合函数 1 53
5.2.2可共享的临时表 53
5.2.3查看临时表 54
5.3.1 定义 55
5.3 视图 55
5.3.2 语法 56
5.3.3优点 58
5.3.4 限制 59
5.5 本章小结 61
5.4常用的系统存储过程 61
5.6实验5:创建临时表、创建视图和使用SELECT INTO语句 62
第六章创建带有数据完整性和参照完整性的表 63
6.1.1 定义 64
6.1 什么是数据完整性 64
6.1.2 分类 64
6.2.1 声明完整性 65
6.2.2完整性约束子句 65
6.2使用声明完整性实现数据完整性 65
6.2.3相关题目 66
6.3缺省子句 66
6.4检查约束 67
6.4.1什么是检查约束 67
6.4.2列级检查约束 68
6.5索引和约束 70
6.4.3表级检查约束 70
6.5.2索引和表 73
6.6.1 聚簇索引的存储 74
6.6聚簇表与聚簇索引 74
6.5.3索引与键 74
6.6.2聚簇索引的结构 76
6.7非聚簇索引 77
6.7.1 非聚簇索引的存储 77
6.7.2非聚簇索引的结构 78
6.8.1 唯一约束 79
6.8使用约束创建唯一索引 79
6.8.2列级唯一约束 80
6.9主键约束 81
6.8.3表级唯一约束 81
6.9.1列级主键约束 82
6.9.2表级主键约束 83
6.10小结:使用约束创建索引 83
6.11 实验6a:创建带有数据完整性约束的表 85
6.12声明参照完整性约束 86
6.12.1列级参照完整性约束 86
6.12.2表级参照完整性约束 88
6.13参照完整性约束的各种情形 90
6.14参照完整性约束:更新或删除主键 90
6.15 与约束有关的帮助消息 92
6.16 使用ALTER TABLE语句 95
6.16.1 ALTER TABLE语句 95
6.16.2 ALTER TABLE语句的使用举例—缺省与检查约束 96
6.16.4 ALTER TABLE语句的使用举例—参照完整性约束 97
6.16.3 ALTER TABLE语句的使用举例—唯一约束和主键约束 97
6.17相关的系统存储过程 98
6.18实验6b:创建带有参照完整性的表 100
第七章数据完整性与缺省、规则和索引 101
7.1数据库对象 102
7.2缺省 102
7.2.1什么是缺省 102
7.2.2创建缺省并与列捆绑 103
7.2.3解除与缺省的捆绑并删除缺省 105
7.3规则 106
7.3.1什么是规则 106
7.3.2创建规则并与列的捆绑 108
7.3.3解除与规则的捆绑并删除规则 110
7.4.2使用与规则和(或)缺省相捆绑的用户定义数据类型 112
7.4.3规则和缺省的优先级 113
7.5查看规则和缺省的定义 114
7.6.1什么是唯一索引 115
7.6唯一索引 115
7.8复习:约束的特性 118
7.10小结:数据库对象 119
7.12实验7:规则、缺省和唯一索引 120
8.1.1使用不同的数据库 122
8.1复习:访问数据库和T-SQL语言 122
第八章修改数据 122
8.1.2显示有关数据库的信息 124
8.1.3事务型SQL语言 126
8.2插入数据 127
8.3更新数据 129
8.4删除数据 130
8.4.1 使用DELETE语句删除数据 130
8.4.2 使用TRUNCATE TABLE语句删除数据 132
8.4.3命令比较 133
8.5 ANSI-89 SQL的select语句 133
8.6实验8:导航数据库并修改数据库 135
第九章操纵数据 137
9.1 T-SQL关于LIKE子句和通配符的扩充 138
9.1.1 T-SQL对通配符的扩充 138
9.1.2在LIKE谓词中的ESCAPE子句 139
9.2字符串操作 140
9.3数据类型转换和convert函数 142
9.3.1数据类型的隐式/显式转换 142
9.3.2数据类型转换函数convert概述 143
9.4.1 日期时间处理 144
9.4 日期时间处理与日期函数 144
9.3.3 转换日期时间型数据为字符串 144
9.4.2 日期函数 145
9.5数学函数 147
9.7集合函数 148
9.6实验9a:使用函数 148
9.8 isnull()函数 151
9.9 ORDER BY子句 152
9.1 1实验9b:数据分组与总计 157
10.1.1 T-SQL程序设计成分概述 158
10.1 T-SQL程序设计成分和应用开发 158
第10章使用T-SQL进行Server的程序设计简介 158
10.1.2应用开发上下文 160
10.2.1批的发送和处理 161
10.2批 161
10.2.2对批的限制 162
10.3注释T-SQL代码 164
10.4.局部变量 165
10.4.1局部变量定义与声明 165
10.4.2为局部变量赋值 166
10.4.3对局部变量的限制 167
10.4.4局部变量的使用 169
10.4.5使用局部变量时通常发生的错误 169
10.5全局变量 171
10.5.1全局变量的定义 171
10.5.2全局变量的使用 172
10.6.1 流控制关键字:IF…ELSE 173
10.6流控制语言 173
10.6.2 流控制关键字:IF EXISTS和IF NOT EXISTS 175
10.6.3流控制关键字:BEGIN…END 176
10.6.4 流控制关键字:RETURN 177
10.6.5流控制关键字:WHILE 178
10.6.6流控制关键字:BREAK和CONTINUE 179
10.6.7流控制关键字:WAITFOR 180
10.6.8流控制关键字:PRINT 181
10.6.9流控制关键字:RAISERROR 182
10.7小结 184
10.7.1 关于PRINT和RAISERROR的使用 184
10.7.2关于命令和题目的小结 184
10.8复习题 185
10.9实验10a:使用变量和流控制语句 187
10.10实验10b:使用PRINT和RAISERROR 188
11.1.1什么是事务 189
11.1 事务和数据一致性约束 189
第十一章事务管理—维护数据的一致性 189
11.1.2数据一致性约束问题 190
11.1.3如何标识一个事务 191
1 1.2.1锁的类型 192
11.2.2三种锁的相容性 192
1 1.2 SQLServer的封锁机制 192
1 1.3.2 SQLServer的隔离级别 193
11.3事务的隔离级别 193
11.3.1 ANSI隔离级别 193
1 1.4死锁及其解除 195
1 1.5封锁机制小结 196
11.6事务控制语句 196
1 1.7事务模式 197
11.8建立schema 199
11.9事务中的出错处理 200
1 1.9.1 全局变量@@transtate的作用 200
1 1.9.2综合利用@@error及@@rowcount 201
11.9.3如何向客户报告事务出错 203
11.10小结 205
12.1 游标的定义及其优点 207
第十二章游标 207
12.2游标的分类 209
12.3.1 声明游标 210
12.3游标的用法 210
12.3.2打开游标 212
12.3.3从一个打开的游标中提取行 213
12.3.4把提取的结果放入目的变量清单中 214
12.3.5举例1:游标代码 215
12.3.6关闭和释放游标 216
12.4使用游标修改数据 218
12.4.1 删除数据 218
12.4.2更新数据 219
12.4.3举例2:游标代码 221
12.4.4举例3:游标代码 222
12.5.1 CLOSE ON ENDTRAN选项 223
12.5在事务中的游标 223
12.5.2加锁 224
12.7小结:游标 225
12.6使用游标注意事项 225
12.8实验12:使用游标 227
第十三章存储过程 228
13.1什么是存储过程 229
13.2.1 SQLServer预编译存储过程 230
13.2 SQL Server如何处理存储过程 230
13.2.2 SQLServer建立查询计划 231
13.3存储过程的优点 232
13.4创建存储过程 234
13.4.1创建存储过程的部分语法和举例 234
13.4.2创建存储过程准则 236
13.5执行存储过程 237
13.6查看、改名和删除存储过程 238
13.7.1使用输入参数 239
13.7存储过程的输入参数和参数的传递 239
13.7.3使用单个输入参数执行存储过程 241
13.7.2使用参数的准则 241
13.7.4使用多个参数 243
13.8给出参数的缺省值 244
13.7.5综合检查 244
13.9使用输入参数时常见的错误 246
13.11.1返回值与输出参数 247
13.11 存储过程的返回值 247
13.10实验13a:创建存储过程并使用输入参数 247
13.11.2接收返回值 249
13.11.3举例:两类参数的传递方法 250
13.12存储过程的返回状态 251
13.13在存储过程中加注释 253
13.14存储过程中的事务控制 256
13.14.1存储过程事务模式的确定 257
13.14.2嵌套事务 258
13.14.3嵌套存储过程与保存点 259
13.14.4存储过程样例 260
13.15.2举例:服务器游标 262
13.15.1服务器游标定义 262
13.15服务器游标 262
13.15.3游标的作用域 264
13.16存储过程的标准、限制与依赖对象 265
13.16.1存储过程的标准 265
13.16.3存储过程的依赖对象 266
13.16.2存储过程的限制和注意事项 266
13.17重新编译存储过程 267
13.17.1 创建重新编译的存储过程 267
13.17.2执行重新编译的存储过程 268
13.1 8小结 270
13.19实验13b:从存储过程返回值 271
14.1.1触发器的定义 273
14.1触发器的定义和作用 273
第十四章触发器 273
14.1.2触发器的作用或应用 274
14.1.3触发器的触发(执行) 276
14.2创建触发器 277
14.3.1触发器工作中使用的两个专用表 278
14.3触发器的工作原理 278
14.3.2触发器工作中的行计数 279
14.4举例 281
14.4.1 DELETE触发器与deleted表 281
14.4.2 INSERT触发器与inserted表 282
14.4.3 UPDATE触发器与inserted表和deleted表 283
14.5多行考虑 286
14.6.1 查看触发器的正文信息 288
14.6查看和删除触发器 288
14.7声明完整性与触发器对于实现参照完整性的比较 289
14.6.2删除触发器 289
14.8复习:理解触发器 290
14.9在触发器中的事务控制 292
14.10举例 295
14.10.1 在触发器中使用游标:维护复制数据和定制日志 295
14.10.2增强复杂限制的触发器 296
14.11触发器嵌套 298
14.12对触发器的限制和注意事项 299
14.13小结 300
14.14实验14:编写触发器 301
1 5.1 SQL Server安全管理层次 302
第十五章如何控制数据安全性 302
15.1.2数据库用户 303
15.1.1 SQLServer帐户 303
15.1.3分组 304
15.1.4 public组 304
15.1.5 SQL Server中的三种角色 304
15.2 SQLServer帐户授权层次 305
15.3.1语句权力 307
15.3授权控制命令 307
15.3.2数据库对象权力 308
15.4.1存取控制的等级 309
15.4.数据库安全控制小结 309
15.4.2应用数据库中的数据安全控制 310
A.3触发器 314
A.4综合检查存储过程 315
附录B SQL Server的命名规则 316
B.2各对象命名准则 319
B.3 SYBASE SQLServer对象命名小结 336
附录C pubs2数据库结构图 337
附录D命令和存储过程快捷语法参考 338
D.1 T-SQL命令快捷语法 338
D.2存储过程快捷语法 354
D.3分类存储过程快捷语法 358
附录E全屏幕编辑程序 360
E.1 用vi编辑建立新文件 360
E.2移动光标 360
E.3滚屏 361
E.4 vi编辑命令 362
E.5举例 365
附录F实用程序bcp、defncopy简介 366
附录G Sybase SQL Server保留字 369
附录H应用开发实践 371
H.1通用的应用开发策略 371
H.2 T-SQL编码策略 373
H.3实现完整性的考虑 375
H.4 SYBASE SQL Server中的表 376
H.5索引 377
H.6检索数据 380
附录I词汇表 381
附录J错误消息 390
表J-1严重级别说明 391
表J-2错误消息正文简记符号 393
表J-3 1~21,综合消息 394
表J-4 101~199,语法分析器消息 394
表J-5 201~298,定序器消息 398
表J-6 301~316,判决模块消息 402
表J-7 401~434,编译消息 404
表J-8 501~599,查询处理器消息 405
表J-9 601~680,访问管理器消息 410
表J-10 701~710,存储管理器消息 414
表J-1 1 801~868,缓冲区管理器消息 415
表J-12 902~950,打开数据库管理器消息 419
表J-13 1 101~1 150,页面管理器消息 422
表J-14 1201~1288,锁管理器消息 424
表J-15 1301~1315,查询处理器消息 427
表J-16 1501~1536,排序管理器消息 429
表J-17 1601~1624,初始化消息 430
表J-18 1701~211 1,CREATE的实用程序消息 431
表J-19 2201~2301,READ/WRITE消息 436
表J-20 2401~2416,字符集转换消息 436
表J-21 2501~2599,dbcc消息 438
表J-22 2601~2628,1NSERT消息 444
表J-23 2701~2790,CREATE的实用程序消息 445
表J-24 2801~2838,过程管理器消息 448
表J-25 2901~2902,异常处理消息 450
表J-26 3001~3244,DUMP和LOAD消息 450
表J-27 3301~3317,undo和redo消息 455
表J-28 3401~3471,恢复消息 456
表J-29 3501~3508,checkpoint消息 459
表J-30 3604~3629,错误与异常处理消息 460
表J-31 3701~3738,DROP消息 461
表J-32 3801~3819,标记数据流消息 462
表J-33 3901~3917,事务管理器消息 463
表J-34 4001~4025,dataserver消息 464
表J-35 4201~4322,DUMP与LOAD消息 465
表J-36 4401~4425,视图消息 468
表J-37 4501~4509,CREATE的实用程序消息 469
表J-38 4601~4622,GRANT与REVOKE消息 470
表J-39 4701~4716,截断表消息 471
表J-40 4801~4837,BCP消息 472
表J-41 4901~4958,ALTER TABLE消息 473
表J-42 5001~5028,ALTER DATABASE消息 476
表J-43 6001~6006,shutdown消息 477
表J-44 5101~5151,磁盘消息 477
表J-45 5201~5217,DUMP DATABASE消息 479
表J-46 5701~5704,Open Client DB Library消息 480
表J-47 5803~5899,配置消息 481
表J-49 6001~6006,shutdown消息 485
表J-48 5901~5903,checkpoint消息 485
表J-51 6201~6291,showplan消息 487
表J-50 6101~6108,进程KILL消息 487
表J-52 6401~6403,ABORT TRANSACTION消息 490
表J-53 6501,缓存区管理器消息 491
表J-54 6701~6702,保护模块消息 491
表J-55 6901~6904,timestamp消息 491
表J-56 7001~7026,内部表消息(Stratus VOS) 491
表J-57 7101~7142,正文管理器消息 492
表J-58 7201~7233,分布式数据库网络消息 494
表J-59 7301~7389,语法分析器消息 496
表J-60 7401~7415,阀值消息 500
表J-61 7601~7620,审计模块消息 501
表J-62 7701~7797,定序器消息 502
表J-63 7901~7999,DBCC消息 507
表J-65 8201~8221,描述符管理器消息 512
表J-66 8401~8416,sysindexes管理器消息 513
表J-68 8601,进程状态结构消息 514
表J-69 8701~8706,场地缓冲区管理器消息 514
表J-70 8801~8806,登录连接消息 514
表J-67 8501~8502,ABORT消息 514
表J-71 8901~8904,数据缓冲区管理器消息 515
表J-72 9001~9006,磁盘管理器消息 515
表J-75 9501~9526,查询处理器消息 521
表J-76 9601~9602,CLEANUP消息 522
表J-77 9701~9732,安全消息 522
表J-78 9802~9816,分区管理器消息 523
表J-79 9901~9928,DBCC消息 523
表J-80 10101~10109,sysattributes消息 525
表J-81 10201~10214,showplan消息 525
表J-82 10401~10485,配置求助消息 526
表J-83 13001~13120,消息成分 531
表J-84 17000~18177,系统和目录存储过程消息 535
附录K实验题及其答案 562
实验1:本章无实验 562
实验2:访问SQLServer 562
练习概述 562
实验工作单 563
具体要求 563
解决方法 564
实验3:本章无实验 569
实验4:创建简单表 569
练习概述 569
具体要求 569
解决方法 570
具体要求 573
练习概述 573
实验5:创建临时表,使用select into和创建视图 573
解决方法 575
可选择的练习 584
解决方法—可选择的练习 585
实验6a:创建带有数据完整性约束的表 589
练习概述 589
具体要求 591
解决方法 592
实验6b:创建带有参照完整性的表 596
练习概述 596
语法 596
具体要求—节A 597
具体要求—节B 597
具体要求—节C 599
解决方法—节A 600
解决方法—节B 604
解决方法—节C 610
实验7:规则、缺省值和唯一性索引 615
练习概述 615
语法 615
具体要求 616
解决方法 617
实验8:导航数据库和修改数据 624
练习概述 624
具体要求 625
解决方法 626
实验9a:使用函数 632
练习概述 632
具体要求 632
解决方法 633
解决方法 638
具体要求 638
练习概述 638
实验9b:统计数据和分组数据 638
实验10a:使用变量和控制流 641
练习概述 641
语法 642
具体要求—节A 643
具体要求—节B 644
解决方法—节A 645
解决方法—节B 649
实验10b:使用print和raiserror命令 654
练习概述 654
语法 655
具体要求—节A 655
具体要求—节B 656
解决方法—节A 657
解决方法—节B 660
语法 666
练习概述 666
实验11:使用事务管理语句 666
具体要求—节A 667
具体要求—节B 670
解决方法—节A 671
解决方法—节B 679
实验12:使用游标 683
练习概述 683
语法 683
具体要求—节A 684
具体要求—节B 685
解决方法—节A 686
解决方法—节B 690
实验13a:建立存储过程和使用输入参数 694
练习概述 694
语法 694
具体要求—节A 695
具体要求—节B 697
解决方法—节A 698
解决方法—节B 704
实验13b:从存储过程返回值 709
练习概述 709
语法 710
具体要求 710
解决方法 711
实给14:编写触发器 717
练习概述 717
语法 717
具体要求—节A 717
具体要求—节B 718
解决方法—节A 718
解决方法—节B 720
实验15:本章没有实验 725