版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/carrot_guo/article/details/88073183
定义模式
CREATE SCHEMA TEST AUTORIZATION ZHANG
CREATE TABLE TAB1(COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3),
COL5 DECIMAL(5,2));
删除模式
DROP SCHEMA <模式名> <CASCADE|RESTRICT>
-
CASCADE:删除模式的同时把该模式中所有的数据库对象全部删除;
-
RESTRICT:如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝
该删除语句的执行;当该模式中没有任何下属的对象时才能执行。 -
例子
DROP SCHEMA ZHANG CASCADE
数据类型
数据类型 | 含义 |
---|---|
CHAR(n) | 长度为n的定长字符串 |
VARCHAR(n) | 最大长度为n的变长字符串 |
INT | 长整数(也可以写作INTEGER) |
SMALLINT | 短整数 |
NUMERIC(p,d) | 定点数,由p位数字(不包括符号、小数点)组成,小数后面有d位数字 |
REAL | 取决于机器精度的浮点数 |
Double Precision | 取决于机器精度的双精度浮点数 |
FLOAT(n) | 浮点数,精度至少为n位数字 |
DATE | 日期,包含年、月、日,格式为YYYY-MM-DD |
TIME | 时间,包含一日的时、分、秒,格式为HH:MM:SS |
基本表定义
CREATE TABLE <表名>
(<列名> <数据类型>[ <列级完整性约束条件> ]
[,<列名> <数据类型>[ <列级完整性约束条件>] ] …
[,<表级完整性约束条件> ] );
- 例子
建立“学生”表Student,学号是主码,姓名取值唯一。
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY, /*列级完整性约束条件*/
Sname CHAR(20) UNIQUE, /*Sname取唯一值*/
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20));
建立一个“课程”表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*/
建立一个“学生选课”表SC:
CREATE TABLE SC
(Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno),
FOREIGN KEY (Cno) REFERENCES Course(Cno));
修改基本表
新增那一列一律是空值;
ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [ 完整性约束 ] ]
[ DROP <完整性约束名> ]
[ ALTER COLUMN<列名> <数据类型> ];
- 例子
向Student表增加“入学时间”列,其数据类型为日期型;
ALTER TABLE Student ADD S_entrance DATE;
将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。
ALTER TABLE Student CHANGE Sage Sage INT;
增加课程名称必须取唯一值的约束条件。
ALTER TABLE Course ADD UNIQUE(Cname);
删除基本表
DROP TABLE <表名>[RESTRICT|CASCADE];
-
RESTRICT:删除该表示有限制的,不能被其他表的约束所引用,若存在依赖该表的对象,则表不能被删除;
-
CASCADE:删除该表没有限制;
-
例子
删除Student表
DROP TABLE Student CASECADE;
索引的建立与删除
建立索引的目的
加快查询速度;
建立索引
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
- 例子
在Student表的Sname(姓名)列上建立一个聚簇索引:
CREATE CLUSTER INDEX Stusname ON Student(Sname);
在Student表的Sname(姓名)列上建立一个聚簇索引;
在最经常查询的列上建立聚簇索引以提高查询效率;
一个基本表上最多只能建立一个聚簇索引;
经常更新的列不宜建立聚簇索引;
为学生-课程数据库中的Student,Course,SC三个表建立索引。
CREATE UNIQUE INDEX Stusno ON Student(Sno); /*Student表按学号升序建唯一索引*/
CREATE UNIQUE INDEX Coucno ON Course(Cno); /*Course表按课程号升序建唯一索引*/
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); /*SC表按学号升序和课程号降序建唯一索引*/
删除索引
删除索引时,系统会从数据字典中删去有关该索引的
描述。
DROP INDEX <索引名>;
- 例子
删除Student表的Stusname索引
DROP INDEX Stusname ON Student;