sql 练习系列:修改表结构

网友投稿 405 2022-11-29

sql 练习系列:修改表结构

以下练习均在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;

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:萝卜爆肝Python自学学习路线
下一篇:使用@RequestBody传递多个不同对象方式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~