sql经典面试题.docx

上传人:b****3 文档编号:1422959 上传时间:2022-10-22 格式:DOCX 页数:26 大小:33.69KB
下载 相关 举报
sql经典面试题.docx_第1页
第1页 / 共26页
sql经典面试题.docx_第2页
第2页 / 共26页
sql经典面试题.docx_第3页
第3页 / 共26页
sql经典面试题.docx_第4页
第4页 / 共26页
sql经典面试题.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

sql经典面试题.docx

《sql经典面试题.docx》由会员分享,可在线阅读,更多相关《sql经典面试题.docx(26页珍藏版)》请在冰豆网上搜索。

sql经典面试题.docx

sql经典面试题

1.张表,学生表S,课程C,学生课程表SC,学生可以选修多门课程,一门课程可以被各种学生选修,通过SC表关联;(SQL)

1)写出建表语句;

答:

建表语句如下(mysql数据库):

createtables(idintegerprimarykey,namevarchar(20));

createtablec(idintegerprimarykey,namevarchar(20));

createtablesc(

sidintegerreferencess(id),

cidintegerreferencesc(id),

primarykey(sid,cid)

);

2)写出SQL语句,查询选修了所有选修课程学生;

答:

SQL语句如下:

selectstu.id,stu.namefromsstu

where(selectcount(*)fromscwheresid=stu.id)=

(selectcount(*)fromc);

3)写出SQL语句,查询选修了至少5门以上课程学生。

答:

SQL语句如下:

selectstu.id,stu.namefromsstu

where(selectcount(*)fromscwheresid=stu.id)>=5;

2.数据库表(Test)构造如下:

(SQL)

IDNAMEAGEMANAGER(所属主管人ID)

106A30104

109B19104

104C1

107D35109

112E25120

119F45NULL

规定:

列出所有年龄比所属主管年龄大人ID和名字?

答:

SQL语句如下:

selectemployee.namefromtestemployeewhereemployee.age>

(selectmanager.agefromtestmanagerwheremanager.id=employee.manager);

3.有3个表(15分钟):

(SQL)

Student学生表(学号,姓名,性别,年龄,组织部门)

Course课程表(编号,课程名称)

Sc选课表(学号,课程编号,成绩)

表构造如下:

1)写一种SQL语句,查询选修了’计算机原理’学生学号和姓名(3分钟)

答:

SQL语句如下:

selectstu.sno,stu.snamefromStudentstu

where(selectcount(*)fromscwheresno=stu.snoandcno=

(selectcnofromCoursewherecname=’计算机原理’))!

=0;

2)写一种SQL语句,查询’周星驰’同窗选修了课程名字(3分钟)

答:

SQL语句如下:

selectcnamefromCoursewherecnoin(selectcnofromscwheresno=(selectsnofromStudentwheresname=’周星驰’));

3)写一种SQL语句,查询选修了5门课程学生学号和姓名(9分钟)

答:

SQL语句如下:

selectstu.sno,stu.snamefromstudentstu

where(selectcount(*)fromscwheresno=stu.sno)=5;

小小+霸霸+王王=小霸王

小=?

霸=?

王=?

用sql求证

参照答案:

declare@dataint,@iint,@jint,@lint

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@datadata,@ii,@jj,@ll

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分学生姓名

namekechengfenshu

张三语文81

张三数学75

李四语文76

李四数学90

王五语文81

王五数学100

王五英语90

A:

selectdistinctnamefromtablewherenamenotin(selectdistinctnamefromtablewherefenshu<=80)

B:

selectnamefromtablegroupbynamehavingmin(fenshu)>80

2.一种叫depart表,里面只有一种字段team,一共有4条纪录,分别是a,b,c,d,相应四个球对,当前四个球对进行比赛,用一条sql语句显示所有也许比赛组合.

你先按你自己想法做一下,当作果有我这个简朴吗?

createtabledepart

teamvarchar(50)notnull

答:

selecta.team,b.teamfromdeparta,departbwherea.team

3.请用SQL语句实现:

从TestDB数据表中查询出所有月份发生额都比101科目相应月份发生额高科目。

请注意:

TestDB中有诸多科目,均有1-12月份发生额。

AccID:

科目代码,Occmonth:

发生额月份,DebitOccur:

发生额。

数据库名:

JcyAudit,数据集:

Select*fromTestDB

答:

selecta.*

fromTestDBa

(selectOccmonth,max(DebitOccur)Debit101ccurfromTestDBwhereAccID='101'groupbyOccmonth)b

wherea.Occmonth=b.Occmonthanda.DebitOccur>b.Debit101ccur

4.阐明:

复制表(只复制构造,源表名:

a新表名:

b)

SQL:

select*intobfromawhere1<>1(where1=1,拷贝表构造和数据内容)

ORACLE:

createtableb

As

Select*fromawhere1=2

[<>(不等于)(SQLServerCompact)

比较两个表达式。

当使用此运算符比较非空表达式时,如果左操作数不等于右操作数,则成果为TRUE。

否则,成果为FALSE。

]

5.阐明:

拷贝表(拷贝数据,源表名:

a目的表名:

b)

SQL:

insertintob(a,b,c)selectd,e,ffroma;

6.阐明:

两张关联表,删除主表中已经在副表中没有信息

SQL:

Deletefrominfowherenotexists

(select*frominfobzwhereinfo.infid=infobz.infid)

7.有两个表A和B,均有key和value两个字段,如果Bkey在A中也有,就把Bvalue换为A中相应value这道题SQL语句怎么写?

updatebsetb.value=(selecta.valuefromawherea.key=b.key)whereb.idin(selectb.idfromb,awhereb.key=a.key);

8.为了便于阅读,查询此表后成果显式如下(及格分数为60):

courseidcoursenamescoremark

---------------------------------------------------

1java70pass

2oracle90pass

3xml40fail

4jsp30fail

5servlet80pass

---------------------------------------------------

写出此查询语句

selectcourseid,coursename,score,decode(sign(score-60),-1,'fail','pass')asmarkfromcourse

'decode'貌似在我SQLSERVER里无法辨认,可用如下办法代替

selectcourseid,coursename,score,

(casewhen(score-60)>=0then'pass'else'fail'end)asmark

fromcourse

************************************************************************************************

sql面试题

(2)

有表A,构造如下:

A:

p_IDp_Nums_id

11001

11202

2801

31101

3803

其中:

p_ID为产品ID,p_Num为产品库存量,s_id为仓库ID。

请用SQL语句实现将上表中数据合并,合并后数据为:

p_IDs1_ids2_ids3_id

110120

2800

31108

其中:

s1_id为仓库1库存量,s2_id为仓库2库存量,s3_id为仓库3库存量。

如果该产品在某仓库中无库存量,那么就是0代替。

成果:

selectp_id,

sum(casewhens_id=1thenp_numelse0end)ass1_id

sum(casewhens_id=2thenp_numelse0end)ass2_id

sum(casewhens_id=3thenp_numelse0end)ass3_id

frommyProgroupbyp_id

7。

为管理业务培训信息,建立3个表:

S(S#,SN,SD,SA)S#,SN,SD,SA分别代表学号,学员姓名,所属单位,学员年龄

C(C#,CN)C#,CN分别代表课程编号,课程名称

SC(S#,C#,G)S#,C#,G分别代表学号,所选课程编号,学习成绩

(1)使用原则SQL嵌套语句查询选修课程名称为’税收基本’学员学号和姓名?

答案:

selects#,snfromswhereS#in(selectS#fromc,scwherec.c#=sc.c#andcn=’税收基本’)

(2)使用原则SQL嵌套语句查询选修课程编号为’C2’学员姓名和所属单位?

答:

selectsn,sdfroms,scwheres.s#=sc.s#andsc.c#=’c2’

(3)使用原则SQL嵌套语句查询不选修课程编号为’C5’学员姓名和所属单位?

答:

selectsn,sdfromswheres#notin(selects#fromsc

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1