博客
关于我
数据库系统第三章作业
阅读量:598 次
发布时间:2019-03-12

本文共 3292 字,大约阅读时间需要 10 分钟。

数据库系统第三章作业

一、设有3个关系:S(S#,SNAME,SEX,AGE,sdept)SC(S#,C#,GRADE)C(C#,CNAME,TEACHER)用数据定义语言DDL定义上述三个表,请为每个属性定义适当的数据类型,宽度(和精度),每个表上的主键、外键以及恰当的数据完整性约束。
⑴、创建学生表s(4分)Create table s(S# char(10) primary key,sname varchar(8) not null,sex char(2),age intsdept varchar(30));⑵、创建课程表C (4分)Create table C(C# char(4) primary key,Cname varchar(20) not null,TEACHER varchar(8) not null);⑶、创建选课表sc (4分)Create table sc(S# char(10),C# char(4),Grade int,primary key(s#,c#),foreign key s# references s(s#),foreign key c# references c(c#));
二、在一题的基础上,用SELECT语句完成下列(1)~(12)查询。
(1)检索LIU老师所授课程的课程号和课程名;select c#,cname from Cwhere teacher='LIU';(2)检索年龄大于23的男同学的学号和姓名;select s#,sname from Swhere sex='男' and age>23;(3)检索学号为S3的学生所学课程的课程名与任课老师;select cname,teacher from Cwhere c# in(select c# from SC where s#='S3');或者:select cname,teacher from C,scwhere c.c#= s.c# and sc.s#='S3');(4)检索至少选修LIU 老师所授课程中一门课程的女学生的姓名;select sname from Swhere sex='女' and s# in(select distinct s# from SC                      where c# in(select c# from C                            where teacher='LIU'));或者:select sname from S,SC,Cwhere sex='女' and S.s# =SC. s# AND SC.C#=C.C# AND teacher='LIU';
(5)检索WANG同学不学课程的课程号;select distinct c# from C where c# not in(select distinct c# from scwhere s# in (select s# from s where sname='WANG'));(6)检索至少选修2门课的学生的学号;select distinct a.s# from SC as a,SC as bwhere a.s#=b.s# and a.c#!=b.c#;或者:select distinct s# from SC group by s# having count(c#)>=2;(7)检索全部学生都选修的课程的课程号和课程名;select c#,cname from cwhere not exists(select * from s where not exists(        select * from sc where s#=s.s# and c#=c.c#);或者:select c#,cname from cwhere c# in(select c# from sc        group by c#         having count(s#)=(select count(*) from s);         (8)检索选修课程包含LIU老师所授全部课程的学生的学号;select distinct s# from sc awhere not exists(select * from c where teacher='LIU'                  and not exists(select * from sc as b                     where b.s#=a.s# and b.c#=c.c#));
(9)检索所有姓张的学生;SELECT * FROM S WHERE SNAME LIKE '张%';(10)查询每个学生的平均成绩;SELECT S#,AVG(GRADE) FROM SC GROUP BY S#;(11)查询平均成绩大于等于80分的学生的学号和姓名。SELECT S#,SNAMEFROM SWHERE S# IN(SELECT S# FROM SC           GROUP BY S# HAVING AVG(GRADE)>=80);           (12)查询平均成绩第一名的学生的学号和姓名。SELECT S#,SNAMEFROM SWHERE S# IN (SELECT TOP 1 S# FROM SC           GROUP BY S#           ORDER BY AVG(GRADE) DESC);
三、在一题的基础上,创建下列视图(1)~(4)(1)请创建选修LIU老师所带课程的学生视图,视图包括:学号、姓名、性别、课程号、课程名、成绩。CEREATE VIEW V_LIU(学号,姓名,性别,课程号,课程名,成绩)ASSELECT S.S#,SNAME,SEX,C#,CNAME,GRADEFROM S,SC,CWHERE S.S#=SC.S# AND SC.C#=C.C# AND TEACHER='LIU';
(2)创建所有男生的视图。CREATE VIEW V_MALEASSELECT * FROM SWHERE SEX=’男’;(3)创建所有学生的选课视图,视图包括:学号、姓名、性别、课程号、课程名、成绩。CEREATE VIEW V_LIU(学号,姓名,性别,课程号,课程名,成绩)ASSELECT S.S#,SNAME,SEX,C#,CNAME,GRADEFROM S,SC,CWHERE S.S#=SC.S# AND SC.C#=C.C#4)创建学生平均成绩的视图,视图包括:学号、姓名和平均成绩。Create VIEW V_AVG(学号,姓名,平均成绩)AsSelect s.s#,sname,avg(grade)From s,scWhere s.s#=sc.s#Group by s.s#,sname;
四、在一题的基础上,用数据操纵语言DML(INSERT,UPDATE,DELETE)完成下列(1)~(5)命令。
(1)把所有学生的年龄增加1岁;Update sSet age=age+1;(2)把所有选修LIU老师所带课程的学生成绩置零;Update scSet grade=0Where c# in(select c# from c where teacher='LIU');3)删除所有女生的选课记录;DELETE FROM SCWHERE S# IN(SELECT S# FROM S             WHERE SEX='女');             (4)删除全部的学生记录;(请注意外键关系)--先删除子表SC表Delete from sc--然后删除主表SDELETE FROM S;(5)向学生表S插入一条记录。insert into s values('1006','黎明','男',20);

转载地址:http://gjgtz.baihongyu.com/

你可能感兴趣的文章
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_插入时如果目标表中已存在该数据则自动改为更新数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0058
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0_Postgresql和Mysql同时指定库_指定多表_全量同步到Mysql数据库以及Hbase数据库中---大数据之Nifi工作笔记0060
查看>>
NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
查看>>
NIFI1.21.0最新版本安装_配置使用HTTP登录_默认是用HTTPS登录的_Https登录需要输入用户名密码_HTTP不需要---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增加修改实时同步_使用JsonPath及自定义Python脚本_03---大数据之Nifi工作笔记0055
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
查看>>
NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现update数据实时同步_实际操作05---大数据之Nifi工作笔记0044
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>