- 对myDataBase.MDF使用T-SQL进行如下操作:
use myDataBase
- 在学生情况表中增加一个Email列,要求检查输入的是否为Email;
alter table 学生情况表 add Email char(50) check(Email like '%@%.com');
- 删除学生情况表中的备注列;
alter table 学生情况表 drop column 备注;
- 对学生情况表增加约束条件,要求姓名唯一;
alter table 学生情况表 add constraint UQ_学生情况表_姓名 unique(姓名);
- 对课程表增加约束,要求学分取值范围为1-4;
alter table 学生课程表 add check(学分 Between 1 and 4);
- 删除课程表的学分约束;
exec sp_helpconstraint 学生课程表; //查看查询结果在下一步中删除
//ck_学生课程表_学分_239E4DCF为查询结果 alter table 学生课程表 drop constraint ck_学生课程表_学分_239E4DCF;
- 修改学生情况表的学号类型,改成char(15);
alter sp_helpconstraint 学生情况表; alter sp_helpconstraint 学生成绩表; alter table 学生成绩表 drop constraint FK_学生成绩表_学生课程表; alter table 学生成绩表 drop constraint PK_学生成绩表; alter table 学生情况表 drop constraint PK_学生情况表; alter table 学生情况表 alter column 学号 char(15) not null; alter table 学生成绩表 alter column 学号 char(15) not null; alter table 学生情况表 add primary key(学号,课程号); alter table 学生成绩表 add foreign key(学号) references 学生情况表(学号);
- 为学生情况表的姓名创建一个唯一索引,按照姓名降序排列;
create unique nonclustered index 姓名 on 学生情况表(姓名 DESC);
- 查看三个表的所有索引。
exec sp_helpconstraint 学生成绩表; exec sp_helpconstraint 学生课程表; exec sp_helpconstraint 学生情况表;
- 在学生情况表中增加一个Email列,要求检查输入的是否为Email;
- SM中四个表说明: 教职工表Teacher(Tno, TName, age, sal, mgr, DNo),TNo为教职工编号,TName为教职工姓名,age年龄,sal为月薪,mgr为教职工的上一级领导的职工号,DNo为部门号;课程表为Course(Cno, CName, CCredits, CTno),Cno为课程编号,CName为课程名字,CCredits为课程学分,类型为NUMERIC(2,0), CTno为该课程上课老师的编号,其中外键CTno来自表Teacher的Tno键;学生表为Student(Sno, CLno, SName, SSex, SBir, Sage, Email),其中Sno为学生学号,CLno为系别编号,SName为学生姓名,SSex为学生性别,SBir为学生出生日期,Sage为学生年龄,Email为学生Email;学生选课表为SC(Sno, Cno, Score),其中Sno为学生学号,Cno为课程号,Score为分数,外键Sno和Cno分别来自表Student的Sno和Coures的Cno。
- 对SM进行以下查询:
- 单表查询:
-
(1)查询所有教职工的情况。
select * from teacher
(2)查询所有教职工的职工编号、姓名。
select TNo,TName from teacher
(3)查询所有教职工的工号和年薪,并且将输出结果中的列名显示为“教职工号”、“年薪”。
select 教职工=TNo,年薪=sal*12 from teacher
(4)查询职工编号为0002的教职工情况。
select * from teacher where TNo = 0002
(5)查询教职工中年龄在30-40岁之间的教职工姓名。
select TName from teacher where age between 30 and 40
(6)查询在部门01、02、或03的教职工情况。
select * from teacher where DNo in('01','02','03')
(7)查询没有给出成绩的选课情况。
select * from SC where Score is null
(8)查询姓马的同学信息。
select * from Student where SName like '马%%'
(9)查询所有职工的姓名和年龄,按年龄从小到大的顺序排列。
select TName,age from teacher order by age
(10)查询课程号为001的成绩前五名的学生学号和成绩(提示:使用top 5)。
select top(5) Sno,Score from SC where Cno=001 oeder by Score DESC