1、第3章 SQL语言,学习目标 了解SQL的基本构成 掌握SQL的数据定义语言 掌握SQL语言的各种查询的实现 掌握SQL语言的数据更新语言 掌握视图的定义及其应用,3.1 SQL概述,SQL(Structured Query Language,结构化查询语言),是定义和管理关系数据库的国际标准的编程语言。 SQL于1974年由Boyce和Chamberlin提出的,并于19741979年由IBM公司的San Jose Research Laboratory研制了关系数据库管理系统System R上实现了这种功能。,3.1.1 SQL的发展,SQL语言是定义和管理关系数据库的国际标准的编程语言。所经历的主要阶段如下: 1986年,ANSI的数据库委员会发布了文件:X.135-1986数据库语言(简称SQL-86) 。 1987年,ISO也通过了这一标准。 1989年10月,ANSI的数据库委员会发布了文件:X3.135-1989数据库语言-完整和增强的SQL(简称SQL-89) 发布,SQL89成为DBMS遵循的新标准。 1992年8月, ANSI和ISO共同发布了SQL-92 (简称S
2、QL-2) 标准。,1999年, ISO发布了SQL-99 (简称SQL-3) 标准。 2003年, ISO发布了SQL-2003 (简称SQL-4) 标准。,3.1.2 SQL的特点,SQL是一个集数据查询、数据操纵、数据定义和数据控制于一体数据库管理系统语言。主要特点有: 综合统一。利用SQL可以独立完成数据库生命周期中的全部活动; 高度非过程化。利用SQL实现对关系的操作,用户只需提出“干什么”, 无需规定“如何干”;即不需要指定操作过程,也不需要了解存取路径; 面向集合的操作方式。 一种(语法)结构两种使用方式,表现在: 联机使用方式:即自主式语言;,嵌入式使用方式:即SQL语句嵌入到某种高级语言的程序中使用。 语言简洁,易学易用。SQL功能强大且具有两种不同的使用方式,但语言十分简洁,完成核心功能的语句仅仅只有9个,如下表3-1所示。,表3-1 SQL语言的动词,3.1.3 SQL的组成,SQL语言主要由以下几部分构成: 1 数据定义功能 即SQL的模式语句,主要有: 模式的定义、修改、删除功能; 索引的定义、修改、删除功能; 视图的定义、删除功能; 存储过程、触发器等的定义
3、、修改、删除功能; 各种完整性约束条件的定义及核查机制。,2 数据操纵功能 即SQL的数据操作语句,主要有: 基于关系代数和元组演算的数据查询和数据更新(插入、修改和删除)语句; 嵌入式SQL的数据操作语句; 事务及其控制语句; 3 数据控制功能 关系、视图的访问权限的设置、取消及核查; SQL的连接语句; 其它的控制功能语句。,3.1.4 SQL查询的基本概念,SQL支持关系数据库的三级模式结构,如下图3-1所示。, 基本表(Table):是独立存在的表,一个关系对应一个基本表,表中保存同一实体集中各实体的数据。一个或多个基本表对应一个存储文件。一个基本表可以定义若干索引,索引也存储在存储文件中。 视图(View):是由基本表或视图导出的虚表,本身不存储实际的数据。在数据库中存储的只是视图的定义。从用户的角度,视图和基本表在概念上是等价的。 除此之外,SQL中还有导出表,即查询结果集。是根据基本表或视图查询得到的结果集。 约束和断言(Constraint And Assertion):是标识有效数据集合的命名规则。它们为表、行或域(列)限定了相容的数据;并定义了两个检查特性:延迟模式
4、和约束核查时间。,断言是与一些模式有关;常以核查约束的形式出现; 约束是与一些表或域有关。在实际的DBMS产品中常以核查约束或规则的形式出现。 触发器(Trigger):是与单一基本表相关联的命名规则。每个触发器定义一个触发器事件,规定了对表进行更新操作时在表中产生的一个触发动作;触发时间规定了被触发动作发生的时间是在触发事件之前或之后。 SQL调用例程(SQL Invoked Routine):SQL调用例程是有一些模式或模块组成。 由系统定义:称为调用例程或过程; 由用户定义:称为自定义函数或存储过程。,SQL中要定义的数据对象有许多,基本的有:基本表、视图、索引等,这些都由SQL的数据定义语句来实现如下表3-2。先讨论基本表和索引的相关定义语句。,3.2 SQL的数据定义语言,表3-2 SQL的数据定义语句,根据实验将要使用的具体的DBMS产品是SQL Server,详见补充1。,3.2.1 数据库的定义、删除与修改,1 数据库的创建 使用Transact-SQL语句 CREATE DATABASE ON , n , n LOG ON , n COLLATE 其中:, := PR
5、IMARY ( NAME = , FILENAME = OS文件的路径及名字 , SIZE = 文件初始大小 , MAXSIZE = 最大值 | UNLIMITED , FILEGROWTH = 文件大小增量值 ) := FILEGROUP ,例1: Create Database sale_management_data On Primary ( Name=sale_file1, Filename=e:sale_systemdatasale_file1.mdf, Size= 100MB, MaxSize=2000MB, FileGrowth = 10MB ), ( Name=sale_file2, Filename =e:sale_systemdatasale_file2.ndf, Size = 10MB, MaxSize = 1000MB, FileGrowth = 10),Log on ( Name =sale_log, Filename =f:sale_systemdatasale_log.ldf, Size = 10MB, MaxSize = 1000MB, FileGrow
6、th = 10MB ) 说明: Database_name:要建立的数据库的逻辑名称。要求:整个SQL Server服务器唯一;长度不超过128个字符。 ON与LOG ON :指定数据库的数据文件、文件组和日志文件。当有多个数据文件或日志文件是,彼此之间要用“,”分隔。对于关键字PRIMARY,若有,指定其后的的数据文件属于主文件组;若没有,则第一个数据文件是主文件。, SIZE参数:指定数据文件或日志文件的初始大小。单位可以是KB、MB、GB、TB。对主数据文件,其最小值应等于model数据库中主数据文件的大小。若省略时,默认数据文件和日志文件大小为1MB(主数据文件除外)。 MAXSIZE参数:指定数据文件或日志文件可以增加到的最大容量。若省略时,默认到磁盘空间用尽为止(相当于MAXSIZE = UNLIMITED ) 。 FILEGROWTH参数:指定数据文件或日志文件的空间的每次增长量。有绝对增长量(不能小于64KB)和相对增长量两种方式。,2 数据库的修改 数据库创建完毕后,可能根据需要须修改数据库本身的各项设置,主要包括: 更改数据库名称 扩充数据文件或日志文件空间; 收缩
7、数据文件或日志文件空间; 添加或删除数据文件或日志文件; 创建文件组; 改变默认文件组; 更改数据库的配置设置; 更改数据库的所有者。,使用Transact-SQL语句 ALTER DATABASE ADD FILE , n TO FILEGROUP | ADD FILEGROUP | ADD LOG FILE , n | REMOVE FILE | REMOVE FILEGROUP | MODIFY FILE | MODIFY NAME = | MODIFY FILEGROUP filegroup_property |NAME= ,其中: := ( NAME = , NEWNAME = , FILENAME = OS文件的路径及名字 , SIZE =文件的初始大小 , MAXSIZE =最大的文件容量 , FILEGROWTH = 文件大小增量 ) 说明: 注意各功能子句的作用; 与“创建数据库”基本相同,仅多了一个“NEWNAME”项。, MODIFY FILE子句:修改指定的数据文件。每次修改时,只能修改FILENAME、SIZE、FILEGROUP、MAXSIZE属性中的一项。
8、 使用该命令改变数据文件容量时,只能增加不能减少。,3 数据库的删除 使用Transact-SQL语句 DROP DATABASE , 在SQL Server中,只有数据库所有者和sysadmin、dbcreator固定服务器角色才有权限删除数据库。 当删除数据库时,其数据文件和事务日志文件也会同时被删除。,建立数据库后最重要的一类定义就是定义基本表,首先介绍SQL-3中的数据类型,如表3-3所示。,3.2.2 基本表的定义、删除与修改,表3-3 SQL-3中的数据类型,1 基本表的定义 语法格式: CREATE TABLE ( , ) = , , = (,) DEFAULT NOT NULL UNIQUE CONSTRAINT () =PRIMARY KEY (),FOREIGN KEY () REFERENCES () CHECK (expL) ,说明: DEFAULT :默认值设定。当有该选项时,在进行数据插入时若没有指定该列的值时,就自动取为默认值; NOT NULL:是否允许空值设定。当有该选项时,在进行数据插入时必须为该列指定具体值; UNIQUE:值的唯一性设定。当有该选
9、项时,整个表中该列值唯一; CONSTRAINT ():列级完整性设定。列级完整性是一个条件表达式。 若有该选项时,则在对该列数据进行更新时其值必须满足相应的条件。,若在该列上定义了几个约束,则该列的取值必须是几个条件表达式所限定值集的交集。 表级完整性约束主要有三类: PRIMARY KEY ():主码约束设定。用来定义表中所有的记录必须满足的实体完整性;一个表只能有一个主码。 FOREIGN KEY () REFERENCES (:外码约束设定。用来定义表中的外码以及外码引自于哪个表;一个表可以有多个外码。 CHECK (expL):核查约束设定。用来定义表中同一记录内不同的属性之间必须满足的依赖(函数)关系。,基本表定义举例 例:学生-选课数据库中的四个表的定义。 专业设置表(专业编号,系名,专业名) ; 学生情况表(学号,姓名,性别,出生日期,入学年份,专业编号) ; 课程设置表(课程编号,课程名称,学时数,学分,先修课程号) ; 学生选课(学号,课程编号,成绩) 。,CREATE TABLE Major( major_no CHAR(3) NOT NULL CONSTRAINT major_const(major_no like 1-90-90-9 and major_no not like 100), department VARCHAR(30) NOT NULL, speciality VARCHAR(30) NOT NULL, PRIMARY KEY (major_no) ) CREATE TABLE Student( sno CHAR(10) NOT NULL CONSTRAINT sno_const(sno like 1-90-90
《第3章.关系数据库标准语言》由会员F****n分享,可在线阅读,更多相关《第3章.关系数据库标准语言》请在金锄头文库上搜索。