在StudentInfo数据库中完成下面查询: 题目在补充里
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在StudentInfo数据库中完成下面查询: 题目在补充里相关的知识,希望对你有一定的参考价值。
在StudentInfo数据库中完成下面查询:
(1) 查询计算机工程系女学生的学生学号、姓名及考试成绩。
(2) 查询至少选修一门课程的女学生姓名。
(3) 查询姓“王”的学生所学的课程名称。
(4) 查询选修“数据库”课程且成绩在80~90分之间的学生学号及成绩。
(5) 查询学号比“刘晨”同学大,而出生日期比他小的学生姓名。
(6) 查询没有选修“C02”课程的学生学号及姓名
(1) 创建一个从student表查询班级号为“20160201”班的学生资料的存储过程proc_1,其中包括学号、姓名、性别、出生年月等。调用proc_1存储过程,观察执行结果。
(2) 在gradem1数据库中创建存储过程proc_2,要求实现如下功能:存在不及格情况的学生选课情况列表,其中包括学号、姓名、性别、课程号、课程名、成绩、系别等。调用proc_2存储过程,观察执行结果。
(1)为表sc创建一个插入触发器 student_sc_insert,当向表sc插入数据时,必须保证插入的学号有效地存在于student表中,如果插入的学号在student表中不存在,给出错误提示。
向表sc中插入一行数据:sno, cno,degree分别是(‘20160302’,‘c01’,78),该行数据插入后,观察插入触发器student_sc_insert是否触发工作,再插入一行数据,观察插入触发器是否触发工作。
ORACLE----多表查询语句练习
一.建表
1.建立两张表CLASSINFO,STUDENTINFO.
--建表CLASSINFO;
CREATE TABLE CLASSINFO ( CLASSID NUMBER(2) PRIMARY KEY, CLASSNAME VARCHAR(10) NOT NULL);
--建表STUDENTINFO;
CREATE TABLE STUDENTINFO ( STUDENTID NUMBER(2) PRIMARY KEY , STUDENTNAME CHAR(10) NOT NULL, STUDENTSEX CHAR(2) CHECK(STUDENTSEX=‘男‘ OR STUDENTSEX=‘女‘), STUDENTAGE NUMBER(2) NOT NULL, STUDENTTEL NUMBER(11) UNIQUE, STUDENTADDRESS VARCHAR(20) DEFAULT ‘上海‘, classid number(2) REFERENCES classinfo(classid));
2.在两张表中插入数据。
--表CLASSINFO;
INSERT INTO CLASSINFO (CLASSID,CLASSNAME) VALUES( 1,‘六班‘); INSERT INTO CLASSINFO (CLASSID,CLASSNAME) VALUES( 2,‘七班‘);
INSERT INTO STUDENTINFO VALUES (1,‘Timmy‘,‘男‘,20,‘13285601693‘,‘suzhou‘,1 ); ALTER TABLE STUDENTINFO MODIFY (STUDENTNAME CHAR(10) );--这里是来修改STUDETNAME字段的数据类型的长度。 INSERT INTO STUDENTINFO VALUES (2,‘Lizmer‘,‘男‘,25,‘18056947153‘,‘anhui‘,1 ); INSERT INTO STUDENTINFO VALUES (3,‘Gray‘,‘男‘,30,‘18056996153‘,‘hubei‘,2 ); INSERT INTO STUDENTINFO VALUES (4,‘Roger‘,‘男‘,31,‘18056886153‘,‘henan‘,2 );
3.在两张表中添加字段。
ALTER TABLE CLASSINFO ADD (Teacher char(20)); ALTER TABLE CLASSINFO ADD (Leader char(20)); ALTER TABLE STUDENTINFO ADD (SCORE NUMBER(20)); ALTER TABLE STUDENTINFO ADD (Teacher char(20));
4.在新添加的字段中添加数据。
UPDATE CLASSINFO SET Teacher=‘刘A‘ where CLASSID=‘2‘; UPDATE CLASSINFO SET Leader=‘陈B‘ where CLASSID=‘2‘; UPDATE STUDENTINFO SET Teacher=‘张I‘ where STUDENTID=‘4‘; UPDATE STUDENTINFO SET Leader=‘汤J‘ where STUDENTID=‘4‘; UPDATE STUDENTINFO SET SCORE=‘100‘ where STUDENTID=‘5‘;
5.表CLASSINFO和STUDENTINFO如下所示。
ps:score字段的添加和插入数据参考上例。
二.高级多表数据查询。
2.1 RANK() OVERORDER BY/ DENSE_RANK() OVERORDER BY/ RANK() OVER PARTITION BY ORDER BY;
##我们通常将group by叫做分组,而partition by称作分区,分组返回通常是一行,partition by返回的是多行。 SELECT STUDENTINFO.*,DENSE_RANK() OVER(ORDER BY STUDENTINFO.SCORE DESC ) AS RANKS FROM STUDENTINFO; SELECT STUDENTINFO.*,RANK() OVER(ORDER BY STUDENTINFO.SCORE DESC ) AS RANKS FROM STUDENTINFO; SELECT RANK() OVER(PARTITION BY STUDENTNAME ORDER BY STUDENTINFO.SCORE DESC ) AS RANKS FROM STUDENTINFO;--这里解释一下,假如Timmy有两次得分记录,那么上述语句就是对Timmy的得分排序。
以上是关于在StudentInfo数据库中完成下面查询: 题目在补充里的主要内容,如果未能解决你的问题,请参考以下文章
FMDB & Swift, " Optional("no such table: Student info") " 在真实设备中,但可以在模拟器中完成