创建表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, /*列级完整性约束,cno是主码*/
cname char(40) NOT NULL, /*列级完整性约束,cname不能取空值*/
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(cpno) REFERENCES student(sno)
/*表级完整性约束条件,sno外码 ,被参照表是student*/
FOREIGN KEY(cpno) REFERENCES Course(Cno)
/*表级完整性约束条件,cno外码 ,被参照表是course*/
};
alter table <表名>
[add column <新列名><数据类型> [完整性约束]]
[add [表级完整性约束]]
[drop [column] <列名> [cascade |restrict] ]
[drop constraint<完整性约束名>[cascade |restrict] ]
[alter column<列名><数据类型>]
drop table student cascade
/*cascade 删除表的同时,删除视图 */
/*restrict 若有视图 则不删除表 */
create 【unique】【cluster】index <索引名> on <表名>(<列名>[<次序>],....)
unique 【唯一索引,每一个索引值只对应唯一数据记录】
cluster 【聚簇索引】
ASC (升序,默认) DES (降序)
ALTER INDEX <旧索引名> rename to <新索引名>;
select 【all | distinct】<目标列表达式> 【,<目标列表达式> 】....{distinct 消除重复行}
from <表名或视图>,【表名或视图】 | (select 语句)【AS】<别名>
【where <条件表达式>】
【group by <列名1> 【having <条件表达式>】】//分组
【order by <列名2> 【ASC | DESC】】 //排序
create view 视图名 {列名,..} AS 子查询 【with check option】
drop view 视图名 【cascade】/*cascade 删除关联视图 */ /*不加 若有关联视图 不执行*/
授权:
grant <权限> 【<权限>,....】[ALL PRIVILEGES全部]
ON <对象类型> <对象名>【<对象类型> <对象名> ,...】
TO <用户>【<用户> ,....】
【with grant option】/*可以再次授权*/
收回权限
Revoke <权限>【<权限>,....】
ON <对象类型> <对象名>【<对象类型> <对象名> ,...】
FROM <用户>【<用户> ,....】【CASCADE | RESTRICT】
触发器
create trigger <触发器名>
{before | after } <触发事件> on <表名>/*激活时间在执行触发事件前后*/
referencing NEW | OLD ROW AS <变量> /* referencing 指出引用变量*/
FOR EACH | {ROW | STATEMENT} /*定义触发器类型,指定频率*/
【WHEN <触发条件> <触发动作体>】/*仅当触发条件为真才触发执行体*/