当前位置:文档之家› 实验3 数据查询

实验3 数据查询

实验三数据查询●实验指导——简单查询和连接查询一.实验目的1.观察查询结果, 体会SELECT语句实际应用;2.要求学生能够在查询分析器中使用SELECT语句进行简单查询。

3. 熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。

二.实验准备1.完成实验四,成功建立了基本表。

2.了解简单SELECT语句的用法。

3.比较熟悉查询分析器中的SQL脚本运行环境。

三.实验要求1.完成简单查询和连接查询操作,并验收实验结果提交实验报告四.实验内容CREATE TABLE student1(sno char(8)PRIMARY KEY,--学号(主键)sname char(8)NOT NULL,--姓名ssex char(2),--性别sage char(2),--年龄sdept char(6),--所在院系)CREATE TABLE course1(cno char(10)PRIMARY KEY,--课程编号(主键)cname char(20)NOT NULL,--课程名称cpno char(2),--先行课credit tinyint--课程学分)CREATE TABLE sc(sno char(8),--学号(主键)cno char(10),--课程编号(主键)grade char(3),--成绩primary key(sno,cno))所有的查询全部用Transact-SQL语句实现1.简单查询操作此部分查询包括投影、选择条件表达、数据排序、使用临时表等。

对EDUC数据库实现以下查询:①求计算机系的学生学号和姓名;SELECT sno,snamefrom student1where sdept='CS';②求选修了课程的学生学号;SELECT distinct snofrom scwhere cno is not null;③求选修C1 (数学)课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列;SELECT sno,gradefrom course1,scwhere o=o and cname='数学'order by grade desc,sno asc;④求选修课程C1 (数学)且成绩在80-90(85)之间的学生学号和成绩,并将成绩乘以系数0.75 输出;SELECT sno,gradefrom course1,scwhere o=o and cname='数学'and grade between80 and 85;⑤求计算机系(CS)和数学系(IS)的姓张的学生的信息;SELECT*from student1where sdept in('CS','IS')and sname like'张%';⑥求缺少了成绩的学生的学号和课程号。

SELECT sc.sno,cnofrom student1,scwhere student1.sno=sc.sno and grade is null;⑦将2000以后的成绩大于90分的学生成绩存入永久成绩表;将2000年以前的成绩存入临时成绩表中。

2.连接查询操作对EDUC数据库实现以下查询:①查询每个学生的情况以及他(她)所选修的课程;SELECT student1.*,ofrom student1,scwhere student1.sno=sc.sno;②求学生的学号、姓名、选修的课程名及成绩;SELECT student1.sno,student1.sname,ame,sc.gradefrom student1,sc,course1where student1.sno=sc.sno and o=o;③求选修C1(数学) 课程且成绩在90 分以上的学生学号、姓名及成绩;SELECT sc.sno,student1.sname,sc.gradefrom student1,scwhere student1.sno=sc.sno and grade>90;④查询每一门课的间接先行课。

SELECT o,c2.cpnofrom course1 c1,course1 c2where c1.cpno=o;●实验指导——子查询一.实验目的1.掌握子查询的表示。

2.进一步掌握SQL Server 查询分析器的使用方法,加深对SQL 语言的嵌套查询语句的理解二.实验准备1.掌握SQL语句的基本语法,并熟悉查询分析器的工作环境。

2.完成了实验二,创建了数据库EDUC及各个基本表。

3.了解子查询的表示方法,熟悉IN 比较符、ANY、EXISTS操作符的用法。

三.实验要求1.在实验开始之前做好准备工作。

2.完成实验,并验收实验结果提交实验报告。

四.实验内容1.在数据库EDUC中实现一下查询:1)求选修了高等数学(数学)的学生学号和姓名;select distinct sc.sno,student1.snamefrom student1,scwhere sc.sno=student1.sno;2)求C1 (数学)课程的成绩高于张三(李勇)的学生学号和成绩;select sc.sno,sc.gradefrom course1,scwhere grade>(select sc.gradefrom student1,sc,course1where student1.sno=sc.sno and o=o and sname='李勇'and cname='数学')and o=o and cname='数学';3)求其他系中比计算机系(CS)某一学生年龄小的学生信息(即求其它系中年龄小于计算机系年龄最大者的学生);select student1.*from student1where sage <any(select sagefrom student1where sdept='CS')and sdept not in('CS');4)求其他系中比计算机系学生年龄都小的学生信息;select student1.*from student1where sage <all(select sagefrom student1where sdept='CS')and sdept not in('CS');5)求选修了C2 (数据库)课程的学生姓名;select student1.snamefrom student1,sc,course1where student1.sno=sc.sno and o=o and cname='数据库';select snamefrom student1where exists(select sc.*from sc,course1where o=o and sno=student1.sno and cname ='数据库');6)求没有选修C2 (数据库)课程的学生姓名;select snamefrom student1where not exists(select sc.*from sc,course1where o=o and sno=student1.sno and cname ='数据库');7)查询选修了全部课程的学生的姓名;select snamefrom student1where not exists(select*from course1where not exists(select*from scwhere sno=student1.sno and cno=o));8)求至少选修了学号为“S2”()的学生所选修的全部课程的学生学号和姓名。

select sno,snamefrom student1where not exists(select*from sc xwhere x.sno='200215122'andnot exists(select*from sc ywhere sno=student1.sno and o=o));2.提高操作实验建立“工程-零件”数据库及如下4个表,并输入实验数据,用SQL语句实现如下三个查询:1)求供应项目j4红色零件的供应商号及名称select spj.供应商代码,s.姓名from s,p,spjwhere s.供应商代码=spj.供应商代码andp.零件代码=spj.零件代码andspj.工程代码='j4'andp.颜色='黑色';2)求没有使用上海供应商供应的零件的项目号select j.工程代码from jwhere j.工程代码not in(select spj.工程代码from s,spjwhere spj.供应商代码=s.供应商代码ands.姓名like'上海供应商_')3)至少使用了供应商S5所供应全部零件的项目号。

select j.工程代码from jwhere not exists(select*from spj xwhere x.供应商代码='s5'andnot exists(select*from spj ywhere工程代码=j.工程代码and x.零件代码=y.零件代码));表结构如下:供应商(S):①应商表:供应商代码为主码alter table p add foreign key(零件代码);②工程表:工程代码为主码③零件表:零件代码为主码④供应零件表:供应商代码、工程代码、零件代码为联合主码;供应商代码为外码,参照表、列是供应商表的供应商代码列;工程代码为外码,参照表、列是工程表的工程代码列;零件代码为外码,参照表、列是零件表的零件代码列alter table spj add constraint零件代码foreign key(零件代码)references p(零件代码);实验数据如下:供应商:●实验指导——使用子句的SELECE语句一.实验目的1. 熟练掌握数据查询中的分组、统计、计算和组合的操作方法。

2. 进一步掌握SQL Server 查询分析器的使用,加深对SQL 语言的嵌套查询语句的理解。

二.实验准备1.了解SELECT语句的GROUP BY和ORDER BY子句的作用。

2.了解统计函数和分组统计函数的使用方法。

3.熟悉查询分析器的运行环境。

三.实验要求1.在实验之前做好准备。

2.完成实验,并验收实验结果提交实验报告。

四.实验内容所有查询都全部用SQL语句实现1.在数据库EDUC中实现如下查询1)求学生的总人数。

相关主题