第1篇 基础知识 2
第1章 数据库基础 2
1.1 数据库系统简介 3
1.1.1 数据库技术的发展 3
1.1.2 数据库系统的组成 3
1.2 数据库的体系结构 4
1.2.1 数据库三级模式结构 4
1.2.2 三级模式之间的映射 5
1.3 数据模型 5
1.3.1 数据模型的概念 6
1.3.2 常见的数据模型 6
1.3.3 关系数据库的规范化 7
1.3.4 关系数据库的设计原则 8
1.3.5 实体与关系 8
1.4 常见关系数据库 8
1.4.1 Access数据库 9
1.4.2 SQL Server 2000数据库 9
1.4.3 SQL Server 2005数据库 9
1.4.4 SQL Server 2008数据库 9
1.4.5 SQL Server 2012数据库 10
1.4.6 Oracle数据库 11
1.5 小结 11
1.6 实践与练习 11
第2章 初识SQL Server 2012 12
2.1 SQL Server 2012简介 13
2.2 SQL Server 2012的特点 13
2.3 SQL Server 2012的安装与卸载 14
2.3.1 SQL Server 2012安装必备 15
2.3.2 SQL Server 2012的安装 15
2.3.3 SQL Server 2012的卸载 27
2.4 使用SQL Server 2012的帮助 28
2.5 小结 29
2.6 实践与练习 29
第3章 SQL Server 2012服务的启动与注册 30
3.1 SQL Server 2012的服务 31
3.2 启动SQL Server 2012服务 31
3.2.1 后台启动服务 31
3.2.2 通过配置管理器启动 32
3.3 注册SQL Server 2012服务器 33
3.3.1 创建与删除服务器组 33
3.3.2 注册与删除服务器 35
3.4 小结 37
3.5 实践与练习 37
第4章 创建与管理数据库 38
4.1 认识数据库 39
4.1.1 数据库基本概念 39
4.1.2 数据库常用对象 40
4.1.3 数据库组成 40
4.1.4 系统数据库 41
4.2 SQL Server的命名规则 42
4.2.1 标识符 42
4.2.2 对象命名规则 43
4.2.3 实例命名规则 44
4.3 数据库的创建与管理 44
4.3.1 创建数据库 44
4.3.2 修改数据库 48
4.3.3 删除数据库 51
4.4 小结 53
4.5 实践与练习 53
第5章 操作数据表 54
5.1 数据表基础 55
5.1.1 基本数据类型 55
5.1.2 用户自定义数据类型 56
5.1.3 数据表的数据完整性 57
5.2 数据表的创建与管理 58
5.2.1 以界面方式操作数据表 58
5.2.2 使用CREATE TABLE语句创建表 60
5.2.3 使用ALTER TABLE语句修改表结构 63
5.2.4 使用DROP TABLE语句删除表 65
5.3 管理数据 65
5.3.1 使用INSERT语句添加数据 65
5.3.2 使用UPDATE语句修改数据 66
5.3.3 使用DELETE语句删除数据 67
5.4 创建、删除和修改约束 68
5.4.1 非空约束 68
5.4.2 主键约束 68
5.4.3 唯一约束 70
5.4.4 检查约束 71
5.4.5 默认约束 73
5.4.6 外键约束 74
5.5 关系的创建与维护 76
5.5.1 一对一关系 76
5.5.2 一对多关系 77
5.5.3 多对多关系 78
5.6 小结 78
5.7 实践与练习 78
第2篇 核心技术 80
第6章 SQL基础 80
6.1 T-SQL概述 81
6.1.1 T-SQL的组成 81
6.1.2 T-SQL语句结构 81
6.1.3 T-SQL语句分类 82
6.2 常量 82
6.2.1 数字常量 83
6.2.2 字符串常量 83
6.2.3 日期和时间常量 83
6.2.4 符号常量 83
6.3 变量 84
6.3.1 局部变量 84
6.3.2 全局变量 85
6.4 注释符、运算符与通配符 87
6.4.1 注释符 87
6.4.2 运算符 88
6.4.3 通配符 91
6.5 流程控制 91
6.5.1 BEGIN...END 92
6.5.2 IF 93
6.5.3 IF...ELSE 94
6.5.4 CASE 95
6.5.5 WHILE 97
6.5.6 WHILE...CONTINUE...BREAK 97
6.5.7 RETURN 98
6.5.8 GOTO 99
6.5.9 WAITFOR 100
6.6 常用命令 101
6.6.1 DBCC 101
6.6.2 CHECKPOINT 102
6.6.3 DECLARE 103
6.6.4 PRINT 104
6.6.5 RAISERROR 105
6.6.6 READTEXT 106
6.6.7 BACKUP 106
6.6.8 RESTORE 107
6.6.9 SELECT 109
6.6.10 SET 110
6.6.11 SHUTDOWN 111
6.6.12 WRITETEXT 111
6.6.13 USE 112
6.7 小结 113
6.8 实践与练习 113
第7章 SQL函数的使用 114
7.1 聚合函数 115
7.1.1 聚合函数概述 115
7.1.2 SUM(求和)函数 115
7.1.3 AVG(平均值)函数 116
7.1.4 MIN(最小值)函数 117
7.1.5 MAX(最大值)函数 118
7.1.6 COUNT(统计)函数 119
7.1.7 DISTINCT(取不重复记录)函数 120
7.1.8 查询重复记录 121
7.2 数学函数 121
7.2.1 数学函数概述 122
7.2.2 ABS(绝对值)函数 122
7.2.3 PI(圆周率)函数 123
7.2.4 POWER(乘方)函数 123
7.2.5 RAND(随机浮点数)函数 124
7.2.6 ROUND(四舍五入)函数 125
7.2.7 SQUARE(平方)函数和SQRT(平方根)函数 125
7.2.8 三角函数 127
7.3 字符串函数 129
7.3.1 字符串函数概述 129
7.3.2 ASCII(获取ASCII码)函数 129
7.3.3 CHARINDEX(返回字符串的起始位置)函数 131
7.3.4 LEFT(取左边指定个数的字符)函数 131
7.3.5 RIGHT(取右边指定个数的字符)函数 132
7.3.6 LEN(返回字符个数)函数 133
7.3.7 REPLACE(替换字符串)函数 134
7.3.8 REVERSE(返回字符表达式的反转)函数 135
7.3.9 STR函数 135
7.3.10 SUBSTRING(取字符串)函数 136
7.4 日期和时间函数 137
7.4.1 日期和时间函数概述 137
7.4.2 GETDATE(返回当前系统日期和时间)函数 137
7.4.3 DAY(返回指定日期的天)函数 138
7.4.4 MONTH(返回指定日期的月)函数 139
7.4.5 YEAR(返回指定日期的年)函数 139
7.4.6 DATEDIFF(返回日期和时间的边界数)函数 139
7.4.7 DATEADD(添加日期时间)函数 140
7.5 转换函数 141
7.5.1 转换函数概述 142
7.5.2 CAST函数 142
7.5.3 CONVERT函数 143
7.6 元数据函数 145
7.6.1 元数据函数概述 145
7.6.2 COL_LENGTH函数 146
7.6.3 COL_NAME函数 147
7.6.4 DB_NAME函数 147
7.7 小结 148
7.8 实践与练习 148
第8章 SQL数据查询基础 149
8.1 SELECT检索数据 150
8.1.1 SELECT语句的基本结构 150
8.1.2 WITH子句 151
8.1.3 SELECT...FROM子句 153
8.1.4 INTO子句 156
8.1.5 WHERE子句 157
8.1.6 GROUP BY子句 168
8.1.7 HAVING子句 170
8.1.8 ORDER BY子句 170
8.1.9 COMPUTE子句 172
8.1.10 DISTINCT关键字 173
8.1.11 TOP关键字 174
8.2 UNION合并多个查询结果 175
8.2.1 UNION与联接之间的区别 175
8.2.2 使用UNION ALL合并表 176
8.2.3 UNION中的ORDER BY子句 177
8.2.4 UNION中的自动数据类型转换 177
8.2.5 使用UNION合并不同类型的数据 178
8.2.6 使用UNION合并有不同列数的两个表 178
8.2.7 使用UNION进行多表合并 179
8.3 小结 180
8.4 实践与练习 180
第9章 SQL数据高级查询 181
9.1 子查询与嵌套查询 182
9.1.1 子查询概述 182
9.1.2 嵌套查询概述 182
9.1.3 简单的嵌套查询 183
9.1.4 带IN的嵌套查询 183
9.1.5 带NOT IN的嵌套查询 184
9.1.6 带SOME的嵌套查询 185
9.1.7 带ANY的嵌套查询 185
9.1.8 带ALL的嵌套查询 186
9.1.9 带EXISTS的嵌套查询 186
9.2 联接查询 187
9.2.1 内部联接 187
9.2.2 外部联接 188
9.2.3 交叉联接 189
9.2.4 联接多表 191
9.3 使用CASE函数进行查询 192
9.4 小结 195
9.5 实践与练习 195
第10章 视图的使用 196
10.1 视图概述 197
10.2 视图的分类与操作 197
10.2.1 以界面方式操作视图 197
10.2.2 使用CREATE VIEW语句创建视图 199
10.2.3 使用ALTER VIEW语句修改视图 201
10.2.4 使用DROP VIEW语句删除视图 203
10.2.5 使用存储过程sp_rename修改视图 204
10.3 通过视图操作数据 204
10.3.1 从视图中浏览数据 204
10.3.2 向视图中添加数据 205
10.3.3 修改视图中的数据 206
10.3.4 删除视图中的数据 206
10.4 小结 207
10.5 实践与练习 207
第3篇 高级应用 210
第11章 存储过程 210
11.1 存储过程概述 211
11.1.1 存储过程的概念 211
11.1.2 存储过程的优点 211
11.2 创建存储过程 212
11.2.1 使用向导创建存储过程 212
11.2.2 使用CREATE PROC语句创建存储过程 213
11.3 管理存储过程 214
11.3.1 执行存储过程 214
11.3.2 查看存储过程 216
11.3.3 修改存储过程 217
11.3.4 重命名存储过程 220
11.3.5 删除存储过程 221
11.4 小结 223
11.5 实践与练习 223
第12章 触发器 224
12.1 触发器概述 225
12.1.1 触发器的概念 225
12.1.2 触发器的优点 225
12.1.3 触发器的种类 225
12.2 创建触发器 226
12.2.1 创建DML触发器 226
12.2.2 创建DDL触发器 228
12.2.3 创建登录触发器 229
12.3 管理触发器 231
12.3.1 查看触发器 231
12.3.2 修改触发器 232
12.3.3 重命名触发器 235
12.3.4 禁用和启用触发器 235
12.3.5 删除触发器 238
12.4 小结 240
12.5 实践与练习 240
第13章 游标的使用 241
13.1 游标的概述 242
13.1.1 游标的实现 242
13.1.2 游标的类型 242
13.2 游标的基本操作 243
13.2.1 声明游标 243
13.2.2 打开游标 246
13.2.3 读取游标中的数据 247
13.2.4 关闭游标 249
13.2.5 释放游标 250
13.3 使用系统过程查看游标 251
13.3.1 sp_cursor_list 251
13.3.2 sp_describe_cursor 252
13.4 小结 254
13.5 实践与练习 254
第14章 索引与数据完整性 255
14.1 索引的概念 256
14.2 索引的优缺点 256
14.2.1 索引的优点 256
14.2.2 索引的缺点 256
14.3 索引的分类 257
14.3.1 聚集索引 257
14.3.2 非聚集索引 257
14.4 索引的操作 258
14.4.1 索引的创建 258
14.4.2 查看索引信息 261
14.4.3 索引的修改 262
14.4.4 索引的删除 263
14.4.5 设置索引的选项 264
14.5 索引的分析与维护 267
14.5.1 索引的分析 267
14.5.2 索引的维护 269
14.6 全文索引 271
14.6.1 使用企业管理器启用全文索引 272
14.6.2 使用Transact-SQL语句启用全文索引 274
14.6.3 使用Transact-SQL语句删除全文索引 276
14.6.4 全文目录 276
14.6.5 全文目录的维护 279
14.7 数据完整性 282
14.7.1 域完整性 282
14.7.2 实体完整性 283
14.7.3 引用完整性 284
14.7.4 用户定义完整性 285
14.8 小结 285
14.9 实践与练习 285
第15章 SQL中的事务 286
15.1 事务的概念 287
15.2 显式事务与隐式事务 287
15.2.1 显式事务 288
15.2.2 隐式事务 289
15.2.3 API中控制隐式事务 290
15.2.4 事务的COMMIT和ROLLBACK 290
15.3 使用事务 290
15.3.1 开始事务 291
15.3.2 结束事务 291
15.3.3 回滚事务 292
15.3.4 事务的工作机制 293
15.3.5 自动提交事务 293
15.3.6 事务的并发问题 294
15.3.7 事务的隔离级别 295
15.4 锁 297
15.4.1 SQL Server锁机制 297
15.4.2 锁模式 298
15.4.3 锁的粒度 299
15.4.4 查看锁 300
15.4.5 死锁 300
15.5 分布式事务处理 301
15.5.1 分布式事务简介 302
15.5.2 创建分布式事务 302
15.5.3 分布式处理协调器 302
15.6 小结 303
15.7 实践与练习 303
第16章 维护SQL Server 2012 304
16.1 脱机与联机数据库 305
16.1.1 脱机数据库 305
16.1.2 联机数据库 305
16.2 分离和附加数据库 306
16.2.1 分离数据库 306
16.2.2 附加数据库 307
16.3 导入导出数据 308
16.3.1 导入SQL Server数据表 308
16.3.2 导入其他数据源的数据 311
16.3.3 导出SQL Server数据表 313
16.4 备份和恢复数据库 316
16.4.1 备份类型 316
16.4.2 恢复模式 316
16.4.3 备份数据库 317
16.4.4 恢复数据库 318
16.5 收缩数据库和文件 320
16.5.1 自动收缩数据库 320
16.5.2 手动收缩数据库 321
16.6 生成与执行SQL脚本 322
16.6.1 将数据库生成SQL脚本 323
16.6.2 将数据表生成SQL脚本 323
16.6.3 执行SQL脚本 324
16.7 小结 325
16.8 实践与练习 325
第17章 数据库的安全机制 326
17.1 数据库安全概述 327
17.2 数据库登录管理 327
17.2.1 选择验证模式 327
17.2.2 管理登录账号 327
17.2.3 更改登录验证方式 336
17.2.4 设置密码 337
17.3 用户及权限管理 338
17.3.1 创建与删除数据库用户 338
17.3.2 设置服务器角色权限 339
17.4 小结 340
17.5 实践与练习 340
第4篇 项目实战 342
第18章 Visual C++ +SQL Server实现图书管理系统 342
18.1 系统概述 343
18.2 系统设计 343
18.2.1 系统目标 343
18.2.2 系统功能结构 343
18.2.3 业务流程图 344
18.3 数据库设计 344
18.3.1 数据库分析 345
18.3.2 主要数据表结构 345
18.4 创建工程 347
18.5 公共类设计 348
18.5.1 自绘菜单类CMyCoolMenu 348
18.5.2 自定义编辑框类CKeyEdit 353
18.5.3 自定义列表视图类CCustomGrid 355
18.6 启动界面的设计 356
18.6.1 启动界面设计 357
18.6.2 启动界面的淡入/淡出效果 357
18.7 登录对话框设计 358
18.7.1 登录对话框的界面设计 358
18.7.2 设置按钮显示位图 358
18.7.3 设置按Enter键移动焦点 359
18.7.4 设置“登录”按钮功能 359
18.8 主窗体设计 360
18.8.1 菜单设计 360
18.8.2 工具栏设计 361
18.8.3 主窗体界面设计 363
18.9 “基本信息管理”模块设计 363
18.9.1 “基本信息管理”模块界面设计 363
18.9.2 设置选项卡 364
18.9.3 初始化标签控件 369
18.9.4 设置按钮功能 369
18.10 “库存信息管理”模块设计 370
18.10.1 “库存信息管理”模块界面设计 370
18.10.2 设置选项卡 371
18.11 “查询管理”模块设计 378
18.11.1 “查询管理”模块界面设计 378
18.11.2 设置选项卡 379
18.12 小结 384
第19章 C#+SQL Server实现企业人事管理系统 385
19.1 系统概述 386
19.2 系统设计 386
19.2.1 系统目标 386
19.2.2 系统功能结构 386
19.2.3 系统业务流程图 386
19.3 系统运行环境 388
19.4 数据库与数据表设计 388
19.4.1 数据库分析 388
19.4.2 主要数据表结构 388
19.4.3 数据表逻辑关系 392
19.5 创建项目 394
19.6 公共类设计 395
19.6.1 MyMeans公共类 395
19.6.2 MyModule公共类 398
19.7 登录模块设计 412
19.7.1 设计登录窗体 412
19.7.2 按Enter键时移动鼠标焦点 412
19.7.3 登录功能的实现 413
19.8 系统主窗体设计 414
19.8.1 设计菜单栏 414
19.8.2 设计工具栏 415
19.8.3 设计导航菜单 416
19.8.4 设计状态栏 417
19.9 人事档案管理模块设计 417
19.9.1 设计人事档案管理窗体 418
19.9.2 添加/修改人事档案信息 420
19.9.3 删除人事档案信息 422
19.9.4 单条件查询人事档案信息 423
19.9.5 逐条查看人事档案信息 425
19.9.6 将人事档案信息导出为Word文档 427
19.9.7 将人事档案信息导出为Excel表格 431
19.10 用户设置模块设计 436
19.10.1 设计用户设置窗体 436
19.10.2 添加/修改用户信息 436
19.10.3 删除用户基本信息 438
19.10.4 设置用户操作权限 439
19.11 数据库维护模块设计 439
19.11.1 设计数据库维护窗体 439
19.11.2 备份数据库 440
19.11.3 还原数据库 441
19.12 小结 442
第20章 Java+SQL Server实现企业进销存管理系统 443
20.1 系统概述 444
20.2 系统设计 444
20.2.1 系统目标 444
20.2.2 系统功能结构 444
20.2.3 系统业务流程图 444
20.3 开发环境 445
20.4 数据库与数据表设计 446
20.4.1 数据库分析 446
20.4.2 主要数据表结构 446
20.5 创建项目 448
20.6 系统文件夹组织结构 449
20.7 公共类设计 450
20.7.1 Item公共类 450
20.7.2 数据模型公共类 451
20.7.3 Dao公共类 453
20.8 系统登录模块设计 459
20.8.1 设计登录窗体 459
20.8.2 “密码”文本框的回车事件 460
20.8.3 “登录”按钮的事件处理 460
20.9 系统主窗体设计 461
20.9.1 设计菜单栏 462
20.9.2 设计工具栏 464
20.9.3 设计状态栏 465
20.10 进货单模块设计 466
20.10.1 设计进货单窗体 466
20.10.2 添加进货商品 467
20.10.3 进货统计 469
20.10.4 商品入库 470
20.11 销售单模块设计 472
20.11.1 设计销售单窗体 472
20.11.2 添加销售商品 473
20.11.3 销售统计 474
20.11.4 商品销售 475
20.12 库存盘点模块设计 476
20.12.1 设计库存盘点窗体 477
20.12.2 读取库存商品 477
20.12.3 统计损益数量 479
20.13 数据库备份与恢复模块设计 480
20.13.1 设计窗体 480
20.13.2 文件浏览 481
20.13.3 备份数据库 481
20.13.4 恢复数据库 482
20.14 小结 483