设有学生-课程数据库,内含三个表:
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
一、数据定义
(一)模式的定义与删除
1、定义模式
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
如果没有指定<模式名>,那么<模式名>隐含为<用户名>
例如:为用户WANG定义一个学生-课程模式S-T
CREATE SCHEMA**"S-T"** AUTHORIZATION **WANG**//常规写法
CREATE SCHEMA AUTHORIZATION **WANG** // <模式名>隐含为用户名WANG
一个模式下可以创建多个基本表、视图和索引等数据库对象
例如:为用户ZHANG创建一个模式TEST,并在其中定义一个表TAB1
CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TAB1(
COL1 INT,
COL2 CHAR(20),
COL3 DECIMAL(5,2)
);
2、删除模式
DROP SCHEMA <模式名><CASCADE|RESTRICT>
其中CASCADE和RESTRICT两者必选其一。
CASCADE(级联)表示将该模式中所有数据库对象全部删除。
RESTRICT(限制)表示如果该模式中已经定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行,只有当该模式下没有任何下属对象时才能执行DROP SCHEMA 语句。
(二)基本表的定义、删除与修改
1、定义基本表
如图定义一个“学生”表Student
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY, //列级完整性约束条件,Sno是主码
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) NOT NULL,
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY(Cpno)REFERENCES Course(Cno)//表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno
);
2、数据类型
常用数据类型表
数据类型 | 含义 |
---|---|
char(n) ,character(n) | 长度为n的定长字符串 |
varchar(n),charactervarying(n) | 最大长度为n的变长字符串 |
clob | 字符串大对象 |
blob | 二进制大对象 |
int,integer | 长整数(4字节) |
smallint | 短整数(2字节) |
bigint | 大整数(8字节) |
numeric(p,d) | 定点数,p位数字(不包括符号、小数点)组成,小数点后面有d位数字 |
float(n) | 可选精度的浮点数,精度至少为n位数字 |
boolean | 逻辑布尔量 |
date | 日期 格式为yyyy-mm-dd 例如2022-10-15 |
time | 时间,包含一日的时分秒,格式为HH:MM:SS |
3、修改基本表
ALERT TABLE <表名>
[ADD [COLUMN] <新列名><数据类型>[完整性约束]]
[ADD<表级完整性约束>]
[DROP [COLUMN]<列名