数据库面试sql
问题一:、有三张表,学生表S,课程表C,学生课程表SC
01:写出建表语句
答:
create table s(id integer primary key,name varchar(20));
create table c(id integer primary key,name varchar(20));
create table sc(
sid integer references s(id),
cid integer references c(id),
primary key(sid,cid)
)
02:写出SQL语句,查询选修了所以选修课程的学生
答:
select stu.id,stu.name from s stu
where(
select COUNT(*) from sc
where sc.sid=stu.id
)=(
select COUNT(*) from c
)
03:写出SQL语句,查询选修了至少5门以上的课程的学生
答:
select stu.id,stu.name from s stu
where (
select COUNT(*) from sc
where sid=stu.id
)>=5
问题二:有三张表、Student学生表(学号、姓名、性别、组织部门)、
Course课程表(编号、课程名称)、
Sc选课表(学号、课程编号、成绩)
01、写一个SQL语句,查询选修了'计算机原理'的学生学号和姓名
答:
select stu.sno,stu.sname from Student stu
where(
select COUNT(*)from sc
where sno=stu.sno
and cno=(
select cno from Course
where cname='计算机原理'
)
)!=0
02、写一个SQL语句,查询'周星驰'同学选修的课程名称
答:
select cname from Course
where cno in(
select cno from sc where sno=(
select sno from Student
where sname='周星驰'
)
)
03、写一个SQL语句,查询选修了5门课程的学生学号和姓名
答:
select stu.sno,stu.sname from Student stu
where (
select COUNT(*) from sc where sno=stu.sno
) =5
04、查询两门以上(包括两门)课程不及格的学生名称以及平均成绩
答:
select s.sno,s,sname,AVG(sc.score)
from Student s,sc
where s.sno=sc.sno
group by s.sno,s.sname
having COUNT(
case when sc.score<60 then 1 end
)>2
问题三:数据库表Test结构如下:
ID NAME AGE MANAGER(所属主管人ID)
106 A 30 104
107 B 20 108
108 C 19 104
109 D 25 109
116 E 40 120
119 F 45 null
要求:列出所有年龄比所属主管年龄大的人的id和姓名?
答:
select employee.name from test employee
where employee.age>(
select manager.age from test manager
where manager.id=employee.manager
)
问题四:有如下两张表
表city:
CityNo CityName StateNo
bj 北京 null
sh 上海 null
gz 广州 gd
dl 大连 ln
表state:
StateNo StateName
gd 广东
ln 辽宁
sd 山东
nmg 内蒙古
欲得到结果如下:
CityNo CityName StateNo StateName
bj 北京 null null
dl 大连 ln 辽宁
gz 广州 gd 广东
sh 上海 null null
答:
select c.cityno,c.cityname,c.stateno,s.statename
from city c,state s
where c.stateno=s.stateno
order by c.cityno
问题五:有三张表
S(SNO,SNAME)学生关系。学号、姓名
C(CNO,CNAME,CTEACHER)课程关系。课程号、课程名称、任课老师
SC(SNO,CNO,SCGRADE)选课关系。SCGRADE成绩
01、找出没有选修过'张三'老师讲授的所有学生姓名
答:
select sname from s
where sno not in(
select sno from sc
where cno in(
select cno from c
where cname='张三'
)
)
02、列出有二门以上(含二门)不及格课程的学生姓名和学号
答:
select sname,(
select AVG(scgrade) from sc where sno=s.sno
) from s
where (select COUNT(*) from sc where sno=s.sno and
scgrade<60
)>=2
03、列出既学过'1'号课程,又学过'2'号课程的所有学生学号和姓名
答:
select sname from s
where sno in(select sno from where cno=1 or cno=2)
04、列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号及姓名
答:
select sname from s
where sno in(
select sno from sc where cno=1 and scgrade>(
select scgrade from sc
where sno=2 and cno=1
)
)
05、列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩
答:
select sname from s
where (select scgrade from sc
where sno=s.no and cno=1
)>(select scgrade from sc
where sno=s.sno and cno=2
)
数据库面试sql的更多相关文章
- 50个常用的笔试、面试sql语句
50个常用的笔试.面试sql语句 2009-12-17 15:05 Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,s ...
- java web面试技巧,数据库面试,java web轻量级开发面试教程
我最近看到一本比较好的讲java web方面面试的书,java web轻量级开发面试教程. 其中不仅用案例和视频讲述了Spring MVC,Hibernate, ORM等方面的技巧,而且还实际讲到了面 ...
- 数据库基础SQL知识面试题一
数据库基础SQL知识面试题一 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如标题所示,本篇博客主要介绍基础知识的面试题.大家可以用来测试面试者的技术水平,由于个人水平所限,难免 ...
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- 如何转换SQL Server 2008数据库到SQL Server 2005
背景介绍: 公司一套系统使用的是SQL SERVER 2008数据库,突然一天收到邮件,需要将这套系统部署到各个不同地方(海外)的工厂,需要在各个工厂部署该数据库,等我将准备工作做好,整理文档 ...
- jdbc向各种数据库发送sql语句
1.有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事.换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Info ...
- SQL---Chapter01 数据库和SQL
数据库类型: 层次数据库(Hierarchical Database, HDB) 数据通过层次结构(树形结构)的方式表示出来. 关系型数据库(Relational Database, RDB) 使用专 ...
- 总结一些关于操作数据库是sql语句还是存储过程问题
总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...
- SQL Server 【附】创建"商品管理数据库"、"学生选课数据库"的SQL语句
附:(创建“商品管理数据库”的SQL语句) --建立"商品管理数据库"数据库-- create database 商品管理数据库 on(name='商品管理数据库_m', file ...
随机推荐
- Procedure-Function oracle
说明:SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL. 0.调试 点击procedure名,右键选择调试.即可进入调试模式.找到procedu ...
- mavenLocal默认地址转移
maven的默认本地仓库为 USER_HOME/.m2/ windows开发我们大多不会讲本地仓库放在c盘下,而是重新指定了另一个存储位置. 在gradle中 使用 mavenLocal() 时的查找 ...
- c#之using关键字
1.using可以引入命名空间: 2.在using语句里声明的变量,使用完后会自动调用Dispose方法(实现IDisposable接口). using 语句允许程序员指定使用资源的对象应当何时释放资 ...
- Oracle+Mybatis批量插入,更新和删除
1.插入 (1)第一种方式:利用<foreach>标签,将入参的list集合通过UNION ALL生成虚拟数据,从而实现批量插入(验证过) <insert id="inse ...
- 脱离SVN的控制
在桌面创建一个记事本文件,然后吧这句话复制进去for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn ...
- mysql 新增数据
- k8s 问题
kubelet: Orphaned pod "4db449f0-4eaf-11e8-94ab-90b8d042b91a" found, but volume paths are s ...
- Cookie进行会话管理
一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学曾 ...
- test5
## 前言 因为vs2010没有集成mvvmlight 所以想要使用mvvmlight的relaycomman需要引用dll 需要测试某个功能的时候,不能进行快带的集成 ## 引用mvvmlight ...
- np.random.seed()
124.np.random.seed()的作用 陈容喜 关注 2018.01.11 21:36 字数 3 阅读 4460评论 0喜欢 6 今天看到一段代码时遇到了np.random.seed(),搞不 ...