数据库原理与应用--实验二

本文详细描述了如何使用T-SQL对数据库myDataBase.MDF进行操作,包括添加列、删除约束、创建索引等,同时提供了针对教职工、课程和学生表的多种SQL查询示例。
摘要由CSDN通过智能技术生成

实验内容:

  1. 将数据库myDataBase.MDF使用附加操作导进数据库中。
  2. 对myDataBase.MDF使用T-SQL进行如下操作:
    1. 在学生情况表中增加一个Email列,要求检查输入的是否为Email;
    2. 删除学生情况表中的备注列;
    3. 对学生情况表增加约束条件,要求姓名唯一;
    4. 对课程表增加约束,要求学分取值范围为1-4;
    5. 删除课程表的学分约束;
    6. 修改学生情况表的学号类型,改成char(15);
    7. 为学生情况表的姓名创建一个唯一索引,按照姓名降序排列;
    8. 查看三个表的所有索引。
  3. 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)查询所有教职工的情况。

(2)查询所有教职工的职工编号、姓名。

(3)查询所有教职工的工号和年薪,并且将输出结果中的列名显示为“教职工号”、“年薪”。

(4)查询职工编号为0002的教职工情况。

(5)查询教职工中年龄在30-40岁之间的教职工姓名。

(6)查询在部门01、02、或03的教职工情况。

(7)查询没有给出成绩的选课情况。

(8)查询姓马的同学信息。

(9)查询所有职工的姓名和年龄,按年龄从小到大的顺序排列。

(10)查询课程号为001的成绩前五名的学生学号和成绩。

源代码:

2(1)
USE myDataBase
ALTER TABLE 学生情况表
add  Email varchar(20) check(Email like ('%@ %.com'));
2(2)
ALTER TABLE 学生情况表 drop column 备注;
2(3)
ALTER TABLE 学生情况表 ADD CONSTRAINT UQ_学生情况表_姓名 UNIQUE(姓名);
2(4)
ALTER TABLE 学生课程表
add CHECK(学分 BETWEEN 1 and 4);
2(5)
Alter Table 学生课程表
Drop Constraint CK__学生课程表__学分__239E4DCF;
2(6)
exec sp_helpconstraint 学生成绩表
--删除学生情况表的外键与主键约束
alter table 学生成绩表
drop constraint FK_学生成绩表_学生成绩表
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 constraint FK_学号
foreign key (学号) references 学生情况表(学号)
2(7)
CREATE UNIQUE NONCLUSTERED INDEX 姓名 ON 学生情况表(姓名 DESC);
2(8)
EXEC SP_HELPINDEX 学生情况表
EXEC SP_HELPINDEX 学生课程表
EXEC SP_HELPINDEX 学生成绩表
3(1)
USE SM
SELECT *  from Teacher;
3(2)
SELECT Tno,Tname FROM Teacher;
3(3)
SELECT Tno AS '教职工号',SAL*12 AS '年薪' FROM Teacher;
3(4)
SELECT * FROM Teacher WHERE Tno=0002;
3(5)
SELECT TName FROM Teacher WHERE age>30AND age<40;
3(6)
SELECT * FROM Teacher WHERE DNo=01 OR DNo=02 OR DNo=03;
3(7)
SELECT * FROM SC WHERE Score IS NULL; 
3(8)
SELECT * FROM STUDENT WHERE SName LIKE '马%';
3(9)
SELECT TName, AGE
FROM Teacher
ORDER BY age ASC;

3(10)
SELECT TOP 5*
FROM SC
WHERE Cno = 001 
ORDER BY Score desc

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值