欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java面试题总结之数据库与SQL语句

程序员文章站 2022-05-18 23:05:40
1、有3 个表,表结构如下: Student 学生表(学号,姓名,性别,年龄,组织部门) Course 课程表(编号,课程名称) Sc 选课表(学号,课程编号,成绩)。 1)写一个SQL 语句,查询选修了’计算机原理’的学生学号和姓名。 2)写一个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、有如下两张表:

citystate

cityno

cityname

stateno

bj

北京

null

sh

上海

null

gz

广州

gd

dl

大连

ln

欲得到如下结果:

cityno  city name  state no  state name

bj       北京      nullnull

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);

 

Java面试题总结之数据库与SQL语句