0
点赞
收藏
分享

微信扫一扫

sql 练习系列:修改表结构

微笑沉默 2022-08-09 阅读 285


以下练习均在mysql中实现:

使用SQL语句定义数据表。

要求使用命令定义如下3个表:S, C,SC

表1 学生信息表(S)

字段名称

类型及长度

说明

备注

Sno

CHAR(12)

学号

主码

SID

CHAR(15)

身份证号码

Sname

CHAR(20)

姓名

非空

Ssex

CHAR(2)

性别

可为空

Sbirthday

DATETIME

出生日期

可为空

Sdept

CHAR(40)

所在院系

可为空

Saddress

CHAR(50)

籍贯 

可为空

sage

Int 

年龄

……


表2课程信息表(C)

字段名称

类型及长度

说明

备注

Cno

CHAR(6)

课程编号

主码

Cname

CHAR(30)

课程名称

非空

Cpno

CHAR(6)

先修课号

可为空

Ccredit

INT

学分

可为空

……

……


表3 选课信息表(SC)

字段名称

类型及长度

说明

备注

Sno

CHAR(12)

学号

主码

Cno

CHAR(6)

课程编号

主码

Grade

INT

成绩

可为空

注:(1) Sno外码,参照表S中的属性Sno

(2) Cno外码,参照表C中的属性Cno



use test;


create table S (sno varchar(12) primary key,sid varchar(15),sname varchar(20)
not null, ssex varchar(2),sbirthday datetime,sdept varchar(40),
saddress varchar(50),sage int);





create table C (cno varchar(6) primary key,cname varchar(30) not null,



cpno varchar(6),ccredit int); 






create table SC (sno varchar(12),cno varchar(6),grade int, primary key(sno,cno),



foreign key (sno) references S(sno),foreign key (cno) references C(cno));



-- 两个属性sno,cno 作为主码,主码具有唯一性。



修改表结构

在S中增加新的字段,专业名称(Smajor),可为空



alter table s add column smajor varchar(20);




在S中删除专业字段



alter table s drop column smajor;




修改S中Sname字段长度为25



alter table s modify column sname varchar(25); 



--sql server写法:alter table s alter column sname type varchar(25); 




修改S中Sbirthday数据类型为date



alter table s modify column sbirthday date;



--sql server写法:alter table s alter column sbirthday type date;




给S中Sname 增加唯一性约束


alter table s add constraint uni_sname unique(sname);




删除S中Sname 增加的唯一性约束


alter table s drop key uni_sname;



--sqlserver:  alter table student drop constraint unique_sname





给SC表中的grade增加约束范围为0~100



alter table sc add constraint gradec check(grade>=0 and grade <=100);




修改SC表中的grade字段名称为Sgrade



alter table sc change column grade sgrade int; 



--sql server: alter table sc rename column grade to sgrade 




修改C表中的Ccredit字段的约束条件,不允许为空



alter table c change column ccredit ccredit int not null;



--sql server: alter table c alter column ccredit set not null;




删除表:

DROP TABLE table_name;
或者是
DROP TABLE IF EXISTS table_name;

举报

相关推荐

0 条评论