微信公众号:AlbertYang
关注我更多精彩等你来发现!
Java面试题总结之数据库与SQL语句
1、有3 个表,表结构如下:
Student 学生表(学号,姓名,性别,年龄,组织部门)
Course 课程表(编号,课程名称)
Sc 选课表(学号,课程编号,成绩)。
1)写一个SQL 语句,查询选修了’计算机原理’的学生学号和姓名。
selectstudent.sno, student.sname from student
leftjoin sc on student.sno=sc.sno
leftjoin course on sc.cno=course.cno
wherecourse.cname='计算机原理';
2)写一个SQL 语句,查询’王小明’同学选修了的课程名字。
selectcname from Course
wherecno in ( select cno from sc where sno =
(selectsno from Student where sname='王小明'));
3)写一个SQL语句,查询选修了5 门课程的学生学号和姓名
selectstu.sno, stu.sname from student stu
where(select count(*) from sc where sno=stu.sno) = 5;
2、有三张表,学生表S,课程C,学生课程表SC,学生可以选修多门课程,一门课程可以被多个学生选修,通过SC 表关联。
1)写出建表语句;
createtable s(id integer primary key, name varchar(20));
createtable c(id integer primary key, name varchar(20));
createtable sc(
sidinteger references s(id),
cidinteger references c(id),
primarykey(sid,cid)
);
2)写出SQL 语句,查询选修了所有选修课程的学生;
selectstu.id, stu.name from s stu
where(select count(*) from sc where sid=stu.id) = (select count(*) from c);
3)写出SQL语句,查询选修了至少5 门以上的课程的学生。
selectstu.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 > (selectmanager.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语句为:
SELECTC.CITYNO, C.CITYNAME, C.STATENO, S.STATENAME
FROMCITY C, STATE S
WHEREC.STATENO=S.STATENO
ORDERBY(C.CITYNO);
长按识别二维码关注。
觉得不错,点下在看,转发朋友圈支持一下,感激不尽!