370 likes | 611 Views
第 6 讲 SQL 语言基础及数据定义功能. www.desktop.swpu.edu.cn. 1. 2. 3. 4. SQL 语言功能概述. 数据定义. SQL 概述. 学生课程数据库简介. 本讲内容. 6.1 SQL 概述. SQL ( Structured Query Language ) 结构化查询语言,是关系数据库的标准语言. SQL 是一个通用的、功能极强的关系数据库语言. 现在所有的关系数据库管理系统都支持 SQL ,就连个人计算机上使用的数据库也不例外。. 2. 3. 1. SQL 语言特点.
E N D
第6讲 SQL语言基础及数据定义功能 www.desktop.swpu.edu.cn
1 2 3 4 SQL语言功能概述 数据定义 SQL概述 学生课程数据库简介 本讲内容
6.1 SQL概述 • SQL(Structured Query Language) 结构化查询语言,是关系数据库的标准语言 • SQL是一个通用的、功能极强的关系数据库语言 • 现在所有的关系数据库管理系统都支持SQL,就连个人计算机上使用的数据库也不例外。
2 3 1 SQL语言特点 SQL语言基本概念 SQL语言的发展 6.1 SQL概述
一、SQL语言的发展 最早的SQL原型是IBM的研究人员在70年代开发的,该原型被命名为SEQUEL(由Structured English QUEry Language)。 随着SQL语言的颁布,各数据库厂商纷纷在他们的产品中引入并支持SQL语言,但尽管绝大多数产品对SQL语言的支持大部分是相似的,但它们之间也存在着一定的差异。
在SQL89的基础上,经过3年多的研究和修改,ISO和ANSI共同于1992年8月又公布了SQL的新标准,即SQL-92(或称为SQL2)。SQL-92标准也不是非常完备的,1999年又颁布了新的SQL标准,称为SQL-99或SQL3 。 SQL就是关系数据库管理系统(RDBMS)的标准语言。最早的SQL标准是1986年10月由美国ANSI公布的。随后,ISO于1987年6月也正式采纳它为国际标准,并在此基础上进行了补充,到1989年4月,ISO提出了具有完整性特征的SQL,并称之为SQL-89。
二、 SQL语言特点 高度非过程化 2 1 3 综合统一 简洁易用 SQL语言特点 4 5 以多种 方式使用 面向集合 的操作方式
1、综合统一 • 集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。 • 可以独立完成数据库生命周期中的全部活动: • 定义关系模式,插入数据,建立数据库; • 对数据库中的数据进行查询和更新; • 数据库重构和维护 • 数据库安全性、完整性控制等 • 用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据的运行。 • 数据操作符统一
2、高度非过程化 作用:减轻用户负担,且有利于提高数据独立性 • 非关系数据模型的数据操纵语言“面向过程”,必须制定存取路径 • SQL只要提出“做什么”,无须了解存取路径。 • 存取路径的选择以及SQL的操作过程由系统自动完成。
3、简洁易用 • SQL功能极强,完成核心功能只需9个动词。
4、面向集合的操作方式 • 非关系数据模型采用面向记录的操作方式,操作对象是一条记录 • SQL采用集合操作方式 • 操作对象、查找结果可以是元组的集合 • 一次插入、删除、更新操作的对象可以是元组的集合
5、以多种方式使用 作用:以上使用方式为用户提供了灵活的选择余地。 • SQL语言可以直接以命令方式交互使用,是独立的语言。 • SQL又是嵌入式语言 • SQL能够嵌入到高级语言(例如Visual Basic、C,C++,Java等)程序中,供程序员设计程序时使用
三、 SQL的基本概念 3 4 2 1 存储文件 基本表 三级模式结构 视图
1、三级模式结构 SQL 视图1 视图2 外模式 基本表1 基本表2 基本表3 基本表4 模 式 存储文件2 存储文件1 内模式 • SQL支持关系数据库三级模式结构
2、基本表 • 本身独立存在的表 • SQL中一个关系就对应一个基本表 • 一个(或多个)基本表对应一个存储文件 • 一个表可以带若干索引
3、存储文件 • 逻辑结构组成了关系数据库的内模式 • 物理结构是任意的,对用户透明
4、视图 • 从一个或几个基本表导出的表 • 数据库中只存放视图的定义而不存放视图对应的数据 • 视图是一个虚表 • 用户可以在视图上再定义视图
6.2 学生-课程数据库简介 1 2 3 4 学生-课程模式ST Student表数据 Course表数据 SC表数据
1 、学生-课程模式 S-T • 学生表: Student(Sno,Sname,Ssex,Sage,Sdept) • 课程表: Course(Cno,Cname,Cpno,Ccredit) • 学生选课表: SC(Sno,Cno,Grade)
6.3 SQL语言功能概述 SQL按其功能可分为四大部分:数据定义功能、数据控制功能、数据查询功能和数据操纵功能。
数据定义功能用于定义、删除和修改数据库中的对象;数据定义功能用于定义、删除和修改数据库中的对象; 数据查询功能用于实现查询数据的功能; 数据操纵功能用于实现对数据库数据的增加、删除和修改; 数据控制功能用于实现控制用户对数据库的操作权限。
1 2 3 定义基本表 删除基本表 修改表结构 6.4 数据定义功能
一、定义基本表 • Create Table的一般格式为 : CREATE TABLE <表名>( <列名> <数据类型> [列级完整性约束定义] {, <列名> <数据类型> [列级完整性约束定义] … } [, 表级完整性约束定义 ] ) <表名>:所要定义的基本表的名字。 <列名>:表中所包含的属性列的名字, <数据类型>:指明列的数据类型。
在定义表的同时可以定义与表有关的完整性约束条件。如果完整性约束只涉及到表中的一个列,则可以在列级完整性约束定义处定义,也可以在表级完整性约束定义处定义;如果完整性约束条件涉及表中多个属性列,则必须在表级完整性约束定义处定义。在定义表的同时可以定义与表有关的完整性约束条件。如果完整性约束只涉及到表中的一个列,则可以在列级完整性约束定义处定义,也可以在表级完整性约束定义处定义;如果完整性约束条件涉及表中多个属性列,则必须在表级完整性约束定义处定义。 • 在定义基本表时可以同时定义列的取值约束。在列定义同时定义的约束我们称为列级完整性约束定义,在表定义的最后定义的完整性约束我们称为表级完整性约束。
在列级完整性约束定义处可以定义如下约束: • NOT NULL:限制列取值非空 • DEFAULT:给定列的默认值,使用形式为:DEFAULT 常量 • UNIQUE:限制列取值不重 • CHECK:限制列的取值范围,使用形式为:CHECK(约束表达式) • PRIMARY KEY:指定本列为主码 • FOREIGN KEY:定义本列为引用其他表的外码。使用形式为: • [FOREIGN KEY][<列名>] REFERENCES <外表名>(<外表列名>)
第一,如果CHECK约束是定义多列之间的取值约束;第一,如果CHECK约束是定义多列之间的取值约束; 第二,如果表的主码由多个列(超过1列)组成; 第三,如果在表级完整性约束处定义外码,则FOREIGN KEY和<列名>均不能省,且<列名>必须用括号括起来。 NOT NULL和DEFAULT不能在表级完整性约束处定义之外,其他约束均可在表级完整性约束处定义。但有些约束必须在表级约束处定义:
创建Student表的SQL语句如下: 用SQL语句创建Student表 Student表结构如下: CREATE TABLE Student ( Sno char ( 7 ) PRIMARY KEY, Sname char ( 10 ) NOT NULL, Ssex char (2) CHECK (Ssex = '男' OR Ssex = '女'), Sage tinyint CHECK (Sage >= 15 AND Sage <=45), Sdept char (20 ) DEFAULT '计算机系' )
course表结构 用SQL语句创建Course表 CREATE TABLE Course ( Cno char(10) NOT NULL, Cname char(20) NOT NULL, Ccredit tinyint CHECK (Ccredit > 0), Semester tinyint CHECK (Semester > 0), Period int CHECK (Period > 0), PRIMARY KEY(Cno) )
SC表结构 用SQL语句创建SC表 CREATE TABLE SC ( Sno char(7) NOT NULL, Cno char(10) NOT NULL, Grade tinyint, CHECK (Grade >= 0 and Grade <= 100), PRIMARY KEY( Sno, Cno ), FOREIGN KEY ( Sno ) REFERENCES Student ( Sno ), FOREIGN KEY ( Cno ) REFERENCES Course ( Cno ) )
二、删除表 DROP TABLE <表名> { [, <表名> ] … } 例:删除test表的语句为: 删除表的语句格式为: DROP TABLE test
在定义完表之后,如果需求有变化,比如添加列、删除列或修改列定义,可以使用ALTER TABLE语句实现。 三、修改表结构
3、ALTER TABLE语句的部分格式 ALTER TABLE<表名> [ ALTER COLUMN <列名> <新数据类型>] -- 修改列定义 | [ ADD [COLUMN] <列名> <数据类型> [属性] -- 添加新列 | [ DROP COLUMN <列名> ] -- 删除列 | [ADD PRIMARY KEY(列名 [,… n ] )] -- 添加主码约束 | [ADD FOREIGN KEY(列名)REFERNECES表名(列名)] -- 添加外码约束
例3.删除Course表的Period列 ALTER TABLE Course DROP COLUMN Period 例2.将新添加的XKLB的类型改为char(6)。 ALTER TABLE SC ALTER COLUMN XKLB char(6)