[理学]Ch3 关系数据库标准语言 SQL1.doc
《[理学]Ch3 关系数据库标准语言 SQL1.doc》由会员分享,可在线阅读,更多相关《[理学]Ch3 关系数据库标准语言 SQL1.doc(60页珍藏版)》请在三一办公上搜索。
1、第三章 关系数据库标准语言 SQL-关系数据库系统的主要功能是通过SQL语言来实现的,因此上本章是学习学习关系数据库的重点之一。通过对本章的学习,你可以了解关系数据库的基本工作原理,对完整性约束将会有更进一步的认识。在学习过程中,我请读者注意以下几个方面。需要牢固掌握SQL语言的特点、体会面向过程的语言与SQL语言的区别以及SQL语言的优点;体会SQL语言之所以为业界认可并成为国际标准的原因。熟练而正确地使用SQL语言完成对数据库的建表、查询、插入、删除、更新操作;对于各种不同样式的查询,尽量多掌握一些,这些技术不仅对你现在有用,将来很长时期内都不会过时。在完成具体的SQL语句时,希望读者能有
2、意识地和关系代数、关系演算、等语言进行比较和类比,了解它们各自的特点。本章的难点在于用SQL语言正确完成复杂查询。另外需要说明的是,教材上讲的是标准SQL语言,而我们在现实工作中总是使用某一种具体的、由某一商家提供的RDBMS产品,这两者之间会有一定的差别。考虑到这一点,我已将本章部分例子翻译成MicroSoft SQL Server 2000上可运行的代码段。在翻译过程中,有些地方作了局部修改,主要是考虑到具体系统的限制或者是我本人想对知识点做一些不太大的扩充,不会影响对原来例子的学习,希望读者理解。如果你有更好的想法想告诉我,请发E-Mail或电话告知,以便在下一次改进。- SQL(Str
3、uctured Query Language)语言是1974年由Boyce和Chamberlin提出的。1975年-1979年IBM公司San Jose Research Laboratory研制了著名的关系数据库管理系统原型System R并实现了这种语言。由于它功能丰富,语言简捷倍受用户及计算机工业界欢迎,被众多计算机公司和软件公司所采用。经各公司的不断修改、扩充和完善,SQL语言最终发展成为关系数据库的标准语言。1986年10月美国国家标准局 (American National Standard Institute ,简称ANSI)的数据库委员会X3H2批准了SQL作为关系数据库语言的
4、美国标准。同年公布了SQL标准文本(简称SQL-86)。1987年国际标准化组织(International Organization for Standardization,简称ISO)也通过了这一标准。此后ANSI不断修改和完善SQL标准,并于1989年公布了SQL-89标准,1992年又公布了SQL-92标准。目前ANSI即将公布正在酝酿新的标准SQL-99,亦称SQL3。自SQL成为国际标准语言以后,各个数据库厂家纷纷推出各自的SQL软件或与SQL的接口软件。这就使大多数数据库均用SQL作为共同的数据存取语言和标准接口,使不同数据库系统之间的互操作有了共同的基础。这个意义十分重大。因此
5、,有人把确立SQL为关系数据库语言标准及其后的发展称为是一场革命。SQL成为国际标准,对数据库以外的领域也产生了很大影响,有不少软件产品将SQL语言的数据查询功能与图形功能、软件工程工具、软件开发工具、人工智能程序结合起来。SQL已成为数据库领域中一个主流语言。这一章详细介绍SQL语言,并进一步讲述关系数据库的基本概念。 3.1 SQL 概 述SQL是一种介于关系代数与关系演算之间的结构化查询语言,其功能并不仅仅是查询。SQL是一个通用的、功能极强的关系数据库语言。3.1.l SQL的特点SQL语言之所以能够为用户和业界所接受,并成为国际标准,是因为它是一个综合的、功能极强同时又简捷易学的语言
6、。SQL语言集数据查询 (Data Query)、数据操纵 (Data Manipulation)、数据定义 (Data Definition)和数据控制 (Data Control)功能于一体,主要特点包括:一、综合统一数据库系统的主要功能是通过数据库支持的数据语言来实现的。非关系模型 (层次模型、网状模型)的数据语言一般都分为模式数据定义语言 (Schema Data Definition Language,简称模式DDL)、外模式数据定义语言(Subschema Data Definition Language,简称外模式DDL或子模式DDL)、与数据存储有关的描述语言(Data Sto
7、re Description Language,简称DSDL:及数据操纵语言 (Data Manipulation Language,简称DML),分别用于定义模式、外模式、内模式和进行数据的存取与处置。当用户数据库投入运行后,如果需要修改模式,必须停止现有数据库的运行,转储数据,修改模式并编译后再重装数据库,十分麻烦。SQL语言则集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义关系模式、建立数据库、插入数据、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作要求,这就为数据库应用系统的开发提供了良
8、好的环境。用户在数据库系统投入运行后,还可根据需要随时地逐步地修改模式,且并不影响数据库的运行,从而使系统具有良好的可扩展性。另外,在关系模型中实体和实体间的联系均用关系表示,这种数据结构的单一性带来了数据操作符的统一,查找、插入、删除、修改等每一种操作都只需一种操作符,从而克服了非关系系统由于信息表示方式的多样性带来的操作复杂性。例如,在DBTG中,需要两种插入操作符:STORE用来把记录存入数据库,CONNECT用来把记录插入系值以建立数据之间的联系。二、高度非过程化非关系数据模型的数据操纵语言是面向过程的语言,用其完成某项请求,必须指定存取路径。而用 SQL语言进行数据操作,只要提出做什
9、么,而无须指明怎么做,因此无需了解存取路径,存取路径的选择以及 SQL语句的操作过程由系统自动完成。这不但大大减轻了用户负担,而且有利于提高数据独立性。三、面向集合的操作方式非关系数据模型采用的是面向记录的操作方式,操作对象是一条记录。例如查询所有平均成绩在80分以上的学生姓名,用户必须一条一条地把满足条件的学生记录找出来(通常要说明具体处理过程,即按照哪条路径,如何循环等)。而SQL语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。四、以同一种语法结构提供两种使用方式SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它
10、能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言(例如C,COBOL,FORTRAN,PL/l)程序中,供程序员设计程序时使用。而在两种不同的使用方式下,SQL语言的语法结构基本上是一致的。这种以统一的语法结构提供两种不同的使用方式的做法,提供了极大的灵活性与方便性。五、语言简捷,易学易用SQL语言功能极强,但由于设计巧妙,语言十分简捷,完成核心功能只用了9个动词,如表3.1所示。SQL语言接近英语口语,因此容易学习,容易使用。3.1.2 SQL语言的基木概念SQL语言支持关系数据库三级模式结构,如图3.1所
11、示。其中外模式对应于视图(View)和部分基本表 (Base Table),模式对应于基本表,内模式对应于存储文件。用户可以用 SQL语言对基本表和视图进行查询或其他操作,基本表和视图一样,都是关系。基本表是本身独立存在的表,在SQL中一个关系就对应一个表。一个(或多个)基本表对应一个存储文件,一个表可以带若干索引,索引也存放在存储文件中。存储文件的逻辑结构组成了关系数据库的内模式。存储文件的物理结构是任意的,对用户是透明的。视图是从一个或几个基本表导出的表。它本身不独立存储在数据库中,即数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。视
12、图在概念上与基本表等同,用户可以在视图上再定义视图。下面将逐一介绍各 SQL语句的功能和格式。为了突出基本概念和基本功能,略去了许多语法细节。各个DBMS产品在实现标准SQL语言时也各有差别,一般都做了某种扩充。因此,具体使用某个DBMS产品时,还应参阅系统提供的有关手册。3.2 数 据 定 义关系数据库系统支持三级模式结构,其模式、外模式和内模式中的基本对象有表、视图和索引。因此SQL的数据定义功能包括定义表、定义视图和定义索引,如表3.2所示。视图是基于基本表的虚表,索引是依附于基本表的,因此SQL通常不提供修改视图定义和修改索引定义的操作。用户如果想修改视图定义或索引定义,只能先将他们删
13、除掉,然后再重建。不过有些关系数据库产品如 Oracle允许直接修改视图定义。表3.2 SQL的数据定义语句操作对象操作方式创建删除修改表CREATE TABLEDROP TABLEALTER TABLE视图CREATE VIEWDROP VIEW索引CREATE INDEXDROP INDEX本节只介绍如何定义基本表和索引,视图的概念及其定义方法将在3.4节专门讨论。3.2.1 定义、删除与修改基本表一、定义基本表建立数据库最重要的一步就是定义一些基本表。SQL语言使用CREATE TABLE语句定义基本表,其一般格式如下:CREATE TABLE(列级完整性约束条件,列级完整性约束条件,;
14、其中是所要定义的基本表的名字,它可以由一个或多个属性 (列)组成。建表的同时通常还可以定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中,当用户操作表中数据时由DBMS自动检查该操作是否违背这些完整性约束条件。如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。例1建立一个学生表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。 CREATE TABLE Student(Sno CHAR(5) NOT NULL UNIQ
15、UE, /*列级完整性约束条件,SnoSname CHAR(2O) UNIQUE, 取值唯一,不许取空值*/Ssex CHAR(1) ,Sage INT,Sdept CHAR(l5);系统执行上面的CREATE TABLE语句后,就在数据库中建立一个新的空的学生表 Student,并将有关学生表的定义及有关约束条件存放在数据字典中。-注:以下是在MicroSoft SQL Server 2000中的几段有关建表的参考代码,考虑到有几个表也是在本章中经常引用的,故在此一并给出。create table student (sno char(5) primary key, /*列级完整性约束条件,将
16、sno定义为主码,但未对此约束命名*/ sname char(20)not null unique,/*列级完整性约束条件,sname不允许取空值且取值唯一*/ ssex char(2) not null, sage int, sdept char(15), constraint ck_ssex check(ssex in (男, 女), /*建立命名为ck_ssex的表级约束*/ constraint ck_sage check(sage0 and sage0 and creadit=0 and grade=100),/*列级命名约束*/ constraint pr_sc primary k
17、ey (sno,cno) /*表级命名约束*/ );create table dept (dno char(5) not null unique, dname nvarchar(30) not null, doffice nvarchar(30) not null );-定义表的各个属性时需要指明其数据类型及长度。不同的数据库系统支持的数据类型不完全相同,例如IBM DB2 SQL主要支持以下等数据类型:二、修改基本表随着应用环境和应用需求的变化,有时需要修改已建立好的基本表,SQL语言用ALTER TABLE语句修改基本表,其一般格式为:ALTER TABLEADD完整性约束 DROP(完整
18、性约束名)MODlFY;其中是要修改的基本表,ADD子句用于增加新列和新的完整性约束条件,DROP子句用于删除指定的完整性约束条件,MODIFY子句用于修改原有的列定义 ,包括修改列名和数据类型。例2 向Student表增加入学时间列,其数据类型为日期型。ALTER TABLE Student ADD Scome DATE;不论基本表中原来是否已有数据,新增加的列一律为空值。-注: MicroSoft SQL Server 2000中的参考代码为:/*为表student新增加一列*/alter table student add scome datetime;/*为表student的scome
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 理学 理学Ch3 关系数据库标准语言 SQL1 Ch3 关系 数据库 标准 语言
链接地址:https://www.31ppt.com/p-4543601.html