对这条SQL做以下哪项修改能够达到目的?
A.改变WHERE子句
B.把聚合函数移到SELECT列表中,并增加GROUP子句
C.通过子查询得出平均工资水平并在父查询的WHERE子句中比较
D.把聚合函数移到SELECT列表中,并增加GROUPBY子句和HAVING子句
1.1.2.数据库【炎黄盈动】
要从员工表中查询所有姓Smith的人,但是并不能确定所有Smith的大小写,以下哪条语句能解决问题?
A.SELECTlast_name,first_nameFROMempWHERElast_name=’smith’
B.SELECTlast_name,first_nameFROMempWHEREUPPER(last_name)=’smith’
C.SELECTlast_name,first_nameFROMempWHERElast_name=UPPER(‘smith’)
D.SELECTlast_name,first_nameFROMempWHERELOWER(last_name)=’smith’
1.1.3.deletefromtablea&truncatetabletablea的区别()【中美寰宇】
A.没有区别
B.速度相同
C.速度不同
D.日志记录不同
1.1.4.下列哪些(或哪个)不是PL/SQL的组成部分()【四川银海】
A.DECLARE
B.CATCH
C.THROW
D.EXCEPTION
1.1.5.SQL语句中修改表结构的命令是______。
【盈盛科技】【中科金财】
A.MODIFYTABLE
B.MODIFYSTRUCTURE
C.ALTERTABLE
D.ALTERSTRUCTURE
1.1.6.对数据库中表null的理解错误的是()【德邦物流】
A.null等价于没有任何值,是未知数。
B.对空值做加、减、乘、除等运算操作,结果仍为空
C.比较时使用关键字用“==null”和“!
=null”
D.比其他数据都大所以降序排序时NULL值总是排在最前但是在mySQL中NULL是最小的。
1.1.7.对事务回滚的正确描述是_____。
【赢璟网络】
A.将该事务对数据库的修改进行恢复
B.将事务对数据库的更新写入硬盘
C.跳转到事务程序的开头重新执行
D.将事务中修改的变量值恢复到事务开始时的初值
1.1.8.sql语句selectlast_name||’salaryis’||salaryfromemployees查询结果()【德邦物流】
Employees表结构如下:
A.King‘salaryis’24000
B.king24000
C.kingsalaryis24000
D.sql语句语法错误
1.1.9.{SQL题目}在pubs数据库titles表的notes列中搜索以字符串"50%"开头的所有记录,请选择以下正确的语句:
()(选择1项)【国研网络】
A.SELECT*FROMtitlesWHEREnotesLIKE'50%'
B.SELECT*FROMtitlesWHEREnotesLIKE'50/%%'ESCAPE'/'
C.Escape对转意进行说明;
D.SELECT*FROMtitlesWHEREnotesLIKE'50%'ESCAPE'%'
E.SELECT*FROMtitlesWHEREnotesLIKE'50%%%'ESCAPE'%'
1.1.10.如果A为null则返回B,否则返回A,应该使用下列哪个函数?
( )【四川银海】
A.NULLIF(A,B)
B.NVL(A,B)
C.NVL2(A,B)
D.DECODE(A,B)
1.1.11.唯一标识表中的记录的一个或者一组列被称为()【中软融鑫】
A.外键
B.主键
C.关系
D.度
1.1.12.只有满足联接条件的记录才包含在查询结果中,这种联接为()【中软融鑫】
A.左联接
B.右联接
C.内部联接
D.完全联接
1.1.13.下列语句不属于ORACLEDDL的是()【掌中浩阅】
A.RENAME
B.TRUNCATE
C.MERGE
D.Alter
1.1.14.为简化用户的查询操作,又不增加数据的存储空间,常用方法为创建()【中科金财】
A.另一个表(TABLE)
B.游标
C.视图
D.索引
1.1.15.____是DBMS的基本单位,它是用户定义的一组逻辑一致的程序序列。
(C)【中科金财】
A.程序
B.命令
C.事务
D.文件
1.1.16.数据库中有以下数据:
ID(pri)(Auto)namepass
1aaa111
2bbb222
3ccc333
a.请用一条SQL语句将现有的三条记录复制一下,达到以下的效果:
insertintofooselectseq_foo.nextval,name,passfromfoo;
可适于拷贝数据库,反复运行还可将数据以几何级数增加用于测试;
ID(pri)(Auto)namepass
1aaa111
2bbb222
3ccc333
4aaa111
5bbb222
6ccc333
b.再用sql语句删除重复记录。
Deletefromfoowhereidnotin(Selectmin(id)fromfoogroupbyname,pass);
1.1.17.表名:
高考信息表
准考证号 科目 成绩
2006001 语文 119
2006001 数学 108
2006002 物理 142
2006001 化学 136
2006001 物理 127
2006002 数学 149
2006002 英语 110
2006002 语文 105
2006001 英语 98
2006002 化学 129
……
给出高考总分在600以上的学生准考证号。
Selectnum,sum(score)fromxinxibiaogroupbynumhavingsum(score)>600;
若还要按学号过滤,先过滤再分组,效率比较高;
Selectnumfromxinxibiaonumlike‘2006%’groupbynumhavingsum(score)>600;
1.1.18.数据库有两张表一个学生表(id,name,sex),一个学生成绩表(id,chineses,English,math),要求查询学生基本信息以及各科成绩和总成绩,总成绩要求在200到300之间,学生姓名降序。
【锐志信息】
Selectc+e+mFromstudentsjoingradegon(s.id=g.id)
1.1.19.现有关系数据库表如下:
1.1.20.垂直拆分举例:
网站登录页面,只存用户名,密码,主键等,提高效率;
1.1.21.水平拆分举例:
账单,每月一查;
学生表(学号char(6),姓名,性别,身份证号)
课程表(课号char(6),名称)
成绩表(id,学号,课号,分数)
用sql实现下面2题:
1.检索姓马的女同学情况(姓名,身份证号)
2.检索有一门或一门以上课程成绩大于等于90的所有学生信息(学号,姓名)
1Selectdistinctstu.id,namefromstudentjoinscoreonstudent.id=score.sidwherescore>=90
2select*fromstuwhereexists(select1fromscorewheresid=stu,idandscore>=90)
3都大于90;select*fromstuwhereidin(selectstu.idfromscoregroupbystu,idhavingmin(score)>=90)
4部分课程大于90;
selectstu.name,stu.sexfromstuwhereexists(select1fromscorewhersid=stu.idandscore>=90groupbystu,idhavingcount(cid)>=3)
1.1.22.有三张表,学生表Student,课程Course,学生课程表SC,学生可以选修多门课程,一门课程可以被多个学生选修,通过SC表关联。
1)写出建表语句;
2)写出SQL语句,查询选修了所有选修课程的学生;
Select*fromstuwhereexists(Selectfromscwheresid=stu.idGroupbysidhavingcount(cid)=(selectcount(c.id)fromcoursec));
3)写出SQL语句,查询选修了至少2门以上的课程的学生。
1.1.23.表class和student结构如下,请完成后续SQL语句【兴侯】
表class
属性
类型(长度)
默认值
约束
含义
CLASSNO
数值
(2)
无
主键
班级编号
CNAME
变长字符(10)
无
非空
班级名称
表student
属性
类型(长度)
默认值
约束
含义
STUNO
数值(8)
无
主键
学号
SNAME
变长字符(12)
无
非空
姓名
SEX
字符
(2)
男
无
性别
BIRTHDAY
字符(8)
无
无
生日
EMAIL
变长字符(20)
无
唯一
电子邮件
SCORE
数值(5,2)
无
检查
成绩
CLASSNO
数值
(2)
无
外键,关联到表CLASS的CLASSNO主键
班级编号
数据
STUNO
SNAME
SEX
BIRTHDAY
EMAIL
SCORE
CLASSNO
21
tom
男
19790203
tom@
89.50
1
56
jerry
默认值
空
空
空
2
a.修改表student的数据,将所有一班的学生成绩加10分。
Updatestudentsetscore=score+10whereclassno=1;
b.删除表student的数据,将所有3班出生日期晚于1981年5月12日的记录删除。
Deletefromstudentwhereclassno=3andbirthday>to_date(“1982-5-12”.”yyyy-mm-dd”)
c.按班级升序排序,成绩降序排序,查询student表的所有记录。
d.查询student表中所有三班成绩为空的学生记录。
e.表student与class联合查询,要求查询所有学生的学号,姓名,成绩,班级名称。
f.按班级编号分组统计每个班的人数、最高分、最低分、平均分,按平均分降序排序。
g.查询学生记录中所有成绩高于本班学生平均分的记录。
Selectstu.id,stu,nameFromstudentjoin(selectclassno,avg(score)avg_scorefromstudentgroupbyclassno)onstu.classno=cwherestu.score>avg_score;
h.查询所有学生记录中成绩前十名的学生的学号、姓名、成绩、班级编号。
Select*from(selectstu.id,stu.name,rownumnumfromstuorderbyscoredesc)wherenum<10;
1.1.24.有两张表student和score【易特英才】
Student:
学号,姓名,性别,年龄
Score:
学号,语文,数学,英语
1.查询张三的学号,姓名,性别,语文,数学,英语
2.查询语文比数学好的同学
3.查出姓名相同的学生学号
1.1.25.对一个用户登录模块,要求每个用户只允许3次登陆错误,超过则将锁定此帐户。
【炎黄盈动】
1数据库设计
USER(id,name,passwd,flag(错误次数0,1,2,3),lock_time)
Selectcount(*)fromUSERwherename=?
andpasswd=?
and(flag!
=3orflag=3and(sysdate-lock_time)>10*60*1000)
?
-->输入的用户名;
?
-->输入的密码加密后;
2主要的更改;
1.1.26.数据脚本
createtabletest1
(
piciVARCHAR2(30),
busicodeVARCHAR2(50),
amtNUMBER,
flagVARCHAR2
(1)
);
--Addcommentstothecolumnscommentoncolumntest1.flagis'1表示成功2表示失败';
insertintotest1values('20130201','0201111',10,1);
insertintotest1values('20130201','0201112',5,2);
insertintotest1values('20130201','0201113',10,2);
insertintotest1values('20130201','0201114',5,1);
insertintotest1values('20130202','0202111',10,1);
insertintotest1values('20130202','0202112',20,1);
insertintotest1values('20130202','0202113',20,1);
insertintotest1values('20130202','0202114',20,1);
insertintotest1values('20130203','0203111',10,2);
insertintotest1values('20130203','0203111',10,2);
insertintotest1values('20130203','0203111',10,2);
实现要求:
标识位flag1表示扣款成功2表示扣款失败一句sql查询出每天扣款成功笔数,成功金额,失败笔数,失败金额
Selectcount(decode(flag,1,1,null),sum(decode(flag,1,amt,0)),count(decode(flag,2,1,null),sum(decode(flag,2,amt,0))fromtest1groupbypici
1.1.27.【北京百悟】
书表(books)
book_id,book_name,creatdate,Lastmodifydate,decription
001,三个人的世界,2005-02-02,2005-07-07,NULL
作者表(authors)
A_id,A_name
01,王纷
02,李尚
03,泰和
部门表(depts)
d_id,d_name
001,编辑一部
002,编辑二部
003,编辑三部
书和作者关联表(bookmap)
book_id,A_id
001,01
001,02
001,03
部门和作者关联表(depmap)
d_id,a_id
001,01
002,02
003,03
找出每个部门的所写的总书量,比如,一本书有3个人写,如果三个人在不同的部门,则每个部门的总数量就是1.
Selectd_name,count(book_id)from(selectd_id,book_idfromdeptmapJoinbookmapusing(a_id)groupbyd_id,book_id)joindepts.Using(d_id)proupbyd_name;
最后结果如下:
部门,书量
编辑一部,1
编辑二部,1
编辑三部,1
1.1.28.【北京百悟】
两个表情况
表名:
wu_plan
ID plan model corp_code plannum prixis
1 00001 exx22 nokia 2000 2001
2 00002 lc001 sony 3000 0
表名:
wu_bom
ID plan pact amount
1 00001 aa1 300
2 00001 aa2 200
3 00002 bb1 500
4 00002 bb2 800
5 00002 bb3 400
查询这两个表中plan唯一,每一个plan中,amount最少的,plannum大于prixis的记录。
结果是:
ID plan model corp_code plannum prixis pact amount
1 00001 exx22 nokia 2000 0 aa2 200
2 00002 lc001 sony 3000 0 bb3 400
1.1.29.数据库方面:
【联盟优势】
createtabletbl_threat
(pk_threat_idintunsignednotnullauto_increment,
dt_log_timedatetime,//发生时间
i_severityint,//严重程度
i_device_idint,//设备id
str_tr_typevarchar(64),//告警类型
str_tr_namevarchar(256),//类型名称
i_work_idintunsigned,//工单id
dt_complete_timedatetime,//完成时间
i_statustinyintdefault0comment'0-新分派,1-重新激活2-完成',//告警状态
primarykey(pk_threat_id)
);
createtabletbl_work
(pk_work_idintnotnullauto_increment,
str_titlevarchar(256),//工单名称
i_owner_org_idintunsigned,//负责人组织id
i_owner_idint,//负责人id
dt_dispatch_timedatetime,//派单时间
dt_finish_timedatetime,//完成时间
i_is_historytinyintdefault0,//是否为历史工单
dt_expect_timedatetime,//期望完成时间
i_in_timetinyint
(1)default0,//及时性
i_prioritytinyint
(1),//优先级
primarykey(pk_work_id)
);
ps:
threat告警work工单
i_severity严重程度0代表一般1代表低危2代表中危3代表高危
1.请查出当前日期前三天发生的告警的类型名称、告警类型、发生时间、严重程度及派单时间用日期按照降序排列。
2.请查出当前日期前三天发生的告警的数量最多的告警类型及数量,数量按降序排列的前5个。
1.1.30.设有图书管理数据库:
【盈盛科技】
图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2))
1.检索书价在15元至25元(含15元和25元)之间的图书的书名、作者、书价和分类号,结果按分类号升序排序。
2.为图书表建立一个视图.
1.1.31.写一个oracle函数,输入参数(字符串str,整型len,字符c)返回字符串rstr
要求:
如果字符串str的长度小于len,则返回的字符串rstr为在字符串str前填充字符c达到长度为len的字符串。
如果字符串str的长度大于等于len,则返回的字符串rstr为str。
【盈盛科技】
参考答案(oracle):
1.1.32.表结构【盈盛科技】
(1).表名:
g_cardapply
字段(字段名/类型/长度):
g_applynovarchar8;//申请单号(关键字)
g_applydatebigint8;//申请日期
g_statevarchar2;//申请状态
(2).表名:
g_cardapplydetail
字段(字段名/类型/长度):
g_applynovarchar8;//申请单号
g_namevarchar30;//申请人姓名
g_idcardvarchar18;//申请人身份证号
g_statevarchar2;//申请状态
其中,两个表的关联字段为申请单号
题目:
(1).查询身份证号码为440401430103082的申请日期
(2).查询同一个身份证号码有两条以上记录的身份证号码及记录个数