20210404ch03关系数据库标准语言SQL

❖掌握
⬧ CREATE DATABASE CREATE SCHEMA 
⬧ CREATE TABLE CREATE INDEX
❖了解
⬧ SQL语言的历史、特点
	其功能包括数据定义、数据查询、数据操纵和数据控制
	❖SQL的特点
		⬧ 综合统一
		⬧ 高度非过程化
		⬧ 面向集合的操作方式
		⬧ 两种使用方式,统一的语法结构,既是独立的语言,也是嵌入语言
		⬧ 简洁易学
❖重点
⬧ 数据库、模式、表、索引的创建、删除
❖难点
⬧ 模式

❖[例3.5] 建立“学生”表Student。学号是主码,姓名取值唯一。

CREATE TABLE Student 
(Sno CHAR(9) PRIMARY KEY/*主键 列级完整性约束条件*/ 
Sname VARCHAR(20) UNIQUE/* Sname取唯一值*/ 
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20) 
);

❖ [3.6 ] 建立一个“课程”表Course。
CREATE TABLE Course 
( Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4)/*先修课*/
Ccredit SMALLINTFOREIGN KEY (Cpno) REFERENCES Course(Cno)
);

[3.7] 建立一个“学生选课”表SC,它由学号Sno、课程号Cno,修课成绩
Grade组成,其中(Sno, Cno)为主码。
CREATE TABLE SC 
(	Sno CHAR(9),
	Cno CHAR(4),
	Grade SMALLINTPRIMARY KEY (Sno,Cno)FOREIGN KEY (Sno) REFERENCES Student(Sno)FOREIGN KEY (Cno) REFERENCES Course(Cno)
);

###ALTER TABLE

ALTER TABLE <表名>
[ ADD [COLUMN]<新列名> <数据类型> [ 完整性约束 ] ]
[ ADD <表级完整性约束>]
[ DROP [COLUMN]<列名>[CASCADE|RESTRICT] ]
[ DROP CONSTRAINT<完整性约束名[CASCADE|RESTRICT] ]
[ ALTER COLUMN <列名> <数据类型> ];
⬧ <表名>:要修改的基本表
⬧ ADD子句:增加新列和新的完整性约束条件
⬧ DROP子句:删除指定的完整性约束条件
⬧ ALTER COLUMN子句:用于修改列名和数据类型
[3.8] 向Student表增加“入学时间”列,其数据类型为日期型。

	ALTER TABLE Student ADD S_entrance DATE;
	不论基本表中原来是否已有数据,新增加的列一律为空值。
	
[3.9] 将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。

	ALTER TABLE Student ALTER COLUMN Sage INT[3.10] 增加课程名称必须取唯一值的约束条件。

	ALTER TABLE Course ADD UNIQUE(Cname); 
	

删除表

DROP TABLE <表名>RESTRICT| CASCADE];
❖RESTRICT:删除表是有限制的
⬧ 欲删除的基本表不能被其他表的约束所引用
⬧ 如果存在依赖该表的对象,则此表不能被删除
❖CASCADE:删除该表没有限制
⬧ 在删除基本表的同时,相关的依赖对象一起删除
[3.12] 如果选择CASCADE时可以删除表,视图也自动被删除
	DROP TABLE Student CASCADE; 
--NOTICE: drop cascades to view IS_Student
	SELECT * FROM IS_Student;
--ERROR: relation “ IS_Student ” does not exist

建立索引

❖建立索引是加快查询速度的有效手段
❖建立索引
⬧ DBA或表的属主(即建立表的人)根据需要建立
⬧ 有些DBMS自动建立以下列上的索引
➢ PRIMARY KEYUNIQUE
❖维护索引
⬧ DBMS自动完成
❖使用索引
⬧ DBMS自动选择是否使用索引以及使用哪些索引

❖语句格式
CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON
<表名>(<列名>[<次序>][,<列名>[<次序>] ]);
⬧ 用<表名>指定要建索引的基本表名字
⬧ 索引可以建立在该表的一列或多列上,各列名之间用逗号分隔
⬧ 用<次序>指定索引值的排列次序,升序:ASC,
降序:DESC。缺省值:ASCUNIQUE表明此索引的每一个索引值只对应唯一的数据记录
⬧ CLUSTER表示要建立的索引是聚簇索引


[3.13] 为学生-课程数据库中的Student,Course,SC三个表建立索引。其
中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,
SC表按学号升序和课程号降序建唯一索引。
CREATE UNIQUE INDEX Stusno ON Student(Sno)CREATE UNIQUE INDEX Coucno ON Course(Cno)CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);

❖唯一值索引
⬧ 对于已含重复值的属性列不能建UNIQUE索引
⬧ 对某个列建立UNIQUE索引后,插入新记录时DBMS会自动检查新记录在该列上是
否取了重复值。这相当于增加了一个UNIQUE约束

❖ 聚簇索引
⬧ 建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。也
即聚簇索引的索引项顺序与表中记录的物理顺序一致
例如:
CREATE CLUSTER INDEX Stusname ON Student(Sname);
在Student表的Sname(姓名)列上建立一个聚簇索引,而
且Student表中的记录将按照Sname值的升序存放


⬧ 在一个基本表上最多只能建立一个聚簇索引
⬧ 聚簇索引的用途:对于某些类型的查询,可以提高查询效率
⬧ 聚簇索引的适用范围
➢ 很少对基表进行增删操作
➢ 很少对其中的变长列进行修改操作

删除索引

ALTER INDEX <旧索引名> RENAME TO <新索引名>[3.14] 将SC表的SCno索引名改为SCSno
⬧ ALTER INDEX SCno RENAME TO SCSno;DROP INDEX <索引名>
⬧ 删除索引时,系统会从数据字典中删去有关该索引的描述
[3.15] 删除Student表的Stusname索引。
DROP INDEX Student.Stusname
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值