第1篇 SQL及关系数据库概述 2
第1章 关系数据库概述 2
1.1数据库的基本概念 3
数据库的发展 3
数据库系统组成 3
数据处理的抽象描述 3
数据模型 4
1.2关系数据库基本概念 4
关系模式 4
关系模型的特点及组成 5
关系数据语言的种类 6
域 7
笛卡儿积 7
关系 8
全关系系统十二准则 9
规范化(NF范式) 9
1.3关系数据库类型 10
桌面数据库 10
网络数据库 10
1.4常用关系数据库介绍 10
Microsoft Access 11
FoxPro 11
MySQL 11
Firebird 12
PostgreSQL 13
Informix 14
DB2 14
Sybase 15
SQL Server 17
Oracle 22
1.5小结 29
第2章 SQL概述 30
2.1 SQL的功能和特性 31
2.2 SQL语法分类 32
2.3 SQL标准与版本 32
SQL92标准 33
SQL99标准 33
SQL:2003标准 34
2.4 SQL表达式 34
2.5 SQL标识符 34
特殊字符(语法约定) 34
注释字符 35
2.6 SQL常量 35
2.7 SQL变量 37
2.8 SQL数据类型 37
数值型数据 37
字符型数据 38
日期数据类型 38
其他数据类型 39
2.9 SQL语句 40
SQL语句分类 40
SELECT查询语句 41
2.10 SQL语句的执行方法 42
2.11 SQL与关系数据库 42
2.12 SQL的发展 42
2.13小结 42
第3章 SQL扩展、工具及范例数据库介绍 44
3.1 T-SQL 46
注释语句 46
常量 46
变量 46
运算符 47
数据类型 48
函数 49
流程控制语句 49
3.2 PL/SQL 50
注释语句 50
数据类型 51
SQL92、 T-SQL、 PL/SQL数据类型比较 51
运算符 52
函数 52
PL/SQL与T-SQL函数比较 53
常量和变量 53
流程控制语句 54
3.3 SQLCMD工具 55
3.4 SQL Server查询分析工具 57
3.5 Oracle企业管理器EM工具 58
3.6 Oracle SQL*Plus工具 60
SQL*Plus的主要功能 60
SQL*Plus启动和快速登录方法 61
SQL*Plus常用命令操作 62
iSQL*Plus 70
3.7 PL/SQL Developer工具 72
主要功能特性 72
软件资源 74
基本用法 74
3.8 TOAD工具 76
主要功能特性 76
软件资源 77
基本用法 77
3.9范例数据库介绍 80
SQL Server学籍管理数据库 80
SQL Server系统示例库 84
Oracle系统示例库 84
3.10本章小结 90
第2篇 SQL运算符和函数 92
第4章 SQL运算符 92
4.1算术运算符 94
4.2赋值运算符 94
4.3字符串串联运算符 94
加号“+” 94
双竖号“‖” 94
4.4一元运算符 94
4.5逻辑运算符 95
4.6比较运算符 95
4.7集合运算符 96
UNION运算符 96
EXCEPT运算符 96
INTERSECT运算符 97
4.8运算符优先级 97
4.9 SQL92、 SQL Server和Oracle运算符比较 97
4.10小结 99
第5章 函数 100
5.1数值函数 102
5.2字符串函数 103
5.3日期时间函数 104
5.4数据类型转换函数 106
CAST ()函数 106
CONVERT ()函数 107
5.5统计函数 109
SUM ()求和 110
COUNT()计数 110
MAX()/MIN()求最大/最小值 111
AVG()求均值 112
VAR ()/ARP ()求方差 113
STDEV()/STDEVP()求标准误差 113
使用DISTINCT关键字进行重值筛选 114
5.6小结 114
第3篇 数据查询操作 116
第6章 简单查询 116
6.1用SELECT子句选择列表 118
选择列 119
更改列标题 119
使用TOP限制选择行数 120
DISTINCT去掉重复的字段数据 121
DISTINCTROW去掉重复的记录数据 122
6.2 FROM子句 122
对具有相同列名的两个表进行查询 123
从查询结果集合中查询数据 123
6.3 WHERE子句 123
使用比较运算符指定查询条件 124
使用逻辑运算符指定查询条件 124
使用范围BETWEEN指定查询条件 125
使用列表IN指定查询条件 125
使用LIKE与通配符指定查询条件 125
NULL空值的判断 126
使用包含判断词EXISTS、ALL、ANY、SOME 126
6.4 GROUP BY子句 130
一般情况的分组查询 131
GROUP BY子句根据多列组合行 132
CUBE和ROLLUP运算符及使用 132
GROUP BY子句中的NULL值处理 133
6.5 HAVING子句 134
HAVING子句的一般应用 134
HAVING与WHERE子句的区别 135
HAVING子句单独使用 136
HAVING子句与CASE语句结合使用 137
6.6 ORDER BY子句 137
ORDER BY子句的使用 137
ORDER BY子句的约束 139
6.7小结 139
第7章 连接查询 141
7.1连接概述 143
连接范围 143
连接类型 143
笛卡儿积 143
连接语法 144
连接运算符 144
7.2自(身)连接 144
7.3内连接(INNER JOIN) 145
等值连接 145
不等连接 146
自然连接 147
7.4外连接 148
左外连接(LEFT JOIN) 148
右外连接(RIGHT JOIN) 149
全外连接(FULL JOIN) 150
7.5交叉连接(CROSS JOIN) 151
7.6小结 151
第8章 集合查询 153
8.1集合概念 155
8.2集合性质 155
8.3集合运算 155
8.4 UNION运算符 156
使用UNION进行表内查询 156
使用UNION进行多表查询 157
使用UNION JOIN连接查询 158
8.5 INTERSECT运算符 159
8.6 EXCEPT运算符 159
8.7小结 160
第9章 子查询 161
9.1概述 163
子查询定义 163
子查询语法 163
子查询的两种基本形式 164
子查询的优点 165
子查询分类 165
子查询中的比较运算符与谓词 165
使用子查询的规则 168
9.2单行子查询 169
9.3多行子查询 170
在多行子查询中使用IN比较符 170
在多行子查询中使用ALL、SOME、 ANY比较符 171
9.4多列子查询 172
9.5相关子查询 173
使用单行比较运算符引入相关子查询 174
使用IN引入相关子查询 174
在子查询中使用[NOT]EXISTS 175
9.6在各类SQL语句中使用子查询 177
在SELECT子句中使用子查询 177
在FROM子句中使用子查询 177
在WHERE子句中使用子查询 177
在GROUP BY子句中使用子查询 178
在HAVING子句中使用子查询 178
在CREATE TABLE语句中使用子查询 178
在CREATE VIEW语句中使用子查询 179
在INSERT INTO子句中使用子查询 180
在UPDATE语句中使用子查询 181
在DELETE语句中使用子查询 182
使用WITH子句重用子查询 182
9.7树查询 183
9.8小结 184
第4篇 数据更新操作 186
第10章 数据库操作 186
10.1创建数据库 188
10.2查看数据库信息 193
10.3更改数据库 193
更改数据库名称 195
修改数据库文件 195
更改数据库属性 200
10.4删除数据库 201
10.5小结 201
第11章 方案操作 202
11.1方案概述 204
11.2查找方案 204
11.3创建方案 204
11.4更改方案 206
11.5删除方案 206
11.6小结 207
第12章 数据表操作 208
12.1创建表 210
12.2复制表 211
12.3修改表结构 212
增加列和约束 212
查找列约束 214
修改列和约束 214
删除列和约束 215
12.4行记录操作 215
插入记录 215
修改记录 218
删除记录(DELETE) 223
删除记录(TRUNCATE) 225
12.5重命名表 226
12.6删除表 226
12.7MERGE语句 226
12.8小结 228
第13章 索引操作 229
13.1索引的分类 231
索引的概念 231
索引分类 231
13.2索引使用的场所 232
13.3查看索引 233
13.4创建索引 234
创建索引的方法 234
CREATE INDEX语法 234
创建聚簇索引 236
创建非聚簇索引 236
创建简单列索引 236
创建组合列索引 237
创建普通索引 238
创建唯一索引 238
创建视图索引 241
13.5修改索引 242
13.6禁用/启用索引 245
13.7删除索引 245
13.8小结 246
第14章 视图操作 248
14.1查询视图 250
14.2创建视图 251
14.3修改视图 255
14.4删除视图 256
14.5小结 257
第15章 序列操作 258
15.1创建序列 260
15.2查找序列值 260
15.3使用序列 261
15.4修改序列 261
15.5删除序列 262
15.6小结 262
第5篇 数据安全管理 264
第16章 完整性约束 264
16.1数据库的安全性 266
16.2完整性约束分类 267
16.3表约束 268
DEFAULT约束 268
NOT NULL约束 269
CHECK约束 269
UNIQUE约束 270
PRIMARY KEY约束 270
FOREIGN KEY约束 271
FOREIGN KEY的MATCH约束 272
16.4域约束 273
16.5断言 273
16.6禁止与启用约束 274
16.7查看约束 275
16.8删除约束DROP 275
16.9小结 275
第17章 用户管理 277
17.1查找用户及相关信息 279
17.2创建用户 282
17.3修改用户 285
17.4删除用户 286
17.5小结 286
第18章 角色管理 288
18.1角色的概念 290
18.2查找角色 290
18.3创建角色 293
18.4更改角色 295
18.5删除角色 295
18.6小结 295
第19章 权限管理 297
19.1权限分类 299
19.2查看权限 299
19.3授予权限 303
授予ALL权限 304
授予SELECT权限 304
授予CREATE权限 304
授予INSERT权限 305
授予UPDATE列权限 305
授予ALTER权限 305
授予EXECUTE权限 306
授予REFERENCES权限 306
授予DELETE权限 306
授予DROP权限 306
授予用户角色的权限 307
19.4收回权限 308
19.5小结 309
第6篇 SQL编程 312
第20章 事务控制与并发处理 312
20.1事务的基本概念 314
20.2锁的基本概念和分类 314
20.3事务的并发控制 318
并发控制方法 319
事务隔离级别 319
事务特性的设置 321
20.4事务开始和终止 322
20.5数据库读写访问操作 322
20.6事务提交 322
20.7事务回滚 323
20.8 SQL Server与Oracle事务处理的比较 324
20.9小结 324
第21章 存储过程 326
21.1存储过程的概念 329
21.2存储过程的优点 329
21.3存储过程分类 329
21.4 SQL Server存储过程中的控制语句 330
注释语句 330
屏幕输出语句 330
变量定义和使用语句 330
块语句 331
判断语句 331
循环语句 332
转向定位语句 333
定时执行语句 333
错误捕获语句 333
21.5 Oracle存储过程中的控制语句 333
注释语句 334
屏幕输出语句 334
变量和常量的定义和使用 334
块语句BEGIN…END 337
判断语句IF、 CASE 338
循环语句 340
转向定位语句 342
定时执行作业任务dbms_job 342
错误捕获语句 346
21.6存储过程的创建 346
创建存储过程的语法 346
创建无参数的存储过程 347
创建有参数的存储过程 347
21.7存储过程的调用与执行 349
RETURN语句及返回值 350
存储过程的创建和调用步骤 351
存储过程调用方法和步骤 352
调用无参数的过程 352
调用有参数的过程 352
21.8存储过程的查看 354
查看SQL Server存储过程 354
查看Oracle存储过程 356
21.9存储过程的修改和重编译 359
修改存储过程 360
重命名存储过程 360
存储过程的重编译 361
21.10存储过程的删除 364
21.11 SQL Server中几个重要的存储过程介绍 365
sp_attach_ db 366
sp_ attach_ single_file_db 366
sp changedbowner 367
sp_ changeobjectowner 367
sp_ configure 368
xp_ cmdshell 370
sp_spaceused 373
sp_ msforeachtable 374
21.12存储过程应用实例 374
用存储过程实现数据表更新操作 374
用存储过程实现数据备份与恢复 376
21.13小结 377
第22章 存储函数 379
22.1存储函数和存储过程的区别 381
22.2存储函数的类型和约定 381
22.3存储函数的创建和调用 383
存储函数创建语法 385
存储函数调用类型、方法和语法 387
SQL Server存储函数的创建和调用 387
Oracle存储函数的创建和调用 390
22.4存储函数的更改 396
22.5存储函数的编译 397
22.6存储函数信息的查看 397
查看SQL Server存储函数 398
查看Oracle存储函数 399
22.7存储函数的删除 401
22.8小结 402
第23章 触发器 404
23.1触发器概述 406
触发器的基本概念 406
触发器的用途和优势 407
触发器的类型 408
触发器中的两个临时表 409
23.2创建SQL Server触发器 409
创建DML触发器 410
创建DDL触发器 420
创建INSTEAD OF触发器 423
创建嵌套触发器 426
创建递归触发器 428
23.3创建Oracle触发器 430
触发谓词的使用 431
创建DML语句触发器 432
创建DML行触发器 435
创建DDL触发器 438
创建INSTERD OF触发器 439
创建事件触发器 441
23.4更改触发器 444
23.5重新编译Oracle触发器 446
23.6禁止和启用触发器 446
23.7查看触发器信息 447
查看SQL Server触发器 447
查看Oracle触发器 449
23.8删除触发器 451
23.9本章小结 453
第24章 游标 455
24.1游标的基本概念 457
游标的基本原理 457
游标的内容构成 457
游标的类型 457
游标变量 461
24.2游标操作 462
申明游标 462
打开游标 463
读取数据 464
关闭游标CLOSE 469
删除游标 469
24.3查看游标 470
查看SQL Server游标 470
查看Oracle游标 475
24.4游标循环 476
24.5参数游标 478
24.6游标嵌套 479
24.7游标应用 479
24.8小结 483
第25章 错误和异常处理 486
25.1错误和异常分类 488
25.2 SQL Server错误和异常处理 488
错误信息及存储 488
错误捕获方法 488
25.3 Oracle错误和异常处理 492
异常处理方法 492
异常处理语法 492
预定义异常处理 493
非预定义异常处理 494
自定义异常处理 495
25.4小结 496
第7篇 SQL在数据库开发和管理中的应用 498
第26章 嵌入式SQL 498
26.1 ESQL基本概念 500
26.2 SQL的使用方法 500
26.3 ESQL语句和宿主语言之间的通信方法 502
使用SQL通信区通信 503
使用主变量通信 503
使用游标通信 506
26.4 ESQL的编译处理过程 507
26.5使用WHENEVER语句简化错误处理 507
26.6在高级语言中嵌入SQL 509
ESQL的语法格式 509
在Visual C++++下执行ESQL语句 509
在Visual C#中执行嵌入式T-SQL语句 511
26.7在数据库管理系统中嵌入SQL 513
ESQL语句与T-SQL和PL/SQL语句的比较 513
在SQL Server中使用嵌入式SQL 514
在Oracle中嵌入SQL 517
26.8动态SQL技术 524
动态SQL的基本概念 524
SQL Server动态SQL语句的处理 525
Oracle动态SQL语句的处理 527
26.9小结 532
第27章 数据库的存取访问技术 534
27.1数据库系统的开发环境 536
27.2应用系统的典型结构 536
27.3开发平台和工具 538
Power Builder 538
Delphi 539
Oracle Developer Suite 539
.NET 540
J2EE 542
.NET和J2EE比较 543
27.4数据库的连接访问技术 543
OLE DB 543
ODBC 545
JDBC 547
ADO 549
ADO.NET 556
Recordset对象方法的使用 561
27.5 ASP/ASP.NET与数据库的连接和访问 562
ASP/ASP.NET与Text 563
ASP/ASP.NET与Excel 563
ASP/ASP.NET与Access 564
ASP/ASP.NET与SQL Server 564
ASP/ASP.NET与Oracle 565
27.6 VB.NET与数据库的连接和访问 566
VB.NET与Text 566
VB.NET与Excel 566
VB.NET与Access 567
VB.NET与SQL Server 568
VB.NET与Oracle 568
27.7 VC#.NET与数据库的连接和访问 569
VC#.NET与Excel 569
VC#.NET与Access 570
VC#.NET与SQL Server 571
VC#.NET与Oracle 572
27.8小结 572
第28章 用SQL管理SQL Server数据库 573
28.1操作系统管理 576
查看服务器属性和操作系统参数 576
查看磁盘目录和文件信息 577
查看存储介质与磁盘分区信息 578
查看服务器提供的服务组件与程序 579
28.2 DBMS管理 579
查看数据库服务属性 579
查看数据库系统版本及配置参数 580
查看和修改数据库属性 580
查看数据库文件和文件组属性 582
查看当前数据库重要的数据对象 582
查看数据库日志 583
28.3用户对象、权限与安全管理 584
查看数据库角色 584
查看和管理数据库用户 585
查看有关权限 586
查看和管理用户的数据对象 587
查看和管理进程 590
查看数据库锁 591
数据库备份和恢复 593
28.4小结 597
第29章用SQL管理Oracle数据库 599
29.1系统管理 606
查看数据库系统属性 606
查看所有数据库对象的属性 607
查看和修改当前数据库的字符集 608
查看数据库文件的属性 609
查看和设置数据库归档信息 609
查看数据库的数据字典 611
查看数据库的后台进程 612
查看和修改系统的当前时间 612
查看SCN和MTS 613
29.2连接、会话与进程管理 614
查看数据库的并发连接会话数 614
查看客户端连接会话信息 614
查看会话进程及客户端信息 617
29.3表空间和数据文件管理 619
查看表空间信息 619
查看表空间的数据文件和容量统计信息 620
查看数据对象所占用的表空间信息 622
查看表空间的碎片 623
查看数据文件信息 624
查看日志组信息 625
查看竞争与等待信息 626
查看TRACE脚本文件 628
29.4回滚段管理 628
查看回滚段的属性 628
查看用户与会话正在使用的回滚段 631
29.5数据表管理 631
查看数据表的基本属性 631
查看表的存储信息 632
查看表的约束与关联信息 634
表记录管理 636
29.6索引管理 637
查看索引属性 637
查看用户的索引信息 637
查看索引的存储属性 638
对字段进行全文检索 638
29.7存储过程、存储函数和触发器管理 639
查看存储过程和函数的状态信息 639
查看触发器、过程、函数的创建脚本 639
29.8查看运行的SQL语句 640
查看进程所对应的SQL语句 640
查看用户正在运行的SQL语句 642
查看Disk Read最高的SQL语句 642
查看回滚段里正在运行的SQL语句 643
查看视图对应的SQL语句 643
查看SQL语句的执行情况 643
29.9角色、用户与安全管理 643
查看数据库角色信息 644
查看数据库用户信息 644
查看用户对象和类型 646
查看有关授权信息 649
查看数据备份和恢复信息 650
29.10锁管理 651
查看锁 651
查看被锁的进程及锁类型信息 654
查看被锁定的数据库对象 655
查看锁定对象的客户端信息 656
解锁操作 656
29.11参数调整与性能优化 657
查看数据库服务器参数 658
查看客户端参数 659
查看会话环境参数 659
查看inin.ora参数 659
查看NLS参数 659
查看SGA 660
查看PGA 670
查看排序区 670
查看Large Pool 671
查看Java语言区 671
查看UGA区 671
查看CPU资源 671
查看I/O资源的使用情况 672
查看等待与竞争 673
SQL语句优化 676
29.12小结 678
第8篇 附录 680
附录A SQL常用语句分类索引 680
附录B SQL、 SQL Server、Oracle常用函数分类对照索引 683
附录C SQL Server常用系统表和系统存储过程索引 689
附录D Oracle数据库常用视图索引 696
附录E Oracle数据库系统环境变量参数 700