Java面试题总结之数据库与SQL语句
1、有3 个表,表结构如下:
student 学生表(学号,姓名,性别,年龄,组织部门)
course 课程表(编号,课程名称)
sc 选课表(学号,课程编号,成绩)。
1)写一个sql 语句,查询选修了’计算机原理’的学生学号和姓名。
select student.sno, student.sname from student left join sc on student.sno=sc.sno left join course on sc.cno=course.cno where course.cname='计算机原理';
2)写一个sql 语句,查询’王小明’同学选修了的课程名字。
select cname from course where cno in ( select cno from sc where sno = (select sno from student where sname='王小明'));
3)写一个sql 语句,查询选修了5 门课程的学生学号和姓名
select stu.sno, stu.sname from student stu where (select count(*) from sc where sno=stu.sno) = 5;
2、有三张表,学生表s,课程c,学生课程表sc,学生可以选修多门课程,一门课程可以被多个学生选修,通过sc 表关联。
1)写出建表语句;
select stu.sno, stu.sname from student stu where (select count(*) from sc where sno=stu.sno) = 5;
2)写出sql 语句,查询选修了所有选修课程的学生;
select stu.id, stu.name from s stu where (select count(*) from sc where sid=stu.id) = (select count(*) from c);
3)写出sql 语句,查询选修了至少5 门以上的课程的学生。
select stu.id, stu.name from s stu where (select count(*) from sc where sid=stu.id)>=5;
3、数据库表(test)结构如下:
id |
name |
age |
manager(所属主管人id) |
106 |
a |
30 |
104 |
109 |
b |
19 |
104 |
104 |
c |
20 |
111 |
107 |
d |
35 |
109 |
112 |
e |
25 |
120 |
119 |
f |
45 |
null |
要求:列出所有年龄比所属主管年龄大的人的id 和名字?
答:sql 语句如下:
select employee.name from test employee where employee.age > (select manager.age from test manager where manager.id=employee.manager);
4、有如下两张表:
表city:表state:
cityno |
cityname |
stateno |
bj |
北京 |
null |
sh |
上海 |
null |
gz |
广州 |
gd |
dl |
大连 |
ln |
欲得到如下结果:
cityno city name state no state name
bj 北京 (null)(null)
dl 大连 ln 辽宁
gz 广州 gd 广东
sh 上海 (null) (null)
写出相应的sql 语句。
答:sql 语句为:
select c.cityno, c.cityname, c.stateno, s.statename from city c, state s where c.stateno=s.stateno order by(c.cityno);
上一篇: cdr怎么设计各种类型的对话框?
下一篇: 采药---背包动规