目 录 第1章 数据库概述和SQL Server 2017开发环境 1 1.1 数据与数据联系的描述 1 1.1.1 信息与数据的描述 1 1.1.2 数据联系的描述 2 1.2 数据模型 2 1.2.1 数据模型的概念 2 1.2.2 关系数据模型简介 3 1.3 数据库与数据库管理系统 4 1.3.1 数据库及数据库系统 4 1.3.2 数据库管理系统 6 1.4 SQL Server 2017开发环境 7 1.4.1 SQL Server 2017系统简介 7 1.4.2 SQL Server 2017的安装 8 1.4.3 SQL Server Management Studio简介 16 习题1 21 第2章 数据库的创建与管理 23 2.1 数据库种类 23 2.2 数据库的存储结构 23 2.2.1 数据库文件 23 2.2.2 文件组 24 2.3 创建学生选课管理数据库 25 2.3.1 使用SQL Server Management Studio 25 2.3.2 使用CREATE DATABASE语句 26 2.3.3 使用模板创建数据库 27 2.4 数据库的管理 28 2.4.1 扩充数据文件和事务日志文件的容量 29 2.4.2 修改数据库的初始大小 31 2.4.3 更改数据库名称 33 2.4.4 数据库的其他操作 34 习题2 40 第3章 数据表的创建和管理 42 3.1 数据表概述 42 3.1.1 表的基本概念 42 3.1.2 SQL Server 2017的数据类型 43 3.1.3 列的属性 44 3.2 创建学生选课数据库的数据表 45 3.2.1 使用SQL Server Management Studio 45 3.2.2 使用CREATE TABLE语句 46 3.3 管理学生选课数据库的数据表 46 3.3.1 查看表结构 46 3.3.2 修改数据表 49 3.3.3 删除数据表 50 3.3.4 重命名数据表 51 3.4 学生选课数据库数据的完整性 52 3.4.1 数据完整性的分类 52 3.4.2 约束概述 53 3.4.3 主键约束 54 3.4.4 外键约束 56 3.4.5 唯一约束 60 3.4.6 检查约束 60 3.4.7 默认值约束 62 3.4.8 约束禁用和启用 63 3.5 数据表中数据的操作 64 3.5.1 插入记录 65 3.5.2 修改记录 68 3.5.3 删除记录 68 习题3 69 第4章 数据查询 70 4.1 SELECT语句 70 4.1.1 SELECT语句的语法格式 70 4.1.2 SELECT语句的执行方式 71 4.2 简单查询 73 4.2.1 SELECT子句 73 4.2.2 INTO子句 80 4.2.3 WHERE子句 80 4.2.4 ORDER BY子句 87 4.2.5 GROUP BY子句 88 4.2.6 HAVING子句 90 4.3 集合查询 92 4.3.1 集合并运算 92 4.3.2 集合交运算 92 4.3.3 集合差运算 93 4.4 连接查询 94 4.4.1 连接查询概述 94 4.4.2 交叉连接 94 4.4.3 内连接 95 4.4.4 自身连接 98 4.4.5 外连接 98 4.5 嵌套查询 101 4.5.1 单值嵌套 102 4.5.2 多值嵌套 103 4.5.3 相关子查询 107 4.6 在数据更新中使用查询语句 108 习题4 111 第5章 数据库编程技术基础 114 5.1 SQL基础 114 5.1.1 Transact-SQL的分类 114 5.1.2 Transact-SQL语法约定 114 5.1.3 Transact-SQL数据库对象命名方法 116 5.1.4 常量 117 5.1.5 变量 117 5.1.6 表达式和运算符 119 5.2 流程控制语句 121 5.3 函数 127 5.3.1 聚合函数 127 5.3.2 数学函数 127 5.3.3 字符串函数 129 5.3.4 日期和时间函数 130 5.3.5 系统函数 131 5.3.6 元数据函数 133 5.3.7 配置函数 134 5.3.8 系统统计函数 134 5.4 游标 135 5.4.1 游标的概念 135 5.4.2 游标的使用 135 5.4.3 游标的应用 137 习题5 140 第6章 视图和索引的应用 141 6.1 视图 141 6.1.1 视图概述 141 6.1.2 创建视图 143 6.1.3 视图的管理 150 6.1.4 视图的应用 155 6.2 索引 156 6.2.1 索引概述 156 6.2.2 创建索引 157 6.2.3 管理索引 160 6.2.4 索引的应用 165 习题6 165 第7章 存储过程的应用 167 7.1 存储过程概述 167 7.1.1 存储过程的概念 167 7.1.2 存储过程的特点 167 7.1.3 存储过程的分类 168 7.2 创建和执行用户存储过程 169 7.2.1 不带参数的存储过程 169 7.2.2 带输入参数的存储过程 172 7.2.3 带输出参数的存储过程 176 7.3 管理存储过程 177 7.3.1 查看存储过程 177 7.3.2 删除用户存储过程 178 7.3.3 修改存储过程 179 7.4 系统存储过程和扩展存储过程 180 7.4.1 系统存储过程 180 7.4.2 扩展存储过程 181 7.5 存储过程的具体应用 183 7.5.1 操作表的存储过程 183 7.5.2 获取信息的存储过程 184 习题7 184 第8章 触发器的应用 186 8.1 触发器概述 186 8.1.1 触发器的作用 186 8.1.2 触发器的分类 186 8.1.3 DML触发器与约束比较 187 8.1.4 INSERTED表和DELETED表 187 8.2 DML触发器 188 8.2.1 创建DML触发器 188 8.2.2 修改触发器 191 8.3 DDL触发器 193 8.4 管理触发器 195 8.4.1 查看触发器 195 8.4.2 删除触发器 196 8.4.3 禁用或启用触发器 196 8.5 触发器应用举例 198 习题8 201 第9章 数据库安全性管理 202 9.1 SQL Server 2017的安全机制 202 9.2 服务器安全的管理 203 9.2.1 身份验证模式 203 9.2.2 创建登录名 203 9.3 数据库用户的管理 211 9.3.1 默认用户 212 9.3.2 添加数据库用户 214 9.4 权限的管理 217 9.4.1 授权的安全对象 218 9.4.2 权限类别 218 9.4.3 权限管理 219 9.5 角色管理 222 9.5.1 服务器角色 222 9.5.2 数据库角色 224 习题9 230 ? 第10章 SQL Server 2017数据库的日常维护 232 10.1 日常维护概述 232 10.2 数据库的备份和还原 232 10.2.1 备份数据库 232 10.2.2 还原数据库 237 10.3 使用Transact-SQL语句进行数据库的备份和恢复 240 10.3.1 用Transact-SQL语句备份数据库 240 10.3.2 用Transact-SQL语句恢复数据库 241 10.4 数据导出和导入 242 10.4.1 数据导出 242 10.4.2 数据导入 247 习题10 251 第11章 数据库应用系统开发基础 252 11.1 ADO.NET 252 11.1.1 ADO.NET概述 252 11.1.2 ADO.NET组件 252 11.1.3 使用ADO.NET开发数据库应用程序的一般步骤 253 11.1.4 ADO.NET的对象 253 11.2 数据源控件 268 11.2.1 SqlDataSource数据源控件 269 11.2.2 AccessDataSource数据源控件 273 11.2.3 SiteMapDataSource数据源控件 273 11.3 开发学生上机签到系统 273 11.3.1 数据库应用系统开发过程概述 273 11.3.2 设计学生上机签到系统 274 习题11 283 第12章 关系规范化与数据库设计 285 12.1 关系数据库规范化理论简介 285 12.1.1 函数依赖 285 12.1.2 关系规范化 287 12.2 关系数据库的设计 289 12.2.1 数据库设计概述 289 12.2.2 概念设计 290 12.2.3 逻辑设计 291 12.2.4 物理设计 293 习题12 293 附录A 上机练习 295 参考文献 305