SQL server中创建、删除、添加表、索引等
--创建student表格
create table student
(
sno int primary key,
sname char(10) unique,
ssex char(5),
sage int,
sdept char(10)
);
--创建course表
create table course
(
cno int primary key,
cname char(10) unique,
cpno int,
ccredit int,
foreign key(cpno) references course(cno)
);
--创建SC表
create table sc
(
sno int,
cno int,
grade int,
primary key(sno,cno),
foreign key(sno) references student(sno),
foreign key(cno) references course(cno)
);
--创建任意一个表
create table anyone
(
a int primary key
);
--向student表中增加入学时间列
alter table student add senterence date;
--将年龄的数据类型由整数型改为短整型
alter table student alter column sage smallint;
--增加课程名称取唯一值的约束条件
alter table course add unique(cname);
--删除基本表有两种:restrict和cascade
--restrict删除表是有限制的,即想要删除的基本表不能被其他表的约束所引用;不能存在依赖该表的对象
--cascade删除表则是没有限制的,在删除表的同时相关的依赖对象也会被删除
drop table anyone;
--建立索引是为了加快查询速度,DBA和表的属主(即建立表的人)都可以根据需要建立索引,有些DBMS自动建立索引。DBMS可以自动完成维护索引和自动选择是否使用索引和使用哪些索引
--聚簇索引:按表中记录的物理顺序排序
--student表按照学号升序建立唯一索引
create unique index stusno on student(sno);
--按照课程号升序建立唯一索引在course表中
create unique index coucno on course(cno);
--按照学号升序和课程号降序建立唯一索引
create unique index scno on sc(sno asc,cno desc);
--【注】对于已含重复值的属性列不能建立unique索引,也就是唯一索引
--对某个列建立unique索引后,插入新记录时DBMS会自动检查新纪录在该列上是否取了重复值。这就相当于是增加了一个unique约束
--建立聚簇索引cluster后,基表中数据也需要按照指定的聚簇属性值的升序或降序存放。也就是说聚簇索引的索引项顺序与表中的物理顺序一致
create clustered index stusname on student(sname);
--在SQL server中建立聚簇索引需要使用clustered,否则会发生编译错误,且需要注意的是在创建完基本表后,系统会自动创建一个聚簇索引,所以如果想为这个表在创建一个聚簇索引时应该先删除以前的索引在创建,因为一个基本表只允许拥有一个聚簇索引
--修改索引的名字
alter index scno rename to scsno on sc;
--删除索引:删除索引时,系统会从数据字典中删除有关该索引的描述
drop index student.stuname;--必须加上表名