实验二:数据查询语言
实验内容
SQL数据查询语句:
例5-1: (选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。
select sno,sname,sex,sage from student;
例5-2: (不选择重复行) 求选修了课程的学生学号。
select distinct cno from sc where cno is not null;
例5-3: (选择表中的所有列) 求全体学生的详细信息。
select * from student;
例5-4: (使用表达式) 求全体学生的学号、姓名和出生年份。
select sno,sname,birthday from student;
例5-5: (使用列的别名) 求学生的学号和出生年份,显示时使用别名“学号”和“出生年份”。
select sno as"学号",birthday as"出生年份" from student;
例5-6: (比较大小条件) 求年龄大于19岁的学生的姓名和年龄。
select sname,age from student
where age>19;
例5-7: (比较大小条件) 求计算机系或经济管理系年龄大于18岁的学生的姓名、系和年龄。
select sname,depname ,age
from student,department
where student.depno=department.depno
and age>18;
例5-8: (确定范围条件) 求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。
select sno,age from student
where age in(19,22);
例5-9: (确定范围条件) 求年龄不在19岁与22岁之间的学生的学号和年龄。
select sno,age from student
where age not in(19,22);
例5-10:(确定集合条件) 求在下列各系的学生信息:数学系、计算机系。
select student.*,department.*
from student,department
where student.depno=department.depno
and department.depname in('计算机系','数学系');
例5-11:(确定集合条件) 求不是数学系、计算机系的学生信息。
select student.*,department.*
from student,department
where student.depno=department.depno
and department.depname not in('计算机系','数学系');
例5-12:(匹配查询) 求姓名是以“李”打头的学生。
select * from student
where sname like '李%';
例5-13:(匹配查询) 求姓名中含有“志”的学生。
select * from student
where sname like '%志%';
例5-14:(匹配查询) 求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生。
select * from student
where sname like '%马__';
例5-15:(匹配查询) 求选修课程c1或c3,成绩在80至90之间,学号为10xxx的学生的学号、课程号和成绩。
select sno,cno,grade from sc
and cno in ('c1','c3')
and grade between 80 and 90
and sno like '10_';
例5-16:(涉及空值查询) 求缺少学习成绩的学生的学号和课程号。
select sno,cno,grade from sc where grade is NULL
例5-17:(控制行的显示顺序) 求选修c3课程或c4课程的学生的学号、课程号和分数。
select sno,cno,grade from sc where cno in('c3','c4')
例5-18:(组函数) 求学生总人数。'
select distinct count(sno) from student
例5-19:(组函数) 求选修了课程的学生人数。
select distinct count(sno) from sc
例5-20:(组函数) 求计算机系学生的平均年龄。
select avg(sage) from student
where depno='9001'
例5-21:(组函数) 求选修了课程c1的最高、最低与平均成绩。
select max(grade) ,min(grade),avg(grade) from sc where cno='c1'
例5-22:(分组查询) 求各门课程的平均成绩与总成绩
select cno,avg(grade) ,sum(grade) from sc group by cno
例5-23:(分组查询) 求各系、各班级的人数和平均年龄。
select depno,ccno,count(depno),avg(sage) from student
group by depno,ccno
例5-24:(分组查询) 输入以下查询语句并执行,观察出现的其结果并分析其原因。
SELECT SNAME,SDEPT,COUNT(*)FROM STUDENT
WHERE SDEPT=’CS’ GROUP BY SDEPT;
例5-25:(分组查询) 分析以下语句为什么会出现错误。并给出正确的查询语句。
SELECT SAGE FROM STUDENT GROUP BY SNO;
例5-26:(分组查询) 求学生人数不足3人的系及其相应的学生数。
sql语句查询不包含select count(depno) ,depno from student
group by depno having count(depno)<=3
例5-27:(分组查询) 求各系中除1001班之外的各班的学生人数。
select count(ccno),ccno from student
group by ccno having ccno<>'1001'
例5-28:(涉及空值的查询) 分别观察各组函数、行的显示顺序以及分组查询与空值的关系。
例5-29:(自然连接查询) 求学生号以及其选修课程的课程号和成绩,但查询结果中只能有一个SNO字段。
select sc.sno from sc,student where sc.sno=student.sno
例5-30:(连接查询) 求选修了课程c1且成绩在70分以下或成绩在90分以上的学生的姓名、课程名称和成绩。
select sno,cname,grade from sc
and cno = 'c1'
and grade not between 70 and 90
例5-31:(连接查询) 求选修了课程的学生的学生姓名、课程号和成绩。
select sname,cno,grade from student,sc
where student.sno=sc.sno
and cno is not null;
例5-32:(自身连接查询) 求年龄大于 ’李斯’ 的所有学生的姓名、系和年龄。
select a.sname,a.depno,sage
from student a,student b
where a.sage>=b.sage
and b.sname='李斯'
例5-33:(子查询) 求与 ‘李斯’ 年龄相同的学生的姓名和系。
select sname,depno from student
where sage in( select sage from student where sname='李斯')
例5-34:(子查询) 求选修了课程名为 ’数据结构’ 的学生的学号和姓名。
select student.sname,student.sno from student,sc,course
where student.sno = sc.sno
and sco= courseo
and courseame ='数据结构'
例5-35:(子查询ANY) 求比数学系中某一学生年龄大的学生的姓名和系。
select sname,depname from student,department
where student.depno=department.depno
and sage>any(select sage from student where depname='数学系')
例5-36:(子查询ALL) 求比数学系中全体学生年龄大的学生的姓名和系。
select sname,depname from student,department
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论