您的位置:首页 > 数据库

sql 练习系列:修改表结构

2015-11-23 00:00 302 查看
以下练习均在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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: