第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 常见的数据模型 4
1.2.3 规范化关系数据库 6
1.2.4 设计关系数据库 6
1.2.5 实体间的关系 6
1.3 数据库的体系结构 7
1.3.1 数据库三级模式结构 7
1.3.2 三级模式之间的映射 8
1.4 介绍几种关系数据库 8
1.4.1 Access数据库 8
1.4.2 SQL Server 2005数据库 9
1.4.3 SQL Server 2008数据库 9
1.4.4 SQL Server 2012数据库 9
1.4.5 Oracle数据库 10
1.5 本章小结 10
第2章 搭建SQL Server 2012开发环境 11
2.1 简述SQL Server 2012 12
2.1.1 SQL Server 2012的概貌 12
2.1.2 SQL Server 2012的特性 12
2.2 SQL Server 2012开发环境 13
2.2.1 为SQL Server 2012配置安装环境 13
2.2.2 安装SQL Server 2012 14
2.2.3 卸载SQL Server 2012 23
2.3 启动SQL Server 2012服务 24
2.3.1 后台启动服务 24
2.3.2 通过配置管理器启动 25
2.4 注册SQL Server 2012服务器 26
2.4.1 创建与删除服务器组 26
2.4.2 注册与删除服务器 28
2.5 本章小结 30
第3章 数据库和数据表的使用 31
3.1 数据库概述 32
3.1.1 几个数据库相关概念 32
3.1.2 常用数据库对象 33
3.1.3 数据库组成部分 33
3.1.4 4个系统数据库 34
3.2 规范化SQL Server的命名 35
3.2.1 标识符命名规则 35
3.2.2 对象命名规则 36
3.2.3 实例命名规则 37
3.3 数据库相关操作 37
3.3.1 创建数据库 37
3.3.2 修改数据库 41
3.3.3 删除数据库 44
3.4 使用数据表 46
3.4.1 以界面方式操作数据表 47
3.4.2 使用CREATE TABLE语句创建表 48
3.4.3 创建、修改和删除约束 51
3.4.4 使用ALTER TABLE语句修改表结构 59
3.4.5 使用DROP TABLE语句删除表 61
3.5 管理数据 61
3.5.1 使用INSERT语句添加数据 62
3.5.2 使用UPDATE语句修改数据 62
3.5.3 使用DELETE语句删除数据 64
3.6 建立表间对应关系 64
3.6.1 一对一关系 65
3.6.2 一对多关系 66
3.6.3 多对多关系 67
3.7 综合应用 67
3.7.1 批量插入数据 67
3.7.2 查看表信息 68
3.8 本章常见错误 69
3.8.1 创建外键约束失败 69
3.8.2 数据库被使用导致无法删除 69
3.8.3 修改数据表属性失败 69
3.9 本章小结 70
3.10 跟我上机 70
第4章 SQL Server基础 71
4.1 T-SQL语言基础 72
4.1.1 T-SQL语言的组成 72
4.1.2 T-SQL语句结构 73
4.2 SQL中的常量与变量 74
4.2.1 字符串常量 74
4.2.2 二进制常量 75
4.2.3 bit常量 75
4.2.4 日期和时间常量 75
4.2.5 定义局部变量 75
4.2.6 使用全局变量 77
4.3 注释符、运算符与通配符 79
4.3.1 注释符(Annotation) 79
4.3.2 运算符(Operator) 80
4.3.3 通配符(Wildcard) 84
4.4 控制程序执行流程 84
4.4.1 BEGIN...END语句 84
4.4.2 IF判断 85
4.4.3 IF...ELSE选择 86
4.4.4 CASE函数 88
4.4.5 WHILE循环 90
4.4.6 WHILE...CONTINUE...BREAK 91
4.4.7 RETURN退出 92
4.4.8 GOTO跳转 93
4.4.9 WAITFOR挂起 93
4.5 调用聚合函数 94
4.5.1 聚合函数概述 94
4.5.2 SUM(求和)函数 94
4.5.3 AVG(平均值)函数 95
4.5.4 MIN(最小值)函数 96
4.5.5 MAX(最大值)函数 97
4.5.6 COUNT(统计)函数 99
4.5.7 DISTINCT(取不重复记录)函数 100
4.5.8 HAVING(查询重复记录)函数 100
4.6 掌握数学函数的使用 101
4.6.1 数学函数概述 102
4.6.2 ABS(绝对值)函数 102
4.6.3 PI(圆周率)函数 103
4.6.4 POWER(乘方)函数 103
4.6.5 RAND(随机浮点数)函数 104
4.6.6 ROUND(四舍五入)函数 104
4.6.7 SQUARE(平方)函数和SQRT(平方根)函数 105
4.6.8 三角函数 106
4.7 字符串函数 108
4.7.1 字符串函数概述 108
4.7.2 ASCII(获取ASCII码)函数 109
4.7.3 CHARINDEX(返回字符串的起始位置)函数 110
4.7.4 LEFT(取左边指定个数的字符)函数 111
4.7.5 RIGHT(取右边指定个数的字符)函数 112
4.7.6 LEN(返回字符个数)函数 112
4.7.7 REPLACE(替换字符串)函数 113
4.7.8 REVERSE(返回字符表达式的反转)函数 113
4.7.9 STR函数 114
4.7.10 SUBSTRING(取字符串)函数 115
4.8 日期和时间函数 116
4.8.1 日期和时间函数简述 116
4.8.2 GETDATE(返回当前系统日期和时间)函数 116
4.8.3 DAY(返回指定日期的天)函数 117
4.8.4 MONTH(返回指定日期的月)函数 117
4.8.5 YEAR(返回指定日期的年)函数 118
4.8.6 DATEDIFF(返回日期和时间的边界数)函数 118
4.8.7 DATEADD(添加日期时间)函数 119
4.9 转换函数 120
4.9.1 转换函数概述 120
4.9.2 CAST函数 121
4.9.3 CONVERT函数 122
4.10 元数据函数 123
4.10.1 元数据函数简介 123
4.10.2 COL_LENGTH函数 124
4.10.3 COL_NAME函数 125
4.10.4 DB_NAME函数 125
4.11 综合应用 126
4.11.1 查看商品信息表中价格最贵的记录 126
4.11.2 使用GROUPING SETS组合多个分组结果集 126
4.12 本章常见错误 127
4.12.1 有约束冲突却不提示错误信息 127
4.12.2 T-SQL和SQL有什么区别 127
4.13 本章小结 127
4.14 跟我上机 128
第5章 查询数据表记录 129
5.1 编写SELECT语句 130
5.1.1 SELECT语句基本语法 130
5.1.2 指定公用表表达式 131
5.1.3 SELECT...FROM子句 132
5.1.4 INTO插入数据 136
5.1.5 指定搜索条件 136
5.1.6 GROUP BY子句 147
5.1.7 HAVING子句 148
5.1.8 指定排列顺序 149
5.1.9 去掉重复的记录 150
5.1.10 TOP显示指定行 150
5.2 合并多个查询结果 151
5.2.1 区别合并与联接 151
5.2.2 使用UNION ALL合并表 152
5.2.3 在UNION 中使用orderby 153
5.2.4 自动转换数据类型 153
5.2.5 合并不同类型的数据 154
5.2.6 合并列数不同的表 155
5.2.7 使用UNION合并多表 156
5.3 子查询与嵌套查询 156
5.3.1 子查询概述 156
5.3.2 嵌套查询简介 157
5.3.3 简单嵌套查询 157
5.3.4 带IN的嵌套查询 158
5.3.5 带NOT IN的嵌套查询 159
5.3.6 带SOME的嵌套查询 159
5.3.7 带ANY的嵌套查询 160
5.3.8 带ALL的嵌套查询 160
5.3.9 带EXISTS的嵌套查询 160
5.4 建立联接 161
5.4.1 实现内部联接 161
5.4.2 创建外部联接 162
5.4.3 交叉联接两个表 164
5.4.4 联接多表 165
5.5 综合应用 167
5.5.1 学生信息表中按学生的姓氏笔画重新排序 167
5.5.2 利用模糊查询进行区间查询 167
5.5.3 按照升序排列前三的数据 168
5.6 本章常见错误 168
5.6.1 在SELECT中使用GROUP BY出错 168
5.6.2 区分NULL和0值 169
5.6.3 多表连接时,注意要加条件约束 169
5.6.4 注意指定字段的所属表 169
5.7 本章小结 169
5.8 跟我上机 169
第6章 掌握数据库视图的使用 171
6.1 视图概述 172
6.2 视图的分类与操作 172
6.2.1 以界面方式操作视图 172
6.2.2 使用CREATE VIEW语句创建视图 174
6.2.3 使用ALTER VIEW语句修改视图 176
6.2.4 使用DROP VIEW语句删除视图 178
6.2.5 使用存储过程sp_rename修改视图 179
6.3 通过视图操作数据 179
6.3.1 从视图中浏览数据 179
6.3.2 向视图中添加数据 180
6.3.3 修改视图中的数据 181
6.3.4 删除视图中的数据 181
6.4 综合应用 181
6.4.1 使用视图过滤数据 181
6.4.2 使用sp_helptext获取视图信息 182
6.5 本章常见错误 183
6.5.1 创建视图失败 183
6.5.2 创建视图提示基表无效 183
6.5.3 不能通过视图来更新数据有哪些原因 183
6.6 本章小结 183
6.7 跟我上机 184
第2篇 提高篇 186
第7章 为数据表创建索引 186
7.1 简述索引 187
7.2 索引的优缺点 187
7.2.1 索引的优点 187
7.2.2 索引的缺点 187
7.3 索引的分类 188
7.3.1 聚集索引的实现原理 188
7.3.2 非聚集索引的实现原理 188
7.4 索引的使用 189
7.4.1 创建索引 189
7.4.2 查看索引信息 192
7.4.3 修改索引 193
7.4.4 销毁索引 194
7.4.5 设置索引的选项 195
7.5 分析与维护索引 198
7.5.1 索引的分析 198
7.5.2 索引的维护 200
7.6 全文索引和全文目录 203
7.6.1 使用企业管理器启用全文索引 203
7.6.2 使用Transact-SQL语句启用全文索引 205
7.6.3 使用Transact-SQL语句删除全文索引 207
7.6.4 全文目录相关操作 208
7.6.5 维护全文目录 211
7.7 认识数据完整性 213
7.7.1 实现域完整性 214
7.7.2 实体完整性 214
7.7.3 引用完整性 216
7.7.4 用户定义完整性 216
7.8 综合应用 217
7.8.1 使用视图索引查询数据 217
7.8.2 创建多字段非聚集索引检索数据 217
7.9 本章常见错误 218
7.9.1 创建聚集索引出错 218
7.9.2 混淆全文索引和全文目录 218
7.10 本章小结 218
7.11 跟我上机 219
第8章 利用存储过程批处理SQL语句 220
8.1 存储过程简介 221
8.1.1 存储过程分类 221
8.1.2 存储过程的优点 221
8.1.3 存储过程的分类 222
8.2 创建存储过程 222
8.2.1 使用向导创建存储过程 222
8.2.2 通过CREATE PROC语句创建存储过程 224
8.3 管理存储过程 225
8.3.1 执行一个存储过程 225
8.3.2 查看存储过程 226
8.3.3 修改存储过程 228
8.3.4 重命名存储过程 230
8.3.5 删除存储过程 232
8.4 综合应用 233
8.4.1 在存储过程中使用事务 233
8.4.2 创建加密存储过程 234
8.5 本章常见错误 235
8.5.1 带回传参数的存储过程没有带回结果 235
8.5.2 创建存储过程有哪些注意事项 235
8.6 本章小结 236
8.7 跟我上机 236
第9章 应用触发器优化查询 237
9.1 触发器概述 238
9.2 触发器的优点与分类 238
9.2.1 触发器的优点 238
9.2.2 触发器的分类 238
9.3 创建触发器 239
9.3.1 创建DML触发器 239
9.3.2 建立DDL触发器 240
9.3.3 创建登录触发器 242
9.4 管理触发器 244
9.4.1 查看触发器 244
9.4.2 修改触发器 245
9.4.3 重命名触发器 248
9.4.4 禁用和启用触发器 248
9.4.5 删除触发器 250
9.5 综合应用 252
9.5.1 创建递归触发器,实现只允许一次删除一条记录 252
9.5.2 使用触发器向数据库的表中添加数据 252
9.6 本章常见错误 253
9.6.1 修改数据表失败,提示未提交数据 253
9.6.2 触发器的递归调用方式 253
9.7 本章小结 254
9.8 跟我上机 254
第10章 游标的使用 255
10.1 游标简介 256
10.1.1 游标的实现过程 256
10.1.2 游标分类 256
10.2 游标的相关操作 257
10.2.1 声明游标 257
10.2.2 使用OPEN打开游标 260
10.2.3 读取游标中的数据 261
10.2.4 关闭游标 263
10.2.5 释放游标 264
10.3 查看游标属性 264
10.3.1 使用sp_cursor_list查看 265
10.3.2 通过sp_describe_cursor查看 266
10.4 综合应用 268
10.4.1 利用游标在商品表中返回指定商品行数据 268
10.4.2 用索引改变游标中表的行顺序 268
10.5 本章常见错误 269
10.5.1 打开游标使用之后忘记关闭和释放游标 269
10.5.2 为什么要避免使用游标 269
10.6 本章小结 270
10.7 跟我上机 270
第11章 通过事务修改数据 271
11.1 简述事务 272
11.2 事务模式 272
11.2.1 定义显式事务 273
11.2.2 设置隐式事务 274
11.2.3 在API中控制隐式事务 274
11.2.4 提交和回滚事务 275
11.3 事务的使用 275
11.3.1 开始事务 275
11.3.2 结束事务 276
11.3.3 回滚事务 277
11.3.4 事务的工作机制 278
11.3.5 自动提交事务 278
11.3.6 事务的并发问题 279
11.3.7 隔离级别 280
11.4 锁的概念 283
11.4.1 了解SQLServer锁的运行机制 283
11.4.2 锁有哪些模式 283
11.4.3 锁的粒度 285
11.4.4 查看锁的相关信息 285
11.4.5 死锁 286
11.5 分布式事务 287
11.5.1 分布式事务概述 288
11.5.2 分布式事务的创建 288
11.5.3 分布式处理协调器 289
11.6 综合应用 289
11.6.1 使用事务对表进行添加和查询操作 289
11.6.2 使用事务完成对表的修改操作 289
11.7 本章常见错误 290
11.7.1 无法回滚,找不到该事务或保存点 290
11.7.2 事务提交不起作用 290
11.7.3 事务读取到的值与数据库的值不一致 290
11.7.4 遇到死锁情况怎么办 291
11.8 本章小结 291
11.9 跟我上机 291
第12章 数据库的维护管理 292
12.1 数据库的脱机与联机 293
12.1.1 实现数据库脱机 293
12.1.2 使数据库联机 293
12.2 数据库的分离和附加 294
12.2.1 分离数据库 294
12.2.2 附加数据库 295
12.3 导入/导出数据 295
12.3.1 导入SQL Server数据表 296
12.3.2 导入其他数据源的数据 299
12.3.3 导出SQL Server数据表 304
12.4 备份和恢复数据库 308
12.4.1 有哪些备份类型 308
12.4.2 选择恢复模式 308
12.4.3 创建数据库备份 309
12.4.4 恢复数据库 311
12.5 收缩数据库和文件 313
12.5.1 自动收缩数据库 313
12.5.2 手动收缩数据库 314
12.6 SQL脚本的生成与执行 316
12.6.1 生成数据库脚本文件 316
12.6.2 生成数据表脚本文件 317
12.6.3 执行SQL脚本 318
12.7 数据库维护计划 318
12.8 综合应用 321
12.8.1 查看用户创建的所有数据库 321
12.8.2 备份数据库 321
12.9 本章常见错误 322
12.9.1 数据库恢复失败 322
12.9.2 分离和附加数据库时,需要注意的问题 322
12.10 本章小结 322
12.11 跟我上机 323
第13章 数据库的安全机制 324
13.1 数据库安全概述 325
13.2 数据库登录管理 325
13.2.1 选择验证模式 325
13.2.2 管理登录账号 325
13.2.3 更改登录验证方式 334
13.2.4 设置密码 335
13.3 用户及权限管理 336
13.3.1 创建与删除数据库用户 336
13.3.2 设置服务器角色权限 337
13.4 综合应用 339
13.4.1 创建数据库用户账户 339
13.4.2 设置数据库的访问权限 340
13.5 本章常见错误 341
13.5.1 数据库附加失败 341
13.5.2 服务器‘XX’上的MSDTC不可用 341
13.5.3 SQL Express无法连接对象实例 342
13.6 本章小结 342
13.7 跟我上机 342
第3篇 实战篇 344
第14章 SQL Server在C#开发中的应用——企业人事管理系统 344
14.1 开发背景 345
14.2 需求分析 345
14.3 系统设计 345
14.3.1 系统目标 345
14.3.2 系统功能结构 345
14.3.3 系统预览 346
14.3.4 业务流程图 348
14.3.5 编码规则 349
14.3.6 程序运行环境 349
14.3.7 数据库设计 350
14.3.8 文件夹组织结构 357
14.4 公共类设计 358
14.4.1 MyMeans公共类 358
14.4.2 MyModule公共类 360
14.5 登录模块设计 370
14.5.1 登录模块概述 370
14.5.2 登录模块技术分析 370
14.5.3 登录模块实现过程 371
14.6 主窗体设计 372
14.6.1 主窗体概述 372
14.6.2 主窗体技术分析 374
14.6.3 主窗体实现过程 374
14.6.4 单元测试 376
14.7 人事档案浏览模块设计 377
14.7.1 人事档案浏览窗体概述 377
14.7.2 人事档案浏览技术分析 378
14.7.3 人事档案浏览实现过程 379
14.7.4 单元测试 385
14.8 人事资料查询模块设计 386
14.8.1 人事资料查询窗体概述 386
14.8.2 人事资料查询窗体技术分析 387
14.8.3 人事资料查询窗体实现过程 388
14.9 开发常见问题与解决 390
14.9.1 文本框只能输入数字或单精度 390
14.9.2 在数据库中存取图片 391
14.10 本章总结 392
第15章 SQL Server在Java开发中的应用——企业进销存管理系统 393
15.1 需求分析 394
15.2 系统设计 394
15.2.1 系统目标 394
15.2.2 系统功能结构 394
15.2.3 系统业务流程图 395
15.2.4 系统编码规范 395
15.3 系统开发及运行环境 397
15.4 数据库与数据表设计 397
15.4.1 数据库分析 398
15.4.2 创建数据库 398
15.4.3 创建数据表 399
15.5 系统文件夹组织结构 403
15.6 公共类设计 403
15.6.1 数据模型公共类 403
15.6.2 Dao公共类 405
15.7 登录模块设计 411
15.7.1 设计登录布局文件 412
15.7.2 “密码”文本框的回车事件 413
15.7.3 “登录”按钮的事件处理 413
15.8 系统主窗体设计 414
15.8.1 设计菜单栏 415
15.8.2 设计工具栏 417
15.8.3 设计状态栏 418
15.9 进货单模块设计 419
15.9.1 设计进货单窗体 420
15.9.2 添加进货商品 420
15.9.3 进货统计 422
15.9.4 商品入库 423
15.10 销售单模块设计 425
15.10.1 设计销售单窗体 426
15.10.2 添加销售商品 426
15.10.3 销售统计 427
15.10.4 商品销售 428
15.11 库存盘点模块设计 429
15.11.1 设计库存盘点窗体 430
15.11.2 读取库存商品 430
15.11.3 统计损益数量 432
15.12 数据库备份与恢复模块设计 433
15.12.1 设计窗体 433
15.12.2 文件浏览 434
15.12.3 备份数据库 435
15.12.4 恢复数据库 435
15.13 运行项目 436
15.14 开发常见问题与解决 438
15.14.1 数据库无法访问 438
15.14.2 打包的JAR文件无法登录 439
15.14.3 数据库还原不成功 440
15.14.4 数据库只读 440
15.14.5 无法打开内部窗体 441
15.14.6 “关于”界面被其他窗体覆盖 441
15.14.7 打包JAR文件之后无法运行 441
15.14.8 程序运行后没有出现闪屏界面 442
15.15 本章小结 442