一、基本表的定义与删除
T1.
用SQL语句创建如下三张表:学生(Student),课程表(Course),和学生选课表(SC),这三张表的结构如表1-1到表1-3所示。
表1-1 Student表结构
列名
说明
数据类型
约束
Sno
学号
字符串
长度为7,主码
Sname
姓名
字符串
长度为10,非空
Ssex
性别
字符串
长度为2,取‘男’或‘女’
Sage
年龄
整数
取值15~45
Sdept
所在系
字符串
长度为20 默认为‘计算机系’
create table Student(
Sno varchar(7) primary key,
Sname varchar(10) not null,
Ssex varchar(2) check(Ssex='男' or Ssex='女'),
Sage int check(Sage>=15 and Sage <=45),
Sdept varchar(20) default('计算机系'));
表1-2Course表结构
列名
说明
数据类型
约束
Cno
课程号
字符串
长度为10,主码
Cname
课程名
字符串
长度为20,非空
Ccredit
学分
整数
取值大于0
Semster
学期
整数
取值大于0
Cperiod
学时
整数
取值大于0
create table Course(
Cno varchar(10) primary key,
Cname varchar(20) not null,
Ccredit int check(Ccredit>0),
Semster int check(Semster >0),
Cperiodint check(Cperiod>0)
);
表1-3 SC表结构
表1-2Course表结构
列名
说明
数据类型
约束
Sno
学号
字符串
长度为7,主码,参照Student的外码
Cno
课程名
字符串
长度为10,主码,参照Course
Grade
成绩
整数
取值0~100
create table SC(
Sno varchar(7),
Cno varchar(10),
Grade int check(Grade >=0 and Grade <=100),
primary key(Sno,Cno),
foreign key (Sno) references Student(Sno),
foreign key (Cno) references Course(Cno));
PS:
外码(键): 一个关系模式(r1)可能在它的属性中包含另一个关系模式(r2)的主码,这个属性在r1上称作参照r2的外码。关系r1称为外码依赖的参照关系,关系r2称为外码的被参照关系。FK一定来自另一个表的PK,FK是PK的子集。
如果外键或者主键要求命名,请使用以下语法
constraint pk_Student_Sno primary key (Sno)
constraint fk_Student_Sno foreign key (Sno) references Student(Sno)//SC表,参照表后边的属性可以省略
已有表,添加外键
alter table SC
add constraint fk_Student_Sno
foreign key (Sno)
references Student(Sno);
二、修改表结构
T2.
为SC表添加“选课类别”列,此列的定义为XKLB char(4)
alter table SC add XKLB char(4);
T3.
将新添加的XKLB的类型修改为char(6)
alter table SC alter column XKLB char(6);
T4.
删除Course表的Cperiod列
alter table Course drop column Cperiod;
T5.
重命名Student表的Ssex列为sex
EXEC sp_rename 'Student.Ssex','sex';
三、数据查询功能
表3-1 Student表数据
Sno
Sname
Ssex
Sage
Sdept
9512101
李勇
男
19
计算机系
9512102
刘晨
男
20
计算机系
9512103
王敏
女</