一、 数据定义:
操作对象 | 创建 | 删除 | 修改 |
---|---|---|---|
模式 | CREATE SCHEMA | DROP ~ | |
表 | CREATE TABLE | DROP ~ | ALTER TABLE |
视图 | CREATE VIEW | DROP VIEW | |
索引 | CREATE INDEX | DROP INDEX | ALTER INDEX |
二、数据字典
数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有对象的定义信息以及一些统计信息:
1. 创建表
【例3.1】建立“学生”表Student。学号是主码,姓名取值唯一。
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY, // 列级完整性约束条件,Sno是主码
Sname CHAR(20) unique, // Sname取唯一值 UNIQUE约束
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
【例3.2】建立一个“课程”表Course
CREATE TABLE Course
(Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY (Cpno) REFERENCES Course(Cno) //Cpno是外码,被参照的是Course表,被参照的列是cno
);
【例3.3】建立一个学生选课表SC
CREATE TABLE SC(
Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
//主码由两个属性构成,必须作为表级完整性进行定义
PRIMARY KEY (Sno,Cno),
//表级完整性约束条件,Sno是外码,被参照表示Student
FOREIGN KEY (Sno)REFERENCES Student(Sno)
//表级完整性越是条件,Cno是外码,被参照表示Course
FOREIGN KEY (Cno)REFERENCES Course(Cno)
)
一、模式的创建
【例题3.1】为用户WANG定义一个学生-课程模式S-T
CREATE SCHEMA "S-T" AUTHORIZATION WANG;
【例题3.2】为用户ZHANG创建了一个模式TEST,并且在其中定义一个表TABE1
CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TABE1 ( COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3),
COL5 DECIMAL(5,2)
);
二、模式的删除
DROP SCHEMA <模式名>
【例3.3】删除模式ZHANG,同时该模式中定义的表TABE1也被删除
DROP SCHEMA ZHANG CASCADE
ALTER TABLE <表名>
[ADD[COLUMN] <新列名> <数据类型> [ 完整性约束 ] ]
[ADD <表级完整性约束>]
[DROP [ COLUMN ] <列名> [CASCADE| RESTRICT] ]
[DROP CONSTRAINT<完整性约束名>[ RESTRICT | CASCADE ] ]
[ALTER COLUMN <列名><数据类型> ]
<表名>是要修改的基本表
ADD
子句用于增加新列、新的列级完整性约束条件和新的表级完整
性约束条件
DROP COLUMN
子句用于删除表中的列
如果指定了CASCADE
短语,则自动删除引用了该列的其他对象
如果指定了RESTRICT
短语,则如果该列被其他对象引用,关系数据库
管理系统将拒绝删除该列
DROP CONSTRAINT
子句用于删除指定的完整性约束条件
ALTER COLUMN
子句用于修改原有的列定义,包括修改列名和数据
类型
【例5.1】向Student表增加“入学时间”列,其数据类型为日期型
ALTER TABLE Student ADD S_entrance DATE; //这里可以顺便加个完整性约束
【例5.2】将Student 的年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。
ALTER TABLE Student ALTER COLUMN Sage INT;
【例5.3】增加课程名称必须取唯一值得约束条件。
ALTER TABLE Course ADD UNIQUE(Cname)
DROP TABLE<表名> [RESTRICT| CASCADE]
【例6.1】删除Student表
DROP TABLE Student CASCADE; //级联删除
//表的定义被删除,数据被删除。
//表上建立的索引、视图、触发器也一并被删除
一、索引的概念
B+树索引
(参见爱课程网3.2节动画《B+树的增删改》) //具有动态平衡的优点 ?????????????散列(hash)索引
//HASH索引具有查找速度快的特点CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON
<表名>(<列名>[<次序>][,<列名>[<次序>] ]…);ASC
,降序:DESC
。缺省UNIQUE
:此索引的每一个索引值只对应唯一的数据记录CLUSTER
:表示要建立的索引是聚簇索引【例7.1】为学生-课程数据库中的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 DEC);
三、删除索引
DROP INDEX <索引名> on <表名>;