《跟韩老师学SQL Server数据库设计与开发》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:韩立刚主编;马龙帅,王艳华,韩利辉副主编
  • 出 版 社:北京:中国水利水电出版社
  • 出版年份:2017
  • ISBN:9787517051824
  • 页数:276 页
图书介绍:在软件设计和开发过程中,需求分析确定后,就需要先设计数据库,再开始写代码,本书讲解的内容是软件开发人员必须掌握的技术。先讲解如何根据项目需求按关系型数据库设计规范设计数据库中的表,然后使用自己设计的数据库来学习SQL语句。本书完整地讲述了SQL语句中使用的变量、数据类型、注释行、运算符、常用函数以及流程控制语句。从单表查询开始讲解使用Where筛选行将查询的结果分组、排序,然后讲解多表查询和数据汇总,讲解多表交叉联结、内联结、外联结、自联结,使用Union合并查询结果集,使用聚合函数汇总查询结果,接着讲解了子查询、开窗函数和行列转换技术,实现数据完整性,创建和使用索引优化性能,在数据库中创建和使用视图简化查询,使用存储过程操作数据库,创建用户自定义函数,在SQL语句中使用自定义函数,使用触发器实现复杂的业务逻辑,使用事务实现数据的完整性和一致性。

第1章 关系数据库 1

1.1 关系模型基本概念 1

1.2 E-R模型到关系模型的转化 3

1.3 数据库设计规范 6

1.3.1 第一范式(1NF) 6

1.3.2 第二范式(2NF) 7

1.3.3 第三范式(3NF) 8

第2章 Transact-SQL概述 10

2.1 启动SQL Server Management Studio(SSMS) 10

2.2 T-SQL语句的类型 12

2.2.1 DDL语句 12

2.2.2 DCL语句 13

2.2.3 DML 14

2.3 T-SQL语法要素 16

2.3.1 SQL语句的批处理符号GO 16

2.3.2 EXEC 17

2.3.3 注释符 17

2.3.4 标识符 18

2.4 变量 19

2.5 数据类型 21

2.5.1 字符串类型 21

2.5.2 Unicode字符串类型 23

2.5.3 日期时间类型 23

2.5.4 数值类型 23

2.6 运算符 25

2.6.1 算术运算符 25

2.6.2 比较运算符 25

2.6.3 逻辑运算符 25

2.6.4 连接运算符 26

2.7 常用函数 26

2.7.1 聚合函数 27

2.7.2 数值函数 28

2.7.3 字符串函数 29

2.7.4 日期时间函数 30

2.7.5 数据类型转换函数 31

2.7.6 控制NULL的常用函数 32

2.8 流程控制语句 32

2.8.1 条件判断语句IF...ELSE和CASE 33

2.8.2 循环语句 35

第3章 查询基础 36

3.1 简单查询逻辑处理过程 36

3.2 数据库对象的引用规则 39

3.3 指定表的返回列来筛选列 40

3.4 使用WHERE筛选行 41

3.4.1 使用比较运算符过滤数据 41

3.4.2 搜索范围内的值 41

3.4.3 使用IN指定列表搜索条件 42

3.4.4 使用LIKE关键字进行模糊匹配 42

3.4.5 使用 NULL比较搜索条件 43

3.4.6 筛选时影响性能的注意事项 44

3.5 格式化结果集 44

3.5.1 在选择列表中使用常量、函数和表达式 44

3.5.2 使用别名 45

3.5.3 使用ORDER BY子句对结果排序 46

3.5.4 使用TOP限制结果集 48

3.5.5 使用DISTINCT消除重复行 50

3.6 使用GROUP BY子句和聚集函数进行分组计算 51

3.6.1 在查询中使用聚集函数 51

3.6.2 GROUP BY使用基础 52

3.6.3 使用HAVING子句筛选分组后的数据 53

第4章 多表联接查询和数据汇总 55

4.1 联接基础知识 55

4.1.1 在FROM子句中联接 56

4.1.2 在WHERE子句中联接 56

4.2 交叉联接 57

4.3 内联接 57

4.4 外联接 59

4.4.1 左外联接 59

4.4.2 右外联接 60

4.4.3 完全外部联接 60

4.5 自联接 62

4.5.1 使用同一列进行自联接 62

4.5.2 使用不同列进行自联接 62

4.6 联接查询的逻辑处理过程 64

4.7 多表联接查询 64

4.8 UNION合并结果集 64

4.8.1 UNION和UNION ALL 65

4.8.2 对合并结果集进行排序 66

4.8.3 结果集的合并顺序 66

4.9 汇总数据 67

4.9.1 ROLLUP 67

4.9.2 CUBE 70

4.9.3 使用GROUPING SETS 70

4.9.4 GROUPING查看汇总行并区分NULL 71

第5章 子查询 73

5.1 独立子查询 73

5.1.1 独立标量子查询 74

5.1.2 独立多值子查询 74

5.2 相关子查询 75

5.3 使用IN (NOT IN)和EXISTS (NOT EXISTS)谓词 76

5.3.1 IN和NOT IN 77

5.3.2 EXISTS和NOT EXISTS 77

5.4 表表达式 81

5.4.1 派生表 81

5.4.2 公用表表达式(CTE) 84

第6章 开窗函数和行列转换 89

6.1 窗口和开窗函数 89

6.2 排名窗口函数 90

6.2.1 使用ROW_ NUMBER()进行分区编号 91

6.2.2 使用RANK()和DENSE RANK()进行分区排名 94

6.2.3 使用NTILE()进行数据分组 96

6.3 聚合窗口函数 97

6.4 行列转换 100

6.4.1 行转列 100

6.4.2 列转行 105

第7章 数据修改 109

7.1 插入数据 109

7.1.1 使用INSERT和VALUES插入数据 109

7.1.2 使用SELECTINTO插入数据 110

7.1.3 使用INSERT和SELECT插入数据 111

7.2 删除数据 112

7.2.1 使用DELETE删除行 112

7.2.2 使用TRUNCATE TABLE删除所有行 113

7.3 更新数据 113

7.3.1 使用SET和WHERE更新数据 113

7.3.2 更新基于其他表的数据 113

7.4 使用MERGE合并数据 114

7.5 通过表表达式修改数据 118

第8章 数据完整性 121

8.1 数据完整性的类型和实现方式 121

8.1.1 域完整性及实现方式 122

8.1.2 实体完整性及实现方式 122

8.1.3 参照完整性及实现方式 122

8.2 实现实体完整性 124

8.2.1 使用主键 124

8.2.2 使用UNIQUE约束 127

8.2.3 使用自增列 127

8.3 实现域完整性 131

8.3.1 CHECK约束 131

8.3.2 DEFAULT约束 132

8.3.3 NOT NULL定义 133

8.4 参照完整性 134

8.4.1 实现表间列的参照完整性 134

8.4.2 实现表内列的参照完整性 137

8.5 使用关系图实现参照完整性 138

8.6 使约束失效 141

8.7 使用图形界面实现数据完整性 141

8.7.1 添加主键 141

8.7.2 设置UNIQUE约束 142

8.7.3 设置CHECK约束 142

8.7.4 设置默认值约束 144

8.7.5 设置外键 145

8.7.6 禁用约束 147

第9章 索引 148

9.1 数据的存储方式 149

9.1.1 页(Page) 149

9.1.2 区(Extent) 152

9.1.3 索引分配映射页(IAM页) 152

9.1.4 估算表的大小 153

9.2 B树(Balanced Tree) 154

9.3 查看页内容的工具 156

9.3.1 DBCC IND 156

9.3.2 DBCC PAGE 158

9.4 堆(Heaps) 160

9.5 聚集索引 162

9.5.1 约束与索引的关系 162

9.5.2 唯一聚集索引的物理结构 163

9.5.3 不唯一聚集索引的物理结构 167

9.5.4 使用聚集索引查找数据的执行计划 168

9.6 非聚集索引及其物理结构 169

9.6.1 在堆中的非聚集索引 169

9.6.2 在聚集表中的非聚集索引 172

9.6.3 使用非聚集索引查找数据的执行计划 175

9.7 修改数据对索引结构的影响 176

9.7.1 页拆分和行移动现象 176

9.7.2 插入行 178

9.7.3 删除行 179

9.7.4 更新行 180

9.8 碎片和索引维护 180

9.8.1 碎片 180

9.8.2 维护索引 182

9.9 复合索引 187

9.10 包含列索引 188

9.11 索引交叉 188

9.12 筛选索引 189

9.13 全文搜索 190

9.13.1 创建和修改全文目录 191

9.13.2 创建全文索引 191

9.13.3 全文搜索的查询方法 192

9.14 统计信息 194

9.14.1 了解统计信息的作用 194

9.14.2 查看和分析统计信息 195

9.14.3 创建统计信息 198

9.14.4 更新统计信息 198

9.14.5 同步和异步统计信息更新 200

9.15 基于索引设计的考虑 200

第10章 视图 202

10.1 视图简介 202

10.2 使用标准视图 204

10.2.1 创建标准视图 204

10.2.2 通过视图更新数据 206

10.2.3 修改和删除视图 208

10.3 视图选项 209

10.3.1 使用ENCRYPTION选项 209

10.3.2 使用SCHEMABINDING选项 210

10.3.3 使用CHECK OPTION选项 211

10.4 使用索引视图 212

10.4.1 创建索引视图 213

10.4.2 索引视图的性能 213

10.4.3 更新索引视图 214

10.5 视图的优点 215

第11章 存储过程 216

11.1 存储过程的类型 216

11.1.1 系统存储过程 217

11.1.2 扩展存储过程 217

11.1.3 用户自定义存储过程 217

11.2 SQL存储过程 218

11.2.1 创建无参数的存储过程 218

11.2.2 修改和删除存储过程 220

11.2.3 创建带参数的存储过程 221

11.2.4 获取存储过程的执行结果 223

11.3 存储过程示例分析 224

11.4 存储过程的解析特点 225

11.5 存储过程的编译、重编译 226

11.6 使用存储过程的优缺点 227

第12章 用户自定义函数 229

12.1 UDF简介 229

12.2 标量UDF 230

12.3 内联表值函数 232

12.4 多语句表值函数 233

12.5 UDF的修改和删除 235

12.6 UDF的调用分析 235

第13章 触发器 239

13.1 触发器的概念和分类 239

13.2 DML触发器 240

13.2.1 两张特殊的临时表 240

13.2.2 insert触发器 241

13.2.3 delete触发器 242

13.2.4 update触发器 244

13.2.5 禁用和启用触发器 244

13.2.6 检测基于列修改的触发器 244

13.2.7 FIRST触发器和LAST触发器 245

13.3 使用触发器实现审核跟踪 246

13.4 DML触发器的工作原理和事务控制 246

13.4.1 触发器的工作原理 247

13.4.2 DML触发器的事务控制 248

13.5 DDL触发器 249

13.5.1 创建数据库级别的DDL触发器 249

13.5.2 创建服务器级别的DDL触发器 250

第14章 事务和锁 251

14.1 事务 251

14.1.1 显式事务处理模式 252

14.1.2 自动提交事务模式 253

14.1.3 隐式事务处理模式 253

14.1.4 嵌套事务的控制 254

14.1.5 事务、事务日志和检查点 255

14.2 并发访问引起的问题 257

14.3 锁 260

14.3.1 锁的粒度和锁升级 260

14.3.2 锁的类型和查看锁 261

14.3.3 锁的兼容性 265

14.4 设置事务隔离级别 266

14.4.1 SQL标准定义的4种事务隔离级别 266

14.4.2 行版本的事务隔离级别 271

14.5 隔离级别、锁和并发问题的关系 274

14.6 死锁 275