IT笔试题全集数据库篇追雨制作版.docx

上传人:b****7 文档编号:9365757 上传时间:2023-02-04 格式:DOCX 页数:94 大小:71.47KB
下载 相关 举报
IT笔试题全集数据库篇追雨制作版.docx_第1页
第1页 / 共94页
IT笔试题全集数据库篇追雨制作版.docx_第2页
第2页 / 共94页
IT笔试题全集数据库篇追雨制作版.docx_第3页
第3页 / 共94页
IT笔试题全集数据库篇追雨制作版.docx_第4页
第4页 / 共94页
IT笔试题全集数据库篇追雨制作版.docx_第5页
第5页 / 共94页
点击查看更多>>
下载资源
资源描述

IT笔试题全集数据库篇追雨制作版.docx

《IT笔试题全集数据库篇追雨制作版.docx》由会员分享,可在线阅读,更多相关《IT笔试题全集数据库篇追雨制作版.docx(94页珍藏版)》请在冰豆网上搜索。

IT笔试题全集数据库篇追雨制作版.docx

IT笔试题全集数据库篇追雨制作版

IT笔试题全集_数据库篇_追雨制作_2011版

追雨QQ:

262300093

数据库面试要点基本概念

1.数据库与数据库管理系统的关系:

数据库系统包含数据管理系统。

2.数据经过加工就变成了信息。

3.数据库对象就是数据库表。

4.常见的数据库有哪些?

微软的SQLServer、甲骨文公司的Oracle、IBM的DB2。

5.DBMS的概念和几个阶段。

DBMS是指数据库管理系统;分为:

萌芽阶段——文件系统、初级阶段——第一代数据库、中级阶段——第二代数据库、高级阶段——新一代数据库。

6.数据库发展经典数据模型:

网状模型和关系模型。

SQLServer是关系模型。

7.数据库的超键、候选键、主键、外键的概念:

1)能唯一标识元组的属性集称为超键;2)候选键是超键的特例,不含有多余属性;3)用户正在使用的候选键称为主键;4)主表的外键=从表的候选键(主键)。

8.三类完整性规则:

1)实体完整性规则:

主键不为空;2)引用完整性规则:

引用不为空;3)用户定义的完整性规则:

不超过用户定义范围。

SQL数据库笔试题

问题描述:

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

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

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

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

要求实现如下5个处理:

1.使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名

2.使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位

3.使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位

4.使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位

5.查询选修了课程的学员人数

6.查询选修课程超过5门的学员学号和所属单位

1.使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名

SELECTSN,SDFROMSWHERE[S#]IN(

SELECT[S#]FROMC,SCWHEREC.[C#]=SC.[C#]ANDCN=N

#8217;税收基础

#8217;)

2.使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位

SELECTS.SN,S.SDFROMS,SCWHERES.[S#]=SC.[S#]ANDSC.[C#]=

#8217;C2

#8242;

3.使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位

SELECTSN,SDFROMSWHERE[S#]NOTIN(

SELECT[S#]FROMSCWHERE[C#]=

#8217;C5

#8242;)

4.使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位

SELECTSN,SDFROMSWHERE[S#]IN(

SELECT[S#]FROMSCRIGHTJOINCONSC.[C#]=C.[C#]

GROUPBY[S#]HAVINGCOUNT(*)=COUNT(DISTINCT[S#]))

5.查询选修了课程的学员人数

SELECT学员人数=COUNT(DISTINCT[S#])FROMSC

6.查询选修课程超过5门的学员学号和所属单位

SELECTSN,SDFROMSWHERE[S#]IN(

SELECT[S#]FROMSC

GROUPBY[S#]HAVINGCOUNT(DISTINCT[C#])>5)

题目2

问题描述:

已知关系模式:

S(SNO,SNAME)学生关系。

SNO为学号,SNAME为姓名

C(CNO,CNAME,CTEACHER)课程关系。

CNO为课程号,CNAME为课程名,CTEACHER为任课教师

SC(SNO,CNO,SCGRADE)选课关系。

SCGRADE为成绩

要求实现如下5个处理:

1.找出没有选修过“李明”老师讲授课程的所有学生姓名

2.列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩

3.列出既学过“1”号课程,又学过“2”号课程的所有学生姓名

4.列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号

5.列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩1.找出没有选修过“李明”老师讲授课程的所有学生姓名

SELECTSNAMEFROMSWHERENOTEXISTS(

SELECT*FROMSC,CWHERESC.CNO=C.CNOANDC.CTEACHER=

#8217;李明

#8217;ANDSC.SNO=S.SNO)

2.列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩

SELECTS.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE)FROMS,SC,(

SELECTSNOFROMSCWHERESCGRADE<60

GROUPBYSNOHAVINGCOUNT(DISTINCTCNO)>=2

)AWHERES.SNO=A.SNOANDSC.SNO=A.SNOGROUPBYS.SNO,S.SNAME

3.列出既学过“1”号课程,又学过“2”号课程的所有学生姓名

SELECTS.SNO,S.SNAMEFROMS,(

SELECTSC.SNOFROMSC,CWHERESC.CNO=C.CNOANDC.CNAMEIN(

#8217;1

#8242;,

#8217;2

#8242;)

GROUPBYSNOHAVINGCOUNT(DISTINCTCNO)=2)SCWHERES.SNO=SC.SNO

4.列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号

SELECTS.SNO,S.SNAMEFROMS,SCSC1,SCSC2WHERESC1.CNO=

#8217;1

#8242;ANDSC2.SNO=

#8217;2

#8242;ANDSC1.CNO=S.CNOANDSC1.SCGRADE>SC2.SCGRADE

5.列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩

SELECTSC1.SNO,[1号课成绩]=SC1.SCGRADE,[2号课成绩]=SC2.SCGRADEFROMSCSC1,SCSC2WHERESC1.CNO=

#8217;1

#8242;ANDSC2.CNO=

#8217;2

#8242;ANDSC1.SNO=SC2.SNOANDSC1.SCGRADE>SC2.SCGRADE

题目3

问题描述:

本题用到下面三个关系表:

CARD借书卡。

CNO卡号,NAME姓名,CLASS班级

BOOKS图书。

BNO书号,BNAME书名,AUTHOR作者,PRICE单价,QUANTITY库存册数

BORROW借书记录。

CNO借书卡号,BNO书号,RDATE还书日期

备注:

限定每人每种书只能借一本;库存册数随借书、还书而改变。

要求实现如下15个处理:

1.写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束。

2.找出借书超过5本的读者,输出借书卡号及所借图书册数。

3.查询借阅了

水浒

一书的读者,输出姓名及班级。

4.查询过期未还图书,输出借阅者(卡号)、书号及还书日期。

5.查询书名包括

网络

关键词的图书,输出书号、书名、作者。

6.查询现有图书中价格最高的图书,输出书名及作者。

7.查询当前借了

计算方法

但没有借

计算方法习题集

的读者,输出其借书卡号,并按卡号降序排序输出。

8.将

C01

#8243;班同学所借图书的还期都延长一周。

9.从BOOKS表中删除当前无人借阅的图书记录。

10.如果经常按书名查询图书信息,请建立合适的索引。

11.在BORROW表上建立一个触发器,完成如下功能:

如果读者借阅的书名是

数据库技术及应用

,就将该读者的借阅记录保存在BORROW_SAVE表中(注ORROW_SAVE表结构同BORROW表)。

12.建立一个视图,显示

力01

#8243;班学生的借书信息(只要求显示姓名和书名)。

13.查询当前同时借有

计算方法

组合数学

两本书的读者,输出其借书卡号,并按卡号升序排序输出。

14.假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的语句。

15.对CARD表做如下修改:

a.将NAME最大列宽增加到10个字符(假定原为6个字符)。

b.为该表增加1列NAME(系名),可变长,最大20个字符。

1.写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束

CREATETABLEBORROW(

CNOintFOREIGNKEYREFERENCESCARD(CNO),

BNOintFOREIGNKEYREFERENCESBOOKS(BNO),

RDATEdatetime,

PRIMARYKEY(CNO,BNO))

2.找出借书超过5本的读者,输出借书卡号及所借图书册数

SELECTCNO,借图书册数=COUNT(*)FROMBORROW

GROUPBYCNOHAVINGCOUNT(*)>5

3.查询借阅了

水浒

一书的读者,输出姓名及班级

SELECT*FROMCARDcWHEREEXISTS(

SELECT*FROMBORROWa,BOOKSbWHEREa.BNO=b.BNOANDb.BNAME=N

#8217;水浒

#8217;ANDa.CNO=c.CNO)

4.查询过期未还图书,输出借阅者(卡号)、书号及还书日期

SELECT*FROMBORROWWHERERDATE

5.查询书名包括"网络"关键词的图书,输出书号、书名、作者

SELECTBNO,BNAME,AUTHORFROMBOOKSWHEREBNAMELIKEN'%网络%'

6.查询现有图书中价格最高的图书,输出书名及作者

SELECTBNO,BNAME,AUTHORFROMBOOKSWHEREPRICE=(SELECTMAX(PRICE)FROMBOOKS)

7.查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出

SELECTa.CNOFROMBORROWa,BOOKSb

WHEREa.BNO=b.BNOANDb.BNAME=N'计算方法'ANDNOTEXISTS(

SELECT*FROMBORROWaa,BOOKSbbWHEREaa.BNO=bb.BNOANDbb.BNAME=N'计算方法习题集'ANDaa.CNO=a.CNO)

ORDERBYa.CNODESC

8.将"C01"班同学所借图书的还期都延长一周

UPDATEbSETRDATE=DATEADD(Day,7,b.RDATE)FROMCARDa,BORROWbWHEREa.CNO=b.CNOANDa.CLASS=N'C01'

9.从BOOKS表中删除当前无人借阅的图书记录

DELETEAFROMBOOKSaWHERENOTEXISTS(

SELECT*FROMBORROWWHEREBNO=a.BNO)

10.如果经常按书名查询图书信息,请建立合适的索引

CREATECLUSTEREDINDEXIDX_BOOKS_BNAMEONBOOKS(BNAME)

11.在BORROW表上建立一个触发器,完成如下功能:

如果读者借阅的书名是"数据库技术及应用",就将该读者的借阅记录保存在BORROW_SAVE表中(注ORROW_SAVE表结构同BORROW表)

CREATETRIGGERTR_SAVEONBORROWFORINSERT,UPDATEAS

IF@@ROWCOUNT>0

INSERTBORROW_SAVESELECTi.*

FROMINSERTEDi,BOOKSb

WHEREi.BNO=b.BNOANDb.BNAME=N

#8217;数据库技术及应用

#8217;

12.建立一个视图,显示

力01

#8243;班学生的借书信息(只要求显示姓名和书名)

CREATEVIEWV_VIEWAS

SELECTa.NAME,b.BNAME

FROMBORROWab,CARDa,BOOKSb

WHEREab.CNO=a.CNOANDab.BNO=b.BNOANDa.CLASS=N

#8217;力01

#8242;

13.查询当前同时借有

计算方法

组合数学

两本书的读者,输出其借书卡号,并按卡号升序排序输出

SELECTa.CNOFROMBORROWa,BOOKSbWHEREa.BNO=b.BNOANDb.BNAMEIN(N

#8217;计算方法

#8217;,N

#8217;组合数学

#8217;)

GROUPBYa.CNOHAVINGCOUNT(*)=2ORDERBYa.CNODESC

14.假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的语句

ALTERTABLEBOOKSADDPRIMARYKEY(BNO)

15.1将NAME最大列宽增加到10个字符(假定原为6个字符)

ALTERTABLECARDALTERCOLUMNNAMEvarchar(10)

15.2为该表增加1列NAME(系名),可变长,最大20个字符

ALTERTABLECARDADD系名varchar(20)

其他sql:

#1

有学生和学生扩展两张表,在学生这张表中有学生密码这个字段,我想设置密码,是将学生扩展这张表的生日字段作为他的密码(例20060102)这两张表通过学号关联,我想实现两个查询,一是使所有学生初始化,二是是选中的学生初始化。

1)updatestudentssets.password=(selectt.brithdayfromstudent_exttwheres.id=t.id)

2)updatestudentssets.password=(selectt.brithdayfromstudent_exttwheres.id=t.id)wheres.id=?

#2

idsnamesmoneysprovince

1zhangsan2098A

2lisi3000B

3wangwu6789C

4liumazi4587C

5dongjiu3298B

6shiga4567Aid:

合同idsname:

姓名smoney:

业绩sprovince:

地区

第一道:

显示出业绩大于同一地区平均值的合同id姓名地区业绩

第二道:

把同一地区的平均业绩地区插入到新表中(新表只包含两个字段即:

平均业绩地区)

selectT1.*fromtestT1,(selectavg(smoney)s,sprovincefromtestgroupbysprovince)T2whereT1.smoney>T2.sandT1.sprovince=T2.sprovince;

createtabletable_name_2from(selectsprovince,avg(smoney)avgmoneyfromtable_name_1groupbysprovince);

#3

表内容

user(xvarchar(50),yvarchar(50))

火箭胜

火箭胜

火箭负

火箭负

湖人胜

湖人负

结果:

胜负

火箭22

湖人11

这样的sql语句怎么写?

selectxuser,sum(caseywhen

#8216;胜

#8217;then1else0end)胜,sum(caseywhen

#8216;负

#8217;then1else0end)负fromusergroupbyx

#4

表结构city

idnamemoney

1北京200

2上海100

3北京399

4广州300

5北京300

6上海100

7广州200

8上海500

求money的值小于money的平均值城市id

selecta.idfromtestawherea.money<(selectavg(money)fromtest)

#5

数据库中有这样的字段:

ids

1a

1b

2c

2d但是现在想通过sql语句查询出来,显示成为下面这样:

1ab

2cd有什么方法吗?

selectid,GROUP_CONCAT(sSEPARATOR'')fromtablenamegroupbyid;

#6

表stuinfo

idsubjectscore

1语文78

1数学60

1英语90

2语文50

2数学44

2英语55

3语文45

3数学44

3英语90现在要求如下查出每个编号的总成绩并且要大于200分

idscore→(总成绩要大于200分)

1228请写出sql语句?

selectid,sscorefrom(selectid,sum(score)sfromstuinfogroupbyid)twheret.s>200

selectid,sum(score)fromstuinfogroupbyidhavingsum(score)>=220;

#7

a表(人)b表(水果)

aidnamebidname

1a1苹果

2b2梨

3c3橙

4d4香蕉c表

cidaidbid

111

213

314

423

524

632

741

842

943

1044

问题:

根据bid求出aid(如:

bid=3andbid=4那么可以得到aid=1,aid=2,aid=4),就是说根据条件给出的水果类别.来求出买了这些水果的人.(求出买了橙子和香蕉的人的名字:

selectdistinct(aid)fromCwhereaidin(selectaidfromCwherebid=3)andaidin(selectaidfromCwherebid=4)

#8

数据库表A有个字段a是int类型

a中有数据有1到9任意(有重复的)

想取得a中,当a=1时a=2时a=3……各一条记录的列表

selecttop1*fromAwherea=1

union

selecttop1*fromAwherea=2

#8230;

union

selecttop1*fromAwherea=9

#9

一个表User,有字段id,name,message,现在要查出这个表中发消息(message)最多的人的名字,怎么表达啊?

selectnfrom(selectnamencount(id)cfromusergroupbyidorderbycdesclimit1)asa;#10

field1field2

A1

A2

A3用一条sql语句查询成:

field1all

A1,2,3,

selectfield1,group_concat(field2)asallfromtablegroupbyfield1

Sql面试题

1.有如下表GameResult:

2005-05-09胜

2005-05-09胜

2005-05-09负

2005-05-09负

2005-05-10胜

2005-05-10负

2005-05-10负

如果要生成下列结果,如何写sql语句?

日期胜负

2005-05-0922

2005-05-1012

Select日期,

sum(Casescore

When

#8216;胜

#8217;then1

Else0

End)as胜,

sum(casescore

When‘负’then1

Else0

end)as负

FromGameResult

Groupby日期

2.请取出tb_send表中日期(SendTime字段)为当天的所有记录。

(SendTime字段为datetime型,包含日期与时间)

select*fromtb_sendwheredatediff(day,SendTime,geate())=0;

3.请用一个sql语句得出结果

从table1,table2中取出如table3所列格式数据

table1

月份mon部门dep业绩yj

一月份0110

一月份0210

一月份035

二月份028

二月份049

三月份038

table2

部门dep部门名称dname

01国内业务一部

02国内业务二部

03国内业务三部

04国际业务部

table3

部门一月份二月份三月份

0110nullnull

02108null

035null8

04null9null

SelectB.depId,

sum(

caseA.mon

when

#8216;一月

#8217;thenA.yeji

end)as

#8216;一月

#8217;,

sum(

caseA.mon

when

#8216;二月

#8217;thenA.yeji

end)as

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

当前位置:首页 > 农林牧渔 > 农学

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

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