第二讲 SQL-数据定义语句
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
An Introduction to Database System
包括外码:格式一
create table sc ( sno char(6) REFERENCES student(sno), cno char(6), grade int, primary key (sno,cno), )
An Introduction to Database System
An Introduction to Database System
2.2.1 定义语句格式
CREATE TABLE <表名>
(<列名> <数据类型>[ <列级完整性约束条件> ] [ , < 列 名 > < 数 据 类 型 >[ < 列 级 完 整 性 约 束 条 件 >] ] … [,<表级完整性约束条件> ] );
常用完整性约束
主码约束: PRIMARY KEY 唯一性约束:UNIQUE 非空值约束:NOT NULL 参照完整性约束
PRIMARY KEY与 UNIQUE的区别?
An Introduction to Database System
create table course ( cno char(6) primary key, cname varchar(20), cpno char(6), ccredit int )
[例7] 删除学生姓名必须取唯一值的约束。
标准:ALTER TABLE Student DROP UNIQUE(Sname);
SQL Server: ALTER TABLE Student DROP UQ__Student__77BFCB91
(其中UQ__Student__77BFCB91 为约束名,由系统生成,在企业管理器
SQL Server:
ALTER TABLE Student ADD Scome DATETIME
若基本表中原来是否已有数据,新增加的列
一律为空值。
An Introduction to Database System
语句格式(续) 删除属性列
间接删除
把表中要保留的列及其内容复制到一个新表中 删除原表 再将新表重命名为原表名
CREATE TABLE Student (Sno CHAR(6) PRIMARY KEY, Sname CHAR(20) UNIQUE, Ssex CHAR(1), Sage INT, Sdept CHAR(15))
An Introduction to Database System
定义基本表(续)
很少对基表进行增删操作 很少对其中的变长列进行修改操作
An Introduction to Database System
二、删除索引
DROP INDEX <索引名>;
删除索引时,系统会从数据字典中删去有关 该索引的描述。
[例9] 删除Student表的Stusname索引。 标准:DROP INDEX Stusname; SQL Server:DROP INDEX Student.Stusname
<表名>:所要定义的基本表的名字 <列名>:组成该表的各个属性(列) <列级完整性约束条件>:涉及相应属性列的完整性 约束条件 <表级完整性约束条件>:涉及一个或多个属性列的 完整性约束条件
An Introduction to Database System
例题
[ 例 1] 建立一个“学生”表 Student ,它由学号 Sno 、姓名 Sname 、性别 Ssex 、年龄 Sage 、所 在系 Sdept 五个属性组成。其中学号不能为空, 值是唯一的,并且姓名取值也唯一。
An Introduction to Database System
例题
[例8] 为学生-课程数据库中的Student,Course,SC
三个表建立索引。其中 Student 表按学号升序建唯一 索引,Course表按课程号升序建唯一索引,SC表按学 号升序和课程号降序建唯一索引。
CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno);
格式二
create table sc ( sno char(5) , cno char(6), grade int, primary key (sno,cno), FOREIGN KEY (sno) REFERENCES student(sno) )
An Introduction to Database System
An Introduction to Database System
建立索引 (续)
聚簇索引
建立聚簇索引后,基表中数据也需要按指 定的聚簇属性值的升序或降序存放。也即 聚簇索引的索引项顺序与表中记录的物理 顺序一致。例:
标 准 : CREATE CLUSTER INDEX Stusname ON Student(Sname) SQL Server:同上,CLUSTER改成CLUSTERED
标准SQL:
SQL Server: TABLE Student ALTER COLUMN Sage SMALLINT
ALTER TABLE Student MODIFY Sage SMALLINT;
ALTቤተ መጻሕፍቲ ባይዱR
注:修改原有的列定义有可能会破坏已有数据
An Introduction to Database System
An Introduction to Database System
5. 语言简捷,易学易用
表 3.1 SQL 语言的动词 SQL 功 能 数 据 定 义 数 据 查 询 数 据 操 纵 数 据 控 制 动 词 CREATE, DROP, ALTER SELECT INSERT, UPDATE DELETE GRANT, REVOKE
数据库基础与应用
第二讲 数据定义语句及完整性 约束
上海第二工业大学 计算机与信息学院
An Introduction to Database System
2.1 SQL概述
SQL的特点
1. 2. 3. 4. 5. 综合统一 高度非过程化 面向集合的操作方式 以同一种语法结构提供两种使用方法 语言简洁,易学易用
基本语句中子句的不同 功能有扩展
An Introduction to Database System
不同之处包括:
2.2 数 据 定 义
SQL Server中建立数据库 CREATE DATABASE dbs ON ( NAME = dbs_dat, FILENAME = 'H:\教学\2012-II\数据库系 统概论\dbs.mdf') SQL Server删除数据库 drop database dbs
直接删除属性列:
[例5]:标准:ALTER TABLE Student Drop Scome SQL Server : ALTER TABLE Student Drop Column
Scome
An Introduction to Database System
[例6] 将年龄的数据类型改为半字长整数。
An Introduction to Database System
SQL 的各种版本
SQL标准的发展:从SQL/86-SQL/89-SQL/92SQL99-SQL2003(P79) 各种DBMS的采用的SQL和标准SQL有所不同如:
SQL Server/Sybase采用的SQL为Transact-SQL Oracle采用的SQL为PL/SQL(Procedural Language/Structured Query Language )
An Introduction to Database System
例题 (续)
[例2] 建立一个“学生选课”表SC,它由 学号Sno、课程号Cno,成绩Grade组成, 其中(Sno, Cno)为主码。 CREATE TABLE SC(
Sno CHAR(6) , Cno CHAR(6) , Grade int, Primary key (Sno, Cno));
在Student表的Sname(姓名)列上建立一个聚簇索引,而
且Student表中的记录将按照Sname值的升序存放
An Introduction to Database System
建立索引 (续)
在一个基本表上最多只能建立一个聚簇 索引 聚簇索引的用途:对于某些类型的查询, 可以提高查询效率 聚簇索引的适用范围
<表名>: 要修改的基本表 ADD子句: 增加新列和新的完整性约束条件 DROP子句: 删除指定的完整性约束条件 MODIFY子句:用于修改列名和数据类型
An Introduction to Database System
例题
[例4] 向Student表增加“入学时间”列,其数 据类型为日期型。
ALTER TABLE Student ADD Scome DATE
三、删除基本表
DROP TABLE <表名>;
数据、表上的索引都删除
[例3] 删除Student表 DROP TABLE Student ;
An Introduction to Database System
二、修改基本表
ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [ 完整性约束 ] ] [ DROP <完整性约束名> ] [ MODIFY <列名> <数据类型> ];
2.2.2 建立与删除索引
建立索引是加快查询速度的有效手段 建立索引
由 DBA 或表的属主(即建立表的人)根据需要建 立 有些DBMS自动建立以下列上的索引 PRIMARY KEY UNIQUE DBMS自动完成
维护索引
使用索引
DBMS自动选择是否使用索引以及使用哪些索引 An Introduction to Database System
一、建立索引
语句格式
CREATE [UNIQUE] [CLUSTER] INDEX < 索 引 名 > ON < 表 名 >(< 列 名 >[< 次 序 >][,< 列 名 >[< 次 序 >] ]…);
用<表名>指定要建索引的基本表名字 索引可以建立在该表的一列或多列上,各列名之间用逗 号分隔 用<次序>指定索引值的排列次序,升序:ASC,降序: DESC。缺省值:ASC UNIQUE 表明此索引的每一个索引值只对应唯一的数据 记录 CLUSTER表示要建立的索引是聚簇索引
中可查,为避免系统生成约束名,用户可指定名称, 例 : CREATE TABLE student (id CHAR(8) PRIMARY KEY,name VARCHAR(16) CONSTRAINT nameunique UNIQUE
An Introduction to Database System
An Introduction to Database System
2.3 SQL Server的完整性
一、实体完整性
二、参照完整性 三、用户定义的完整性
An Introduction to Database System
一、实体完整性
CREATE TABLE语句中提供了PRIMARY KEY子句
An Introduction to Database System
2.2 数 据 定 义
表 3.2 SQL 的数据定义语句 操 作对 象 表 视 图 索 引 操 作 方 式 创 建 CREATE TABLE CREATE VIEW CREATE INDEX 删 除 DROP TABLE DROP VIEW DROP INDEX 修 改 ALTER TABLE
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
An Introduction to Database System
建立索引 (续)
唯一值索引
对于已含重复值的属性列不能建UNIQUE索引 对 某 个 列 建 立 UNIQUE 索 引 后 , 插 入 新 记 录 时 DBMS会自动检查新记录在该列上是否取了重复值。 这相当于增加了一个UNIQUE约束
包括外码:格式一
create table sc ( sno char(6) REFERENCES student(sno), cno char(6), grade int, primary key (sno,cno), )
An Introduction to Database System
An Introduction to Database System
2.2.1 定义语句格式
CREATE TABLE <表名>
(<列名> <数据类型>[ <列级完整性约束条件> ] [ , < 列 名 > < 数 据 类 型 >[ < 列 级 完 整 性 约 束 条 件 >] ] … [,<表级完整性约束条件> ] );
常用完整性约束
主码约束: PRIMARY KEY 唯一性约束:UNIQUE 非空值约束:NOT NULL 参照完整性约束
PRIMARY KEY与 UNIQUE的区别?
An Introduction to Database System
create table course ( cno char(6) primary key, cname varchar(20), cpno char(6), ccredit int )
[例7] 删除学生姓名必须取唯一值的约束。
标准:ALTER TABLE Student DROP UNIQUE(Sname);
SQL Server: ALTER TABLE Student DROP UQ__Student__77BFCB91
(其中UQ__Student__77BFCB91 为约束名,由系统生成,在企业管理器
SQL Server:
ALTER TABLE Student ADD Scome DATETIME
若基本表中原来是否已有数据,新增加的列
一律为空值。
An Introduction to Database System
语句格式(续) 删除属性列
间接删除
把表中要保留的列及其内容复制到一个新表中 删除原表 再将新表重命名为原表名
CREATE TABLE Student (Sno CHAR(6) PRIMARY KEY, Sname CHAR(20) UNIQUE, Ssex CHAR(1), Sage INT, Sdept CHAR(15))
An Introduction to Database System
定义基本表(续)
很少对基表进行增删操作 很少对其中的变长列进行修改操作
An Introduction to Database System
二、删除索引
DROP INDEX <索引名>;
删除索引时,系统会从数据字典中删去有关 该索引的描述。
[例9] 删除Student表的Stusname索引。 标准:DROP INDEX Stusname; SQL Server:DROP INDEX Student.Stusname
<表名>:所要定义的基本表的名字 <列名>:组成该表的各个属性(列) <列级完整性约束条件>:涉及相应属性列的完整性 约束条件 <表级完整性约束条件>:涉及一个或多个属性列的 完整性约束条件
An Introduction to Database System
例题
[ 例 1] 建立一个“学生”表 Student ,它由学号 Sno 、姓名 Sname 、性别 Ssex 、年龄 Sage 、所 在系 Sdept 五个属性组成。其中学号不能为空, 值是唯一的,并且姓名取值也唯一。
An Introduction to Database System
例题
[例8] 为学生-课程数据库中的Student,Course,SC
三个表建立索引。其中 Student 表按学号升序建唯一 索引,Course表按课程号升序建唯一索引,SC表按学 号升序和课程号降序建唯一索引。
CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno);
格式二
create table sc ( sno char(5) , cno char(6), grade int, primary key (sno,cno), FOREIGN KEY (sno) REFERENCES student(sno) )
An Introduction to Database System
An Introduction to Database System
建立索引 (续)
聚簇索引
建立聚簇索引后,基表中数据也需要按指 定的聚簇属性值的升序或降序存放。也即 聚簇索引的索引项顺序与表中记录的物理 顺序一致。例:
标 准 : CREATE CLUSTER INDEX Stusname ON Student(Sname) SQL Server:同上,CLUSTER改成CLUSTERED
标准SQL:
SQL Server: TABLE Student ALTER COLUMN Sage SMALLINT
ALTER TABLE Student MODIFY Sage SMALLINT;
ALTቤተ መጻሕፍቲ ባይዱR
注:修改原有的列定义有可能会破坏已有数据
An Introduction to Database System
An Introduction to Database System
5. 语言简捷,易学易用
表 3.1 SQL 语言的动词 SQL 功 能 数 据 定 义 数 据 查 询 数 据 操 纵 数 据 控 制 动 词 CREATE, DROP, ALTER SELECT INSERT, UPDATE DELETE GRANT, REVOKE
数据库基础与应用
第二讲 数据定义语句及完整性 约束
上海第二工业大学 计算机与信息学院
An Introduction to Database System
2.1 SQL概述
SQL的特点
1. 2. 3. 4. 5. 综合统一 高度非过程化 面向集合的操作方式 以同一种语法结构提供两种使用方法 语言简洁,易学易用
基本语句中子句的不同 功能有扩展
An Introduction to Database System
不同之处包括:
2.2 数 据 定 义
SQL Server中建立数据库 CREATE DATABASE dbs ON ( NAME = dbs_dat, FILENAME = 'H:\教学\2012-II\数据库系 统概论\dbs.mdf') SQL Server删除数据库 drop database dbs
直接删除属性列:
[例5]:标准:ALTER TABLE Student Drop Scome SQL Server : ALTER TABLE Student Drop Column
Scome
An Introduction to Database System
[例6] 将年龄的数据类型改为半字长整数。
An Introduction to Database System
SQL 的各种版本
SQL标准的发展:从SQL/86-SQL/89-SQL/92SQL99-SQL2003(P79) 各种DBMS的采用的SQL和标准SQL有所不同如:
SQL Server/Sybase采用的SQL为Transact-SQL Oracle采用的SQL为PL/SQL(Procedural Language/Structured Query Language )
An Introduction to Database System
例题 (续)
[例2] 建立一个“学生选课”表SC,它由 学号Sno、课程号Cno,成绩Grade组成, 其中(Sno, Cno)为主码。 CREATE TABLE SC(
Sno CHAR(6) , Cno CHAR(6) , Grade int, Primary key (Sno, Cno));
在Student表的Sname(姓名)列上建立一个聚簇索引,而
且Student表中的记录将按照Sname值的升序存放
An Introduction to Database System
建立索引 (续)
在一个基本表上最多只能建立一个聚簇 索引 聚簇索引的用途:对于某些类型的查询, 可以提高查询效率 聚簇索引的适用范围
<表名>: 要修改的基本表 ADD子句: 增加新列和新的完整性约束条件 DROP子句: 删除指定的完整性约束条件 MODIFY子句:用于修改列名和数据类型
An Introduction to Database System
例题
[例4] 向Student表增加“入学时间”列,其数 据类型为日期型。
ALTER TABLE Student ADD Scome DATE
三、删除基本表
DROP TABLE <表名>;
数据、表上的索引都删除
[例3] 删除Student表 DROP TABLE Student ;
An Introduction to Database System
二、修改基本表
ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [ 完整性约束 ] ] [ DROP <完整性约束名> ] [ MODIFY <列名> <数据类型> ];
2.2.2 建立与删除索引
建立索引是加快查询速度的有效手段 建立索引
由 DBA 或表的属主(即建立表的人)根据需要建 立 有些DBMS自动建立以下列上的索引 PRIMARY KEY UNIQUE DBMS自动完成
维护索引
使用索引
DBMS自动选择是否使用索引以及使用哪些索引 An Introduction to Database System
一、建立索引
语句格式
CREATE [UNIQUE] [CLUSTER] INDEX < 索 引 名 > ON < 表 名 >(< 列 名 >[< 次 序 >][,< 列 名 >[< 次 序 >] ]…);
用<表名>指定要建索引的基本表名字 索引可以建立在该表的一列或多列上,各列名之间用逗 号分隔 用<次序>指定索引值的排列次序,升序:ASC,降序: DESC。缺省值:ASC UNIQUE 表明此索引的每一个索引值只对应唯一的数据 记录 CLUSTER表示要建立的索引是聚簇索引
中可查,为避免系统生成约束名,用户可指定名称, 例 : CREATE TABLE student (id CHAR(8) PRIMARY KEY,name VARCHAR(16) CONSTRAINT nameunique UNIQUE
An Introduction to Database System
An Introduction to Database System
2.3 SQL Server的完整性
一、实体完整性
二、参照完整性 三、用户定义的完整性
An Introduction to Database System
一、实体完整性
CREATE TABLE语句中提供了PRIMARY KEY子句
An Introduction to Database System
2.2 数 据 定 义
表 3.2 SQL 的数据定义语句 操 作对 象 表 视 图 索 引 操 作 方 式 创 建 CREATE TABLE CREATE VIEW CREATE INDEX 删 除 DROP TABLE DROP VIEW DROP INDEX 修 改 ALTER TABLE
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
An Introduction to Database System
建立索引 (续)
唯一值索引
对于已含重复值的属性列不能建UNIQUE索引 对 某 个 列 建 立 UNIQUE 索 引 后 , 插 入 新 记 录 时 DBMS会自动检查新记录在该列上是否取了重复值。 这相当于增加了一个UNIQUE约束