--primary key--主码 unique--不为空
create table student
( sno char(20), --sno char(20) primary key 主码不为空且唯一
sname char(25) unique, --sname取唯一值,不能重复
ssex char(2),
sage int,
sdept char(20),
primary key(sno)
);
create table course
( cno char(20) primary key,
cname char(40),
teacher char(20),
--ccredit smallint,
--foreign key(cpno)references course(cno)
);
create table sc
( sno char(20),
cno char(20),
grade smallint,
primary key(sno,cno),--主码
foreign key (sno) references student(sno),--外码
foreign key(cno) references course(cno)--外码
)
--字符类型
--char--定长字符串 varchar--变长字符串 int--长整数 smallint--短整数 numeric(p,d) 有p位数字(不包括符号、小数点),小数后有d位数字
--double-- float date--日期 time--时间
--每个基本表都属于一个模式,一个模式包含多个基本表
--修改表
--alter table《表名》(add《新列表》《数据类型》【完整性约束】 )(add《完整性约束条件》)(drop《完整性约束名》)(alter column<列名><数据类型>)
--student表添加“入学时间”列,数据类型为日期型
alter table stuent add s_entrance date;
--新增加列为空
--数据类型更改(年龄由字符改为整数)
alter table student alter column sage smallint;
--增加课程名条件(必须取唯一约束条件)
alter table course add unique(cname);
--创建、修改约束
--非空约束
alter table table_name alter column colum_name colun_type null/not null;
--主键约束
alter table table_name add constraint constraint_name primary key(column);
--唯一约束
alter table table_name add constraint constraint_name unique(column);
--添加检查约束
alter table table_name add constraint constraint_name check(sex in('男','女'));
--外码约束
alter table table_name add constraint constraint_name foreign key(column_name) references ref_table(ref_column);
--删除基本表
drop table 表名 restrict/cascade
restrict--不能被其他表约束所引用
cascade--全部删除
--建立索引
--一个基本表上最多只能建立一个聚簇索引,可以建多个unique索引
--表主键默认为聚簇索引,高效
create [unique][cluster] index 索引名 on 表名(列名,次序)
--student表建立聚簇索引
create cluster index stusname on student(sname);
--student 按学号升序建唯一索引
--sc 按学号升序,课程号降序建唯一索引
create unique index stusno on student(sno);
create unique index stuindex on sc(sno asc,cno desc);
--删去索引
drop index 索引名