关系数据库标准语言SQL(一)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C)Unique约束
唯一性约束:值不可重复,但可以为空。 每个Unique约束都生成一个唯一索引。 当某个列不是主关键字,但取值必须唯一 时,可以使用Unique约束。
C)Unique约束(续)
CrCeareteatTeaTbaleblSetDudeepnatr(tment(
S#NOVarVcahracrh2a(r120()1C0)o,nstraint PK_S Primary多K个ey列, 上的约束只 SnNaAmMeEVaVracrhcahra2r(22(02)0C),onstraint UQ_S Uni能qu用e,表约束来实现
由于视图是基于基本表的虚表,索引是依附 于基本表的,因此SQL通常不提供修改视图定 义和修改索引定义的操作。用户如果想修改 视图定义或索引定义,只能先将它们删除掉 ,然后再重建 。
4.3.1 模式的定义和删除
一、定义模式 语句:CREATE SCHEMA <模式名> AUTHORIZATION <用户名> [<表定义子 句>] |[<视图定义子句>] |[<授权定义子句 >]
5
数据结构
6
数据处理
7 PASCAL语言
Cpno 5
1 6 7
6
Ccerdit
4 2 4 3 4 2 4
学生-课程数据库
SC关系:
Sno
Cno
Grade
95001
1
92
95001
2
95
95001
3
88
95002
2
90
95002
3
80
4.3 数据定义——DDL
关系数据库的基本对象是表、视图和索引。 因此SQL的数据定义功能包括定义模式、定义 表、定义视图和定义索引 。
4.3.2 基本表的定义、删除与修改
一、定义基本表 列 完整性约束
二、列
列名
字母开头,可含字母、数字、#、$、_ <=30字符
列类型
Char(n) 【定长字符串类型】 Varchar2(n) 【可变长字符串类型】 Number 【数值型】 Date 【日期时间型】 ……
字符型 数值型
日期型
列(续)
[ [ NOT ] NULL] [<列约束>]
Create Table Student(
S# Varchar2(10) Constraint PK Primary Key,
Sname Varchar2(20) NOT NULL, Age Number(3), Sex Char(1) DEFAULT ‘F’
插入一条 新记录
S# Sname Age 001 John 20
Sex F
自动以默认 值填充
B)列约束
必须跟在每个列定义后定义 只对当前列有效 可以使用四种类型的约束 (主键、唯一键、外键、检查约束)
格式
[Constraint <约束名>] <约束类型>
例:
S# char(n) Constraint PK_Student Primary Key S# char(n) Primary Key
NOT NULL表示 不允许空值,实 际上是Check约
束的简化
)
A)默认值
当往表中插入一条新记录时,如果某列上有 默认值,并且新记录中未指定该列的值,则 自动以默认值填充。
Insert Into Student(s#, sname, age) Values(‘001’ , ’John’, 20)
DDL Create View/Drop View:视图操作
Create Index/Drop Index:索引操作
Insert
DML Delete
SQL
Select
记录操作
Update DCL Grant
Revoke 嵌入式SQL的使
用规定
权限管理
4.1.4 SQL的主要特点
一.综合统一
数据库的主要功能是通过数据库支持的 数据语言来实现的。
在基本表之上
列约束:在每列后定 义,只对当前列有效
表约束:在全部列定 义后定义,可定义多
个列上的约束
创建基本表
基本表构成:表名,列和约束
Create Table <基本表名>(
在SQL数据库中 ,不一定必须
列名1 列类型1 [列约束1], 定义主键,这
列名2
列类型2
[列约束2],
与关系模型有 差别
Age Number(3) Constraint CK_S Check (age>14 and age<100),
Sex Char(1), Constraint UQ_S Unique(Sname), Constraint CK_SS Check (Sex IN (‘M’,’F’)) )
B)Primary Key约束
该语句没有指定模式名,模式名隐含为用 户名WANG。
模式的定义(续)
用户可以在创建模式的同时在这个模式中 进一步创建基本表、视图、定义授权。
例3: CREATE SCHEMA WANG
AUTHORIZATION
CREATE TABLE TAB1(COL INT,
COL2 INT,
COL3 CHAR(20),
Date
Oracle数据 类型与ANSI 有一定的差 别
若使用ANSI 类型, Oracle自动 转换为 Oracle类型
完整性约束
主键约束(Primary Key)
实体完整性
唯一键约束(Unique) 外键约束(Foreign Key)
参照完整性
检查约束(Check)
用户自定义完整性
这些约束既可以定义 在列上,也可以定义
E)Foreign Key约束
外键约束:外部键约束或参照完整性约束。 表中某列值引用其它表的主键列,参照完整 性含义。 若在Foreign Key约束的列中键入非NULL值, 则此值必须在被引用的列中存在,否则将违 反外部关键字约束。
E)Foreign Key约束(续)
Create Table Student( S# Varchar2(10) Constraint PK_S Primary Key, Sname Varchar2(20), Age Number(3))
…[表…约束Cr]eate Table Student(
)
S# Varchar2(10) Constraint PK Primary Key,
语句功能:定Sn义ame基V本arc表har的2(表20)名, 及其结 构。
Age Number(3),
Sex Char(1))
定义列
完整格式
<列名> <列类型> [ DEFAULT <默认值>]
Sname Varchar2(20),
Age Number(3) ,
Sex Char(1))
Create Table SC( --选课表 S# Varchar2(10) ,
一个表只能 有一个主键
!!!
C# Varchar2(20),
Score Number(3) ,
Constraint PK_SC Primary Key(S#,C#)) (这是一个主键包含两个属性列)
4.2 学生-课程数据库
Student关系:Fra bibliotekSno
95001 95002 05003 95004
Sname
李勇 刘晨 王名 张立
Ssex
男 女 女 男
Sage
20 19 18 19
Sdept
CS IS MA IS
学生-课程数据库
Course关系:
Cno Cname
1
数据库
2
数学
3
信息系统
4
操作系统
CrAegaSetCeNHTuaOmbOlbeLeSCr(th3u)adr,e(n20t(), SS#eCxoVCnahrscatrhra(a1irn)2t(U10Q)_CDoUnsntirqauinet(NPAKM_SE,PrSimCaHrOyOKLe)y, ) S)name Varchar2(20) Constraint UQ_S Unique, Age Number(3) , Sex Char(1), Constraint UQ_SS Unique(Sname)
4.1.2 SQL语言的基本概念
SQL语言支持关系数据库三级模式结构, 其中:外模式对应于视图(view)和部分基本表
(basetable) 模式对应于基本表 内模式对应于存储文件
基本表是本身独立存在的表,在SQL中一个关系 对应一个表 视图是从基本表或其他视图中导出的表,它本身 不独立存储在数据库中 ,视图是一个虚表。
SQL数据库的三级体系结构(续1)
SQL数据库:支持SQL语言的关系数据库
SQL用户
外模式
关系子模式
视图(View)
概念模式
关系模式
基本表
内模式 ANSI
存储模式 关系数据库
文件 SQL数据库
4.1.3 SQL的组成
Create Table/Alter Table/Drop Table:定义.修改.删除基 本表
SQL(Structure Query Language)是结构化查询语 言,是介于关系代数与关系演算之间的语言。 SQL语言是1974年由Boyce和Chamberlin提出的。 1975年至1979年IBM公司研制的关系数据库管理系统 SYSTEM R上实现了这种语言。 第 一 个 SQL 标 准 是 1 9 8 6 年 1 0 月 由 美 国 国 家 标 准 局 (ANSI)公布的,该标准为SQL一86。 1989年第二次公布SQL标准(SQL一89), 1992年又公布了SQL一92标准。 1999年又公布了新的SQL标准:SQL3。
定义约束
列约束:在每个列后定义,可以有多个约 束子句
不能定义多个列上的约束
表约束:在全部列定义完成后定义,可以 有多个约束子句
多个列上的约束必须使用表约束 单列上的约束可以用列约束,也可用表约束
四种约束都可以作为列约束或表约束
A)列约束和表约束举例
Create Table Student( S# Varchar2(10) Constraint PK_S Primary Key, Sname Varchar2(20),
第四章 关系数据库标准语言 SQL
本章主要内容
4.1 SQL 概述 4.2 数据定义 4.3 数据操纵 4.4 数据查询 4.5 数据控制 4.6 视图
4.1 SQL概述
SQL简介 SQL的发展历程 SQL的主要特点 SQL数据库中的术语 SQL数据库的三级体系结构 SQL的组成
4.1 SQL的产生和发展
ANSI / ISO
Char(n) 或Character(n) Character Varying(n) 或Char Varying(n) Numeric Decimal Integer Int Float Double Real Date Time
Oracle Char(n) Varchar2(n) Number
注意:调用该命令的用户必须具备DBA权 限,或者获得了DBA授予的CREATE SCHEMA权限。
模式的定义(续)
例1:定义一个学生-课程模式S-T CREATE SCHEMA S-T AUTHORIZATION WANG ;
为wang定义了一个模式S-T
例2:CREATE SCHEMA AUTHORIZATION WANG ;
)
D)Unqiue约束对空值的处理
若约束列中有一列不为空,就实施约束;若约束列都为空,则不实施约束
NO NAME 1 管理系 2 管理系 3 管理系 4 管理系 5 6 7 8
SCHOOL 商学院
管理学院 管理学院
管理学院 管理学院
OK Error!
OK OK Error! OK OK
值唯一 值重复 值唯一 值唯一 实施约束 约束列都空, 不实施约束
COL4 NUMBER(10,3) );
二、删除模式
语句为:
DROP SCHEMA <模式名> <CASCADE | RESTRICT>
CASCADE(级联):表示在删除模式的同时把 该模式中的所有的数据库对象全部一起删 除。
RESTRICT(限制):表示如果该模式已经定 义了下属的数据库对象(如表、视图等) ,则拒绝该
定义主键:不许有空值,也不可重复 一个表只能包含一个主键约束 当一个表的主关键字由多个列构成时,需 要表一级的完整性约束说明。
B)Primary Key约束(续)
例如:
Create Table Student(
S# Varchar2(10) Constraint PK_S Primary Key,
SQL 语 言 则 集 ( DDL)、 ( DML)、 (DCL)、(DSDL)的功能于一体。 二.高度非过程化
用户只需提出"做什么",而不必指明" 怎么做"
3、SQL的主要特点(续1)
三.面向集合的操作方式 SQL语言采用集合操作方式 四.以同一种语法结构提供多种使用方式 SQL语言既是自含式语言,又是嵌入式语言 五.语言简洁,易学易用 核心功能只用了9个动词:CREATE,DROP, ALTER,SELECT,INSERT,UPDATE, DELETE,GRANT,REVOKE