ZK 数据库实验二

  1. 对myDataBase.MDF使用T-SQL进行如下操作:
    use myDataBase
    1. 在学生情况表中增加一个Email列,要求检查输入的是否为Email;
      alter table 学生情况表 add Email char(50) check(Email like '%@%.com');
    2. 删除学生情况表中的备注列;
      alter table 学生情况表 drop column 备注;
    3. 对学生情况表增加约束条件,要求姓名唯一;
      alter table 学生情况表 add constraint UQ_学生情况表_姓名 unique(姓名);
    4. 对课程表增加约束,要求学分取值范围为1-4;
      alter table 学生课程表 add check(学分 Between 1 and 4);
    5. 删除课程表的学分约束;
      exec sp_helpconstraint 学生课程表;
      //查看查询结果在下一步中删除
      
      //ck_学生课程表_学分_239E4DCF为查询结果
      alter table 学生课程表 drop constraint ck_学生课程表_学分_239E4DCF;
    6. 修改学生情况表的学号类型,改成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 学生情况表(学号);
    7. 为学生情况表的姓名创建一个唯一索引,按照姓名降序排列;
      create unique nonclustered index 姓名 on 学生情况表(姓名 DESC);
    8. 查看三个表的所有索引。
      exec sp_helpconstraint 学生成绩表;
      exec sp_helpconstraint 学生课程表;
      exec sp_helpconstraint 学生情况表;

  2.  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. (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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值