(简单查询和复杂查询)
1.实验目的
(1)对实验一、实验二已建好的student 、course 、sc 表进行查询操作。
(2)充分体会SQL语言的结构化查询功能,让学生充分体会SQL语言的灵活多变,功能强大。
2.实验内容
(1)在实验一和实验二的基础上,进行数据库的查询,充分体会SQL语言的强大功能。简单查询:包含选择和投影的简单单表查询。、包含between、is null等条件的单表查询。包含分组和排序的单表查询、带连接条件的简单多表查询。
(2)嵌套查询 :使用In短语的嵌套查询、使用Exists短语的嵌套查询、使用集合运算的多表查询。
3.实验要求
(1)查询全体学生的学号和姓名。
select sno,sname from student
(2)查询全体学生的详细记录。
select * from student
(3)查询全体学生的姓名和出生年份。
select sname,2022-sage from student
(4)查询选修了课程的学生的学号。
SELECT sno FROM sc; //会产生相同数据
SELECT DISTINCT sno FROM sc; //DISTINCT作用去掉重复行;
(5)查询健身系的学生的姓名。
SELECT sname FROM student WHERE sdept='健身系'
(6)查询年龄在20岁以下的健身系的学生的学号和年龄。
SELECT sno,sage FROM student WHERE sdept='健身系' and sage <20
SELECT sname FROM student WHERE sdept='健身系';
(7)查询年龄在20—22岁的学生的学号。
SELECT sno FROM student WHERE sage<=22 AND sage>=20
或者
SELECT sno FROM student WHERE sage BETWEEN 20 AND 22
(8)查询健身系、摸鱼系和学习系的学生的信息。
SELECT * FROM student where sdept IN('健身系','摸鱼系','学习系');
(9)查询姓“王”的学生的信息。
SELECT * FROM student WHERE sname LIKE '王%'
(10)查询选修了1号课程的学生的学号及成绩,结果按分数的降序排列。
SELECT sno,grade FROM sc WHERE cno='1' ORDER BY grade DESC
(11)查询学生总人数。
SELECT count(*) FROM student
(12)查询选修1号课程的学生的最高分。
SELECT Max(grade) FROM sc WHERE cno='1'
(13)查询选修了2门及以上课程的学生的学号。
SELECT sno FROM view1 GROUP BY sno HAVING count(cno)>=2
(14)查询每个学生及其选修课程的情况。
SELECT student.*,sc.* FROM student,sc WHERE student.sno=sc.sno;
(15)查询选修2号课程且分数在90分以上的所有学生。
SELECT student.*
FROM student,sc
WHERE student.sno=sc.sno AND sc.cno='2'and sc.grade>90
(16)查询每个学生的学号、姓名、选课名及成绩。
SELECT student.sno,sname,grade,cname
FROM student LEFT OUTER JOIN sc ON(student.sno=sc.sno)
(17) 查询与“代小毅”在同一系的学生。
SELECT s1.sname
FROM student s1,student s2
WHERE s1.sdept=s2.sdept AND s2.sname='代小毅'
/*
第二种*/
SELECT sname FROM student
WHERE sdept IN(SELECT sdept from student
WHERE sname='代小毅');
(18) 查询选修了课程名为“数据库”的学生学号和姓名。
SELECT sno,sname
FROM student
WHERE sno IN (SELECT sno
FROM sc WHERE cno IN(SELECT cno
FROM course WHERE cname='水之呼吸'));
(19) 查询没有选修1号课程的学生的姓名。
SELECT sname FROM student WHERE NOT EXISTS
(SELECT * FROM sc WHERE sno=student.sno AND cno='1');
(20) 查询选修了所有课程的学生的姓名。
INSERT INTO sc VALUES('0014','3','雷之呼吸',75);
INSERT INTO sc VALUES('0014','4','花之呼吸',88);
SELECT sname
FROM student
WHERE NOT EXISTS
(select *
FROM course
WHERE NOT EXISTS
(select *
FROM sc
WHERE sno=student.sno
AND cno=course.cno));
4.实验器材
(1)安装关系数据库系统环境的微机。