第3版前言随着信息技术的迅猛发展和信息化社会水平的进一步提升,数据库技术已经成为国家信息基础设施和信息化社会中的最重要的支撑技术之一; 基于数据库技术和数据库管理系统DBMS的应用软件和装备制造系统中的控制软件的研发,已经成为计算机及其相关专业领域技术和管理人员的必备知识和基本技能。数据库技术已在国民经济的各个领域得到了十分广泛的应用,并在推动科技发展和社会进步方面起着越来越重要的作用。本书第1版和第2版自2009年和2012年出版以来,在几十多所院校的计算机类专业、电子信息类专业、管理类专业和其他相关专业的教学中得到了采用,许多学生、教师和读者对本书的进一步改版都给予了特别的关心,并提出了许多宝贵的建议。出版第3版的原因一是将第2版中基于SQL Server 2005的概念、平台软件环境介绍、SQL Server语句练习、数据库应用系统设计应用等方面的内容,都改写成基于SQL Server 2012,以适应数据库软件的版本更新。二是完善和优化第2版中的部分内容和实例,特别是进一步完善和优化了基于SQL Server 2012的数据库应用系统设计案例的设计过程及程序代码,进一步突出了面向综合设计能力培养的主题,提高了对学生学习和设计过程的指导性。三是删除了一些不重要的内容。本教材在内容选取上兼顾了应用型人才和工程型人才培养的要求,构建了以数据库原理SQL Server数据库ADO.NET数据库访问技术VB.NET主语言为架构的数据库课程内容体系,具有理论与应用结合的鲜明特色,教学参考及应用价值高。数据库课程理论抽象,实践性强,对数据库整体架构理解的要求高。本教材在编写手法上旨在努力贯彻深、活、透、新四字教学要求,即把数据库设计理论讲深,把数据库的SQL语言讲活,把数据库设计方法讲透,把数据库应用技术讲新,以便使课程教学效果力争达到: 在讲解数据库系统的整体概念时能让学生自己搭起数据库的总体架子,在讲解数据库设计理论时能让学生穿起定义、定理之间的链子,在讲解数据库的保护技术时能让学生厘清它们内部的口子,在讲解数据库应用系统设计时能让学生掌握与实际结合的路子,在讲解数据库新技术时能给学生指出新技术未来的影子。本教材第3版共分11章,第1章是数据库系统概述,第2章介绍关系运算,第3章是数据库应用系统设计方法,第4章介绍SQL Server 2012数据库与数据表的创建,第5章是关系数据库语言SQL,第6章介绍关系数据库模式的规范化设计,第7章是TransactSQL与存储过程,第8章介绍数据库应用系统体系结构与访问技术,第9章是数据库应用系统设计与实现,第10章介绍数据库保护技术,第11章是数据库技术新发展。内容覆盖了关系数据库原理、数据库应用系统设计方法和设计技术。本书可作为高等院校本科计算机科学与技术、软件工程、网络工程、信息安全、物联网工程、数字媒体技术、信息工程、信息与计算科学、信息管理与信息系统、地理信息系统、电子商务等专业的数据库课程教材,也可作为相关专业研究生的数据库课程教材,还可供相关领域专业的高等院校师生、从事计算机软件研究和信息系统设计的科技人员和工程技术人员参考。本书的第1章、第2章、第3章、第6章、第10章由李俊山编写,第9章、附录A、附录B、附录C由叶霞编写,第5章、第8章由李俊山和叶霞编写,第4章由罗蓉编写,第7章由李俊山和罗蓉编写,第11章由李俊山和刘东编写。另外,李建华、赵方舟、杨威、张娇、杨亚威等参与了部分资料整理和早期版本的数据库应用系统案例程序的编写。由于作者水平有限,书中难免有不当之处,敬请广大读者和专家批评指正。李俊山2017年3月Email: lijunshan403@163.com
第5章关系数据库语言SQLSQLStructured Query Language,结构化查询语言是一种介于关系代数和元组演算之间的关系数据库语言,1974年由Boyce和Chamberlin提出,1975年至1979年由IBM公司在System R上实现,1986年由美国国家标准局American National Standard Institute,ANSI批准为关系数据库语言的国家标准,1987年由国际标准化组织International Standard Organization,ISO批准为国际标准,1993年我国也批准其为中国国家标准。随着SQL语言的发展和完善,至1999年国际标准化组织已公布了最新的SQL标准SQL99,也即SQL3。SQL在世界绝大多数关系数据库中的采用,极大地推进了数据库技术的发展和广泛应用,并已在数据库之外的其他领域的软件产品中得到应用。也进一步突显出学习数据库技术和SQL语言的重要性。
5.1SQL的功能与特点
在SQL语言中,把关系模式称为基本表Base Table,简称为表; 有时在容易与上下文有关概念相混淆的地方也称为关系表。5.1.1SQL的功能SQL语言按各语句完成的功能主要分为数据定义语句、数据操纵语句和数据控制语句3大类,相应的功能也分为3类。1. 数据定义功能SQL的数据定义功能包括定义基本表、定义视图、定义索引等,由SQL语言的数据定义语句实现。本章将介绍基本表和视图的定义,以及基本表的变更修改。2. 数据操作功能SQL的数据操纵功能包括数据查询和数据更新。数据查询是指按照某种要求从数据库中检索出需要的数据,并对其进行统计、分组、排序等,由SQL语言的数据查询语句实现; 数据更新包括数据的插入、删除、修改等数据维护操作,由SQL语言的更新类语句实现。3. 数据控制功能SQL的数据库控制功能包括用户授权、基本表和视图授权、事务控制、数据完整性和安全性控制等,由SQL的数据控制类语句实现。5.1.2SQL的特点SQL语言集数据定义、数据查询、数据控制功能于一体; 简捷易学,灵活易用; 非过程性强,开发应用过程简单。同时在应用中具有以下两个特点。1. SQL具有交互式命令和嵌入式两种工作方式SQL语言提供了交互式命令在SQL的交互式工作方式中,每一个SQL语句又可看作是一条SQL命令,所以常常称SQL语句为SQL命令方式和嵌入式两种工作方式。在交互式命令工作方式下,用户可以以交互式命令方式通过直接输入SQL命令语句对数据库进行操作。例如,在SQL Server 2012中,用户可以在查询编辑器窗口直接输入SQL命令语句对数据库进行操作; 在嵌入式工作方式下,SQL语句可以被嵌入到某种高级语言例如,VB.NET、VC、Java等程序中实现对数据库的操作,并利用主语言所嵌入的高级语言称为宿主语言,简称主语言的强大计算功能、逻辑判断功能、屏幕控制及输出功能等,实现对数据的处理和输入输出控制等。2. SQL支持数据库的三级模式结构SQL语言支持的关系数据库三级模式结构如图5.1所示。视图和部分基本表构成了关系数据库的外模式。视图由某个或某些数据库表中满足一定条件约束的数据组成,从程序员的观点看,视图和基本表是一样的。数据库应用系统中的全体基本表构成了该关系型数据库应用系统的全局逻辑模式。用于存储用户数据的所有存储文件构成了该关系型数据库应用系统的内模式。一般情况下,一个表可以带有一个或多个索引,一个或多个表存放在一个存储文件中。存储文件对用户是透明的。
图5.1SQL对关系数据库三级模式的支持
本章将以交互式命令方式的形式介绍SQL语言中主要的语句及其功能。在应用举例中除特别说明外,总是假设使用图1.8给出的大学教学管理数据库中的关系及其当前值和图1.11的大学教学管理数据库概念模式中的关系模式。
5.2表的基本操作
SQL Server 2012的SQL Server Management Studio工具中的查询编辑器,为用户和数据库管理员提供了在交互式命令方式下,使用数据定义语句、数据操纵语句和数据查询语句对数据库进行操作的环境。本章后续内容在介绍有关的SQL语句过程中,将利用SQL Server 2012的交互式命令环境对各相关SQL语句的功能进行验证。表的基本操作包括以表为对象的操作表的创建、修改和撤销和以表中数据为对象的操作数据的插入、修改和删除。5.2.1表的创建、修改与撤销1. 创建表
SQL数据库是表的集合,所以用户要建立数据库时就要创建表。在SQL语言中,表的创建是由CREATE TABLE语句实现的,其语句格式为
CREATE TABLE
[][,
[],
,
[],
[]];
其中: 1 表示该项是必选项,[ ]表示该项是可选项。SQL语言中的语句都必须以分号; 结束。2 是要定义的表的名称。表名不能与SQL语言中的保留字同名,不能与其他表名或视图名同名。表名和列名是以字母开头,由字母、数字和下画线_组成的字符串,长度不超过30个字符。3 一个表至少要有一列在SQL语言中将属性称为列,每一列必须有一个列名和相应的数据类型,同一表中的列名不能重名。4 是一个必选项,SQL语言的典型数据类型如表5.1所示。