基本的SQL语句练习

更新时间:2023-10-16 08:36:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

根据下面三个关系模式完成下面习题:答案已设为白色 需要就全选设为黑色 学生表Student

Sno Sname Ssex Sage Sdept

2000012 19 王林 男 计算机

2000113 18 张大民 男 管理

2000256 19 顾芳 女 管理

2000278 19 姜凡 男 管理

2000014 18 葛波 女 计算机

2000011 22 李刚 男 计算机

课程表Course Cno Cname Cpno Ccredit 1024 1136 1137 1156 1128 1111 数据库原理 离散数学 管理学 英语 高等数学 体育 1136 1128 4 4 4 6 6 3

学生选课表SC Sno Cno Grade 2000012 1156 80 2000113 1156 89 2000256 1156 93 2000014 1156 88 2000256 1137 77 2000278 1137 89 2000012 1024 80 2000014 1136 90 2000012 1136 78 2000012 1137 70 2000014 1024 88

成绩类别表 type Lowest_grade Highest_grade 85 100 优秀 75 84 良 60 74 及格 0 59 不及格 第一章课件:编写基本的SQL语句。 1. 查询所有学生情况。 2. Select * from student; 3. 查询所有学生的姓名,性别以及年龄。 4. Select sname,ssex,sage from student; 5. 查询所有学生10年后的年龄。 6. Select sage+10 10年后 from student; 7. 查询所有课程(列名用中文显示)。 8. Select cname 课程名 from course; 9. 查看竟有那些学生选课(重复学号显示一次)。 10. Select distinct sno from course where cno is not null; 11. 显示课程表的边结构。 12. Desc course; 第二章课件:约束和排序数据。

01.查询计算机系的所有学生的姓名和年龄。

Select sname,sage from student where sdept =?计算机?; 02.查询体育课的学分。

Select ccredit from course where cname=?体育?; 03.查询年龄小于18的学生。

Select * from student where sage < 18; 04.查询年龄大于20的学生。 Select * from student where sage >20; 05.查询年龄介于18和20之间的学生(包括18和20)。 Select * from student where sage between 18 and 20; 06.查询年龄不在18和20之间的学生。

Select * from student where sage not between 18 and 20 07.查询年龄为18,20,22的学生。

Select * from student where sage in (18,20,22); 08.查询年龄不是18,20,22的学生。

Select * from student where sage not in (18,20,22); 09.查询所有姓张的学生。

Select * from student where sname like ?张%? 10.查询所有没有先行课的课程。

Select cname from course where cpno is null; 11.查询有先行课的课程。

Select cname from course where cpno is not null; 12.在计算机系中找,姓张的男生。

Select * from student where sname like ?张%? and cdept=?计算机? 13.在计算机系中找,姓张的或者姓李的男生并且按照年龄从大到小排序。

Select sname,ssex,sage,sdept from student where sname like '张%' or sname like '李%' order by sage desc ; 14.查询所有学生信息,显示结果先按系从大到小排序,再按年龄排序。 Select * from stident order by sdept desc ,sage desc;

第三章课件:多表查询

1.查询每个学生(学号)选了哪门课(课程)得了多少分? Select sc.sno,c.cname,sc.grade from sc,course c where sc.cno = c.cno; 2.查询每个学生(姓名)选了哪门课(课程号)得了多少分?

select s.aname,c.cno,sc.grade from sc,course c,student s where sc.cno = c.cno and s.sno=sc.sno; 3.查询每个学生(姓名)选了哪门课(课程名)得了多少分?

select s.aname,c.cname,sc.grade from sc,course c,student s where sc.cno = c.cno and s.sno=sc.sno; 4.查询一下王林选可哪门课得了多少分。

select s.aname,c.cname,sc.grade from sc,course c,student s where sc.cno = c.cno and s.sno=sc.sno where s.sname = ‘王林’; 5.查询每个学生的成绩类别(优、良还是及格)。

Select sc.sno,type.type from sc,type where sc.grade between Lowest_grade and Highest_grade; 6.查询哪个学生没有选课(用外查询)。

select s.sno from student s where s.sno not in (select sno from sc where grade !=0); 7.查询哪门课没有人选(用外查询)。

select c.cno from course c where c.cno not in (select cno from sc where grade !=0); 第四章课件:组函数

1.查询一下所有课程的平均分,最高分,最低分和总分数。 Select avg(grade),max(grade),min(grade),sum(grade) from sc; 2.查询一下有多少个学生参加选课。

Select count(grade) from (select distinct sno from sc); 3.查询一下计算机系有多少人过20岁。

Select count(sname) from (Select sname from student where sage >20 and sdept=?计算机?); 4.统计一下计算机系的男生多少人。

Select count(sname) from (Select sname from student where ssex=?男? and sdept=?计算机?); 5.查询一下每个学生考试的最高分和最低分。

Select sno,max(grade),min(grade) from sc group by sno; 6.查询每门课(课程号)的最高分和最底分。

Select cno,max(grade),min(grade) from sc group by cno; 7.查询每门课(课程名)的最高分和最底分。

Select cname,max(hgrade),min(lgrade) from course c,( Select cno,max(grade) hgrade,min(grade) lgrade from sc group by cno) a where c.cno=a.cno group by cname; 8.查询计算机系中男生多少人,女生多少人。

Select (select count(ssex) from student where ssex='男' and sdept='计算机') 男,(select count(ssex) from student where ssex='女' and sdept='计算机') 女 from dual; 9,查询人数在三百人以上的系。

Select sdept ,count(sno) from student group by sdept having count(sno)>300; 10.查询选修人数在三人(包括三人)的课程(课程名)。

Select cname from course where cno in (Select cno from sc group by cno having count(sno)>2); 11.查询各科考试成绩最低的同学。

Select distinct sno from sc where cno in (select cno from (Select cno,min(grade) from sc group by cno)); 12.查询考试成绩小于所选课程平均分的人。(有能力的同学选做)

Select sname from student where sno in (Select sno from sc where grade <(select avg(grade) from sc)); 第五章课件:子查询

1.查询所有比王林大的同学信息。

Select * from student where sage>(select sage from student where sname=?王林?) 2.查询和王林同在一个系的所有学生信息。

Select * from student where sdept=(select sdept from student where sname=?王林?) 3.查询一下谁的成绩(所有成绩)最低。

select sno,min(grade) from sc where sno=(select sno from sc where grade=(select min(grade) from sc)) group by sno; 4.查询一下每门课成绩最底的同学(要姓名,和成绩)。

select s.sname,a.lowgrade from student s,(select sno,min(grade) lowgrade from sc group by sno) a where s.sno=a.sno; 5.查询一下哪个学生没有选课(用子查询)。

select sname from student where sno not in (select sno from sc where grade is not null); 6.查询一下哪门课没有人选(用子查询)。

Select cname from course where cno not in (select cno from sc where grade is not null) 7.查询一下和王林一个系,但是比他年龄大的同学。

Select * from student where sdept =(Select sdept from student where sname=?王林?) and sage>(Select sage from student where sname=?王林?) 第六章课件:DDL语句

1. 创建以上四个表,要求每个表必须有主键,表和表之间必须有外间关联。 2. Alter table 表名 modify 列明 类型 3. 写出INSERT语句,给表添加以上数据。

4. insert into 表名(列名1,列名2....) values(值1,值2.....) 5. 提交所有操作。 6. Commit; 7. 将王林的年龄设置为空。

8. update student set sage = 19 where sname = '王林'; 9. 将张大民调到计算机系。 10. update student set sdept='计算机' where sanme='张大民' 11. 将体育课的学分设置成和管理学学分一样(UPDATE中带有子查询)。 12. update course set ccredit = (select ccredit from course where cname = '管理学') where cname = '体育'; 13. 回滚所有操作。 14. rollback

9.某公司印了一批充值卡,卡的密码是随机生成的,现在出现这个问题: 卡里面的“O和0”(哦和零)“i和1”(哎和一),用户反映说看不清楚,公司决定,把存储在数据库中的密码中所有的“哦”都改成“零”,把所有的“i”都改成“1”; 请编写SQL语句实现以上要求;

数据库表名:Card;密码字段名:PassWord; (提示用的UPDATE和字符函数)

Update card set passwors = replace(password,?o?,?0?), passwors = replace(password,?i?,?1?);

答案已设为白色 需要就全选设为黑色

本文来源:https://www.bwwdw.com/article/7pdf.html

Top