sql经典面试题
更新时间:2023-10-12 14:55:01 阅读量: 综合文库 文档下载
1.张表,学生表S,课程C,学生课程表SC,学生可以选修多门课程,一门课程可以被多个学生选修,通过SC表关联;(SQL) 1)写出建表语句;
答:建表语句如下(mysql数据库):
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) );
2)写出SQL语句,查询选修了所有选修课程的学生; 答: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门以上的课程的学生。 答:SQL语句如下:
select stu.id, stu.name from s stu
where (select count(*) from sc where sid=stu.id)>=5;
2.数据库表(Test)结构如下:(SQL)
IDNAMEAGEMANAGER(所属主管人ID) 106A30104 109B19104 104C20111 107D35109 112E25120 119F45NULL
要求:列出所有年龄比所属主管年龄大的人的ID和名字? 答:SQL语句如下:
select employee.name from test employee where employee.age>
(select manager.age from test manager where manager.id=employee.manager);
3.有3个表(15分钟):(SQL)
Student 学生表 (学号,姓名,性别,年龄,组织部门) Course 课程表 (编号,课程名称) Sc 选课表 (学号,课程编号,成绩) 表结构如下:
1)写一个SQL语句,查询选修了’计算机原理’的学生学号和姓名(3分钟) 答: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;
2)写一个SQL语句,查询’周星驰’同学选修了的课程名字(3分钟) 答:SQL语句如下:
select cname from Course where cno in (select cno from sc where sno=(select sno from Student where sname=’周星驰’));
3)写一个SQL语句,查询选修了5门课程的学生学号和姓名(9分钟) 答:SQL语句如下:
select stu.sno, stu.sname from student stu
where (select count(*) from sc where sno=stu.sno) = 5;
小小+霸霸+王王=小霸王 小=?,霸=?,王=? 用sql求证
参考答案:
declare @data int,@i int,@j int,@l int set @data=100
while (@data<=999) begin
set @i=@data/100 set @j=@data/10 % 10 set @l=@data % 10
if((@i+@j+@l)*11=@data) begin
Select @data data,@i i,@j j,@l l break end
set @data=@data+1 end; 分析:
II+JJ+LL=IJL
I*10+I +J*10+J+L*10+L = I*100+J*10+L (I+J+L)*11
1. 用一条SQL 语句查询出每门课都大于80 分的学生姓名
name kecheng fenshu 张三语文 81 张三数学 75 李四语文 76 李四数学 90 王五语文 81 王五数学 100 王五英语 90
A: select distinct name from table where name not in (select distinct name from table where fenshu<=80)
B: select name from table group by name having min(fenshu)>80
2. 一个叫 depart 的表,里面只有一个字段team, 一共有4 条纪录,分别是a,b,c,d, 对应四个球对,现在四个球对进行比赛,用一条sql 语句显示所有可能的比赛组合. 你先按你自己的想法做一下,看结果有我的这个简单吗?
create table depart (
team varchar(50) not null )
答:select a.team, b.team from depart a, depart b where a.team < b.team
3. 请用SQL 语句实现:从TestDB 数据表中查询出所有月份的发生额都比101 科目相应月份的发生额高的科目。请注意:TestDB 中有很多科目,都有1 -12 月份的发生额。 AccID :科目代码,Occmonth :发生额月份,DebitOccur :发生额。 数据库名:JcyAudit ,数据集:Select * from TestDB
答:select a.* from TestDB a
,(select Occmonth,max(DebitOccur) Debit101ccur from TestDB where AccID='101' group by Occmonth) b
where a.Occmonth=b.Occmonth and a.DebitOccur>b.Debit101ccur
4.说明:复制表( 只复制结构, 源表名:a 新表名:b)
SQL: select * into b from a where 1<>1 (where1=1,拷贝表结构和数据内容) ORACLE:create table b As
Select * from a where 1=2
[<>(不等于)(SQL Server Compact)
比较两个表达式。当使用此运算符比较非空表达式时,如果左操作数不等于右操作数,则结果为 TRUE。否则,结果为 FALSE。]
5. 说明:拷贝表( 拷贝数据, 源表名:a 目标表名:b) SQL: insert into b(a, b, c) select d,e,f from a;
6.说明:两张关联表,删除主表中已经在副表中没有的信息 SQL:
Delete from info where not exists
(select * from infobz where info.infid=infobz.infid )
7.有两个表A 和B ,均有key 和value 两个字段,如果B 的key 在A 中也有,就把B 的value 换为A 中对应的value 这道题的SQL 语句怎么写?
update b set b.value=(select a.value from a where a.key=b.key) where b.id in(select b.id from b,a where b.key=a.key);
8.为了便于阅读, 查询此表后的结果显式如下( 及格分数为60): courseid coursename score mark
--------------------------------------------------- 1 java 70 pass 2 oracle 90 pass 3 xml 40 fail 4 jsp 30 fail
5 servlet 80 pass
--------------------------------------------------- 写出此查询语句
select courseid, coursename ,score ,decode (sign(score-60),-1,'fail','pass') as mark from course
'decode'貌似在我的SQLSERVER2005里无法识别,可用以下方法替代
select courseid,coursename,score,
(case when (score-60)>=0 then 'pass' else 'fail' end) as mark from course
************************************************************************************************
sql面试题(2)
有表A,结构如下: A: p_ID p_Num s_id 1 10 01 1 12 02 2 8 01 3 11 01 3 8 03
其中:p_ID为产品ID,p_Num为产品库存量,s_id为仓库ID。请用SQL语句实现将上表中的数据合并,合并后的数据为: p_ID s1_id s2_id s3_id 1 10 12 0 2 8 0 0 3 11 0 8
其中:s1_id为仓库1的库存量,s2_id为仓库2的库存量,s3_id为仓库3的库存量。如果该产品在某仓库中无库存量,那么就是0代替。
结果:
select p_id ,
sum(case when s_id=1 then p_num else 0 end) as s1_id ,sum(case when s_id=2 then p_num else 0 end) as s2_id ,sum(case when s_id=3 then p_num else 0 end) as s3_id from myPro group by p_id
7。为管理业务培训信息,建立3个表:
正在阅读:
sql经典面试题10-12
2011年高考广东各市模拟无机化工生产工艺流程题汇编06-01
颈椎病病例模板09-05
主要的心理学实验(小白版)03-17
市场业务拓展费用及项目奖励办法10-28
2011在中国共产党张家界市永定区第六次代表大会上的报告08-05
2020年派驻纪检监察组组长在市纪委监委述职述廉大会上的发言09-02
第十二届中国经济学年会入选论文03-18
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 试题
- 经典
- sql