内容简介
SQL是英文Structured Query Language的缩写,中文通常称为“结构化查询语言”。按照ANSI(American National Standards Institute,美国国家标准协会)的规定,SQL是关系型数据库系统的标准语言。使用SQL语句可以执行各种各样的操作,如更新数据库中的数据、从数据库中提取数据等。
SQL Server 2016在SQL Server 2012版本的基础上,又推出了许多新的特性和关键的改进,使得它成为迄今为止的最强大和最全面的SQL Server版本。《SQL Server 2016 数据库入门与应用》将对SQL Server 2016进行介绍,从实用和实际的角度,深入浅出地分析它的各个要点。
《SQL Server 2016 数据库入门与应用》共分为14章,第1~13章的主要内容包括:SQL Server 2016发展史、SQL Server 2016新特性、SQL Server 2016如何安装、sqlcmd工具的使用、系统数据库、自定义数据库、数据库的组成、创建和修改数据库、数据库快照、数据表的创建和修改、管理数据表、操作表数据、SELECT语法、简单查询、条件查询、模糊查询、分组查询、排序查询、子查询、多表连接、内连接、外连接、交叉连接、联合查询、T-SQL语言分类、变量、常量、运算符、表达式、流程控制语句、系统函数、自定义函数、SQL注释、XML数据类型、XML查询模式、XML索引、XML DML操作、视图、游标、存储过程、触发器、索引、事务、锁定、安全机制分类、账户管理、角色管理、权限管理、数据库备份、数据库恢复、压缩数据库、附加数据库等,第14章将各章介绍的主要知识点结合起来,开发一个医院预约挂号系统。
《SQL Server 2016 数据库入门与应用》可以作为高等院校计算机相关专业SQL Server数据库设计课程的教材,也可以作为SQL Server设计的培训教材,还可以作为自学者的参考书。
前言
Microsoft SQL Server 2016是微软公司发布的新一代数据平台产品,全面支持云技术与平台,并且能够快速构建相应的解决方案,实现私有云与公有云之间数据的扩展与应用的迁移。全新一代的SQL Server 2016为用户带来更好的体验,独特的产品优势定能使用户获益良多。
为了使广大学生和工作者能真正掌握SQL Server 2016技术,作者根据多年的程序开发和SQL Server授课经验,精心编写了本书。本书并不单纯从知识角度来讲解SQL Server数据库设计,而是从实践和解决开发问题的角度来介绍SQL Server数据库,在编写的过程中,注重把SQL Server数据库的重点、难点、要点和编程中常见的问题融合在一起进行讲解。
本书编写思路清晰、内容翔实、案例实用,详细介绍使用SQL Server数据库开发设计的方方面面。本书可作为计算机软件以及其他计算机相关专业的教材,也可以作为SQL Server数据库编程人员的参考书。
本书内容
全书共分14章,主要内容如下。
第1章 数据库和SQL Server 2016。本章从数据库的概念开始,简要介绍关系数据库及其范式。然后介绍SQL Server的发展史,并讲解SQL Server 2016的新特性和安装过程以及安装后的简单应用,最后介绍sqlcmd工具的使用。
第2章 管理SQL数据库。本章详细介绍如何管理SQL Server 2016数据库,如数据库的创建、数据库名称的修改、数据库的删除、数据库的组成部分等内容。在介绍这些内容前,首先需要了解SQL Server 2016的系统数据库。
第3章 管理SQL数据表。本章详细介绍SQL数据表的管理,主要介绍表的概念、特点,如何创建、删除、修改表结构,以及如何为表添加各种约束、键等内容。
第4章 SQL数据简单查询。本章介绍如何通过SELECT语句针对数据表的数据简单查询。
第5章 SQL高级查询。本章为读者介绍SQL Server的高级查询语句,首先从子查询开始介绍,然后再介绍如何实现多表连接查询、内连接查询、外连接查询、交叉连接查询等内容。第6章 T-SQL语言编程基础。本章详细介绍T-SQL语言编程基础的有关内容,首先从T-SQL的特点、语言分类开始介绍,接着依次介绍常量、变量、运算符、表达式、流程控制语句、内置函数、自定义函数、SQL注释等内容,最后以一个综合的实践案例结束本章。
第7章 XML查询技术。本章详细介绍SQL Server 2016中如何通过XML技术查询数据,主要内容包含XML数据类型、XML类型方法、XQuery技术、XML高级查询等。
第8章 视图和游标。本章详细介绍视图和游标,例如视图的分类、优缺点,以及如何创建、修改、删除和查看视图,游标的声明、打开、读取、关闭等内容。
第9章 存储过程。本章详细介绍存储过程的知识,例如存储过程的分类、常用的系统存储过程、无参存储过程和有参存储过程的创建与使用等。
第10章 触发器。本章主要介绍SQL Server 2016触发器,包含触发器的概念、分类、执行环境、创建语法、修改以及删除等多项内容。
第11章 SQL Server高级特性。本章详细介绍索引、事务、锁定的有关知识,包含索引作用、索引分类、创建索引、复合索引、修改索引、删除索引、事务的ACID属性、事务分类、事务处理语句、事务隔离级别、锁定粒度、锁定模式等多项内容。
第12章 数据库安全机制。SQL Server 2016提供了非常强大的内置安全性和数据库保护来实现数据安全,数据库安全机制涉及用户、角色、权限等多个与安全性有关的概念,本章将详细介绍这些知识。
第13章 数据库的备份和恢复。本章详细介绍数据库文件的备份和恢复操作,除此之外,还将提到数据附加和数据库复制操作。
第14章 医院预约挂号系统数据库设计。本章以医院网上预约系统为背景进行需求分析,然后在SQL Server 2016中实现。包括数据库的创建、创建表和视图,并在最后模拟实现常见业务的办理。
本书特色
本书中大量内容来自真实的程序范例,使读者更容易掌握SQL Server数据库的开发。本书难度适中,内容由浅入深,实用性强,覆盖面广,条理清晰。
知识点全
本书紧密围绕SQL Server数据库展开讲解,具有很强的逻辑性和系统性。
实例丰富
书中各实例均经过作者的精心设计和挑选,它们都是根据作者在实际开发中的经验总结而来,涵盖了实际开发中遇到的各种问题。
应用广泛
对于精选案例,给出了详细步骤,结构清晰简明,分析深入浅出,而且有些程序能够直接在项目中使用,避免读者进行二次开发。
基于理论,注重实践
在讲述过程中,不仅介绍理论知识,而且在合适位置安排综合应用实例,或者小型应用程序,将理论应用到实践中,来增强读者的实际应用能力,巩固学到的知识。
贴心的提示
为了便于读者阅读,全书还穿插着一些技巧、提示等小贴士,体例约定如下。
提示:通常是一些贴心的提醒,让读者加深印象或取得建议,或获得解决问题的方法。
注意:提出学习过程中需要特别注意的一些知识点和内容,或相关信息。
技巧:通过简短的文字,指出知识点在应用时的一些小窍门。
读者对象
本书适合作为软件开发入门者的自学用书,也适合作为高等院校相关专业的教学参考书,还可供开发人员查阅、参考。
● SQL Server 数据库开发入门者。
● SQL Server 数据库的初学者以及在校学生。
● 各大中专院校的在校学生和相关授课老师。
● 准备从事与SQL Server 数据库技术相关的人员。
本书由李艳丽、靳智良编著,其他参与编写的人员还有郑志荣、侯艳书、刘利利、侯政洪、肖进、李海燕、侯政云、祝红涛、崔再喜、贺春雷等,在此表示感谢。在本书的编写过程中,我们力求精益求精,但难免存在一些不足之处,敬请广大读者批评指正。
编 者
目录
第1章 数据库和SQL Server 20161.1 什么是数据库 21.1.1 数据库概述 21.1.2 数据库模型 21.2 了解关系型数据库 31.2.1 数据库组成 31.2.2 常见术语 41.2.3 完整性规则 51.3 范式理论和E-R模型 51.3.1 范式理论 61.3.2 E-R模型 71.4 SQL Server 2016概述 81.4.1 SQL Server 2016发展史 91.4.2 SQL Server 2016的功能 91.5 安装和运行SQL Server 2016 121.5.1 安装SQL Server 2016 121.5.2 运行SQL Server 2016 181.6 验证SQL Server 2016安装 191.6.1 查看服务 191.6.2 注册服务器 201.6.3 配置身份验证模式 211.7 实践案例:使用sqlcmd工具执行SQL查询 221.8 练习题 23第2章 管理SQL数据库2.1 SQL Server 2016数据库概述 262.1.1 SQL系统数据库 262.1.2 文件和文件组 272.1.3 数据库状态和文件状态 282.2 数据库的组成 292.2.1 表 292.2.2 视图 292.2.3 存储过程 302.2.4 触发器 302.2.5 其他组成部分 302.3 创建数据库 312.3.1 图形界面创建 312.3.2 T-SQL语句创建 332.4 管理数据库 342.4.1 查看数据库信息 342.4.2 修改数据库名称 362.4.3 修改数据库大小 372.4.4 删除数据库 382.4.5 收缩数据库 392.5 数据库快照 402.5.1 快照概述 402.5.2 创建快照 402.5.3 数据库快照的限制 412.6 实践案例:创建超市会员管理系统数据库 412.7 练习题 43第3章 管理SQL数据表3.1 表概述 463.1.1 什么是表 463.1.2 系统表和临时表 473.1.3 表的数据类型 483.1.4 表结构设计 523.2 图形界面创建表 523.2.1 创建表 533.2.2 修改表结构 543.2.3 删除表 553.3 命令语句创建表 563.3.1 CREATE TABLE语句 563.3.2 ALTER TABLE语句 593.3.3 为表创建约束 603.3.4 DROP TABLE语句 643.4 操作表数据 643.4.1 添加数据 643.4.2 修改数据 673.4.3 删除数据 683.4.4 实践案例:界面方式操作数据 703.5 实践案例:完善超市管理系统的商品数据表 713.6 练习题 74第4章 SQL数据简单查询4.1 简单查询 784.1.1 SELECT语句 784.1.2 查询全部行和列 784.1.3 查询部分列 794.1.4 为列指定别名 804.1.5 查询前几行 804.1.6 查询不重复数据 814.1.7 实践案例:查询数据时使用计算列 824.2 条件查询 834.2.1 比较条件 834.2.2 逻辑条件 844.3 模糊查询 854.3.1 LIKE查询 854.3.2 IS NULL查询 864.3.3 BETWEEN查询 874.3.4 IN查询 884.4 分组查询 894.4.1 单列分组查询 894.4.2 多列分组查询 914.4.3 HAVING条件 924.4.4 条件比较排序 934.5 实践案例:查询用户信息 954.6 练习题 96第5章 SQL高级查询5.1 子查询 1005.1.1 简单子查询 1005.1.2 IN(NOT IN)子查询 1015.1.3 EXISTS子查询 1025.1.4 实践案例:嵌套子查询 1035.2 多表连接 1045.2.1 连接语法 1045.2.2 使用别名 1055.2.3 使用JOIN关键字连接查询 1065.3 内连接查询 1065.3.1 语法格式 1065.3.2 等值连接 1075.3.3 非等值连接 1085.4 外连接查询 1095.4.1 外连接介绍 1095.4.2 左外连接 1095.4.3 右外连接 1105.4.4 全外连接 1115.5 交叉连接 1125.6 联合查询 1135.7 实践案例:自连接查询 1155.8 实践案例:查询超市商品的具体信息 1155.9 练习题 117第6章 T-SQL语言编程基础6.1 了解T-SQL语言编程 1206.1.1 什么是T-SQL 1206.1.2 T-SQL语言分类 1206.2 常量和变量 1216.2.1 常量 1216.2.2 变量 1226.3 运算符和表达式 1256.3.1 运算符 1256.3.2 运算符优先级 1296.3.3 表达式 1296.4 流程控制语句 1306.4.1 BEGIN-END语句块 1306.4.2 IF-ELSE条件语句 1306.4.3 CASE多重分支语句 1326.4.4 GOTO语句 1346.4.5 常用循环语句 1356.4.6 RETURN语句 1366.4.7 延迟语句 1366.4.8 异常处理语句 1376.5 系统函数 1386.5.1 系统函数分类 1386.5.2 数学函数 1396.5.3 字符串函数 1406.5.4 数据类型转换函数 1416.5.5 日期和时间函数 1426.6 用户自定义函数 1446.6.1 创建语法 1446.6.2 标量值函数 1456.6.3 表值函数 1466.6.4 实践案例:创建切割字符串的表值函数 1486.7 SQL注释 1496.7.1 单行注释 1506.7.2 多行注释 1506.8 实践案例:通过流程控制语句输出菱形 1506.9 练习题 151第7章 XML查询技术7.1 XML数据类型 1547.1.1 了解XML数据类型 1547.1.2 使用XML数据类型 1547.1.3 XML类型限制 1557.1.4 XML类型方法 1557.2 XQuery简介 1597.3 XML查询模式 1607.3.1 RAW模式 1607.3.2 AUTO模式 1627.3.3 EXPLICIT模式 1637.3.4 PATH模式 1657.4 实践案例:嵌套查询 1677.5 XML高级查询 1687.5.1 XML索引 1687.5.2 OPENXML()函数 1707.5.3 XML DML 1727.6 练习题 174第8章 视图和游标8.1 视图 1788.1.1 了解视图 1788.1.2 视图优点 1788.1.3 视图分类 1798.2 SQL语句操作视图 1818.2.1 创建视图 1818.2.2 查看视图 1838.2.3 修改视图 1848.2.4 命名视图 1858.2.5 删除视图 1858.3 SQL语句操作数据 1868.3.1 插入数据 1868.3.2 修改数据 1888.3.3 删除数据 1898.4 实践案例:图形界面工具操作视图 1908.5 SQL语句操作游标 1928.5.1 声明游标 1938.5.2 打开游标 1948.5.3 读取游标 1958.5.4 关闭游标 1978.5.5 删除游标 1988.6 实践案例:利用游标更新和删除数据 1998.7 练习题 201第9章 存储过程9.1 什么是存储过程 2049.1.1 存储过程的优点 2049.1.2 存储过程的分类 2049.1.3 系统存储过程 2059.2 调用存储过程 2069.2.1 调用语法介绍 2069.2.2 常用系统存储过程 2079.3 创建存储过程 2089.3.1 创建语法和限制 2089.3.2 普通存储过程 2099.3.3 加密存储过程 2109.3.4 临时存储过程 2119.3.5 实践案例:嵌套存储过程 2119.4 管理存储过程 2129.4.1 查看存储过程 2129.4.2 修改存储过程 2139.4.3 删除存储过程 2149.5 使用存储过程参数 2159.5.1 参数的定义 2159.5.2 指定输入参数 2159.5.3 为参数设置默认值 2169.5.4 指定输出参数 2179.6 实践案例:以界面方式操作存储过程 2189.7 实践案例:SQL存储过程实现分页查询 2209.8 练习题 222第10章 触发器10.1 什么是触发器 22610.1.1 了解触发器 22610.1.2 触发器的类型 22610.1.3 触发器的执行环境 22710.2 DML触发器 22810.2.1 创建语法 22810.2.2 INSERT触发器 22910.2.3 UPDATE触发器 23010.2.4 DELETE触发器 23110.2.5 INSTEAD OF触发器 23210.3 DDL触发器 23410.3.1 DDL创建语法 23410.3.2 数据库触发器 23410.3.3 服务器触发器 23510.4 管理触发器 23610.4.1 修改触发器 23610.4.2 删除触发器 23710.4.3 禁用和启用触发器 23810.5 递归触发器 23810.5.1 递归触发器注意事项 23810.5.2 递归触发器分类 23910.5.3 禁用或启用递归触发器 23910.6 嵌套触发器 24010.6.1 嵌套触发器注意事项 24010.6.2 启用或禁用嵌套触发器 24010.6.3 实践案例:嵌套触发器实现职工的增删 24110.7 练习题 243第11章 SQL Server高级特性11.1 了解索引 24611.1.1 索引的作用 24611.1.2 索引的分类 24611.1.3 聚集索引 24611.1.4 非聚集索引 24711.1.5 聚集索引和非聚集索引的区别 24811.2 管理索引 24811.2.1 确定索引列 24811.2.2 创建索引的SQL语法 24911.2.3 复合索引 25111.2.4 查看索引 25211.2.5 修改索引 25411.2.6 删除索引 25411.2.7 实践案例:通过数据测试有无索引的区别 25411.3 实践案例:图形界面工具操作索引 25511.4 事务 25811.4.1 什么是事务 25811.4.2 ACID属性 25811.4.3 事务分类 25911.4.4 处理语句 25911.4.5 事务隔离级 26111.4.6 实践案例:事务机制实现转账功能 26311.5 锁定 26411.5.1 为什么使用锁 26511.5.2 锁定粒度 26511.5.3 锁定模式 26511.5.4 获取与锁有关的信息 26611.6 练习题 268第12章 数据库安全机制12.1 安全机制概述 27212.1.1 安全机制分类 27212.1.2 SQL身份验证模式 27212.1.3 SQL Server安全性机制 27312.1.4 数据库安全验证过程 27412.2 账户管理 27412.2.1 创建Windows账户登录 27412.2.2 创建SQL Server登录账户 27712.2.3 创建数据库用户 27812.2.4 删除用户和登录账户 28012.2.5 guest用户 28012.3 角色管理 28112.3.1 固定服务器角色 28112.3.2 固定数据库角色 28212.3.3 应用程序角色 28412.3.4 自定义数据库角色 28512.4 管理数据库权限 28612.4.1 分配权限 28612.4.2 拒绝权限 28812.4.3 撤销权限 28812.5 数据库架构 28812.5.1 界面方式创建架构 28912.5.2 命令语句创建架构 28912.5.3 删除架构 29012.6 实践案例:为用户分配权限并进行测试 29012.7 练习题 292第13章 数据库的备份和恢复13.1 数据库备份 29613.1.1 备份概述 29613.1.2 何时备份 29613.1.3 备份方法 29713.2 备份设备 29813.2.1 命令语句创建备份设备 29813.2.2 界面创建备份设备 29813.2.3 查看备份设备 29913.2.4 删除备份设备 30013.3 SQL命令备份数据库 30013.3.1 完整备份 30013.3.2 差异备份 30113.3.3 备份文件或文件组 30213.3.4 备份事务日志 30313.4 实践案例:图形界面备份数据库 30313.5 实践案例:图形界面实现压缩备份 30413.6 数据库恢复 30513.6.1 前期准备工作 30513.6.2 恢复整个数据库 30613.6.3 恢复事务日志 30613.6.4 实践案例:通过图形界面恢复数据库 30713.7 附加和实践案例:图形界面附加数据库 30813.8 实践案例:数据库收缩功能的实现 30913.9 练习题 309第14章 医院预约挂号系统数据库设计14.1 系统概述 31214.1.1 开发背景 31214.1.2 开发意义 31214.1.3 功能概述 31314.2 数据库设计 31414.2.1 创建数据库 31514.2.2 创建数据表 31514.2.3 创建视图 32014.2.4 模拟简单业务逻辑 32114.2.5 创建存储过程 32314.3 常见业务办理 32614.3.1 更新患者姓名 32614.3.2 修改密码 32614.3.3 更改医生表 32714.3.4 查询预约信息 32814.4 备份和恢复数据库 329练习题答案