select LESSON_NAME as '科目',
max(case when sequence = 1 then NameGrade else null end) as '第一名(姓名+分数)',
max(case when sequence = 2 then NameGrade else null end) as '第二名(姓名+分数)',
max(case when sequence = 3 then NameGrade else null end) as '第三名(姓名+分数)'
(
select LESSON_NAME,STU_NAME+','+convert(varchar,GRADE) as NameGrade,sequence
(select bLESSON_NAME,cSTU_NAME,aGRADE,row_number() over(order by aGRADE Desc, cSTU_NAME asc) as sequence from score a
inner join lession b on (aLESSION_ID = bLESSION_ID)
inner join student c on (aSTU_ID = cSTU_ID) ) d
where sequence < 4
) e
group by LESSON_NAME
order by case(when LESSON_NAME = '语文' then 1,
when LESSON_NAME = '数学' then 2,
when LESSON_NAME = '英语' then 3,
when LESSON_NAME = '物理' then 4,
when LESSON_NAME = '化学' then 5,
else 9999 end)
大概就是这个样子,没执行,你自己再调试下 。
如果两个人相同分数,根据名字顺序排列
1create database Readbook
on
(name=Readbook_data,filename='D:\server\Readbook_datamdf',size=2mb,maxsize=10mb,filegrowth=1mb)
log on
(
name=Readbook_log,
filename='D:\server\Readbook_logldf',size=1mb,maxsize=5mb,filegrowth=1mb
)
go
2use mybase
go
alter database mybase
add log file
(
name=Readbook2_log,
filename='D:\server\mybase2_logldf',size=2mb,maxsize=10mb,filegrowth=1mb
)
go
3alter database mybase
remove file Readbook2_log
1/A
2/B
3/A
4/A
5/B
6/C
7/数据结构,数据 *** 作,完整性约束条件
8/表
9/DBA
10/数据独立性差
11/SQL
12/内模式
13/存储
14/外模式,模式和内模式
15/应用程序, *** 作系统,数据库管理系统
16/数据库管理系统
17/增删改查
18/实体,属性和联系
19/A
20/属性
欢迎批评指正。
数据库都不建好,这让别人很难给你回答!幸好我也要考数据库,顺手写下了:(收
悬赏分的哦!呵呵……)4select sname
from student,sc
where studentsno=scsno and cno='1'
5select sname
from student
where sdept =(select sdept
from student
where sname='刘晨')
6delete
from student
where sdept='cs'
7Grant select,update(sname)
on student
to ut
8update student
set sage=20
where sage<20
9select sname ,sccno,cname
from student,sc,co
where studentsno=scsno and sccno=cocno and sname='刘晨'
10select sname,sage
from student,sc,co
where studentsno=scsno and sccno=cocno and cname='数据库'
注:数据库要自己那建立,我用的是SQL2000,建表:学生表 student 选修表sc 课程表co
特别在建时sc参照student时,外码要建立级连删除,级连修改,及on update cascade, on delete
cascade不然第8题运行时将拒绝执行。
(1)已知表T1中有2行数据,T2中有3行数据,执行SQL语句
“select a from T1 a,T2 b”后,返回的行数为______
A、2行
B、3行
C、5行
D、6行
多表查询没有指定连接条件,会导致笛卡尔积的出现,返回行数等于2张表的行数乘积,返回6行记录
考察:对多表连接、笛卡尔积的理解
答案:A
(2)、已知表T1和T2的字段定义完全相同,T1,T2中各有5条不同的数据,其中T1有2条数据存在于表T2中,语句“select from T1 union select from T2”
返回的行数为_______
A、8行
B、10行
C、3行
D、12行
第二题 UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
考察:UNION 的理解
答案: A
(3)、 已知表T1含有字段ID、CourseID和Score,且数据为
ID CourseID Score
3 1 90
2 1 85
2 2 90
3 2 80
则语句“select id,sum(ScorE) from T1 group by ID”的执行结果为_________
A、 ID sum(ScorE)
—– ———-
3 170
2 175
B、 ID sum(ScorE)
—– ———-
2 175
3 170
C、 ID sum(ScorE)
—– ———-
2 170
3 175
D、 ID sum(ScorE)
—– ———-
3 175
2 170
第三题 GROUP BY 对按照ID字段进行分组,同时对ID相同字段的ScorE进行求和,GROUP by 会自动对结果集进行排序所以答案选B
考察:group by 的理解
答案: B
(4)、电话号码表t_phonebook中含有100万条数据,其中号码字段PhoneNo上创建了唯一索引,且电话号码全部由数字组成,要统计号码头为321的电话号码的数量,下面写法执行速度最慢的是_________
A、 select count() from t_phonebook where phoneno >= ‘321’ and phoneno < ‘321A’
B、 select count() from t_phonebook where phoneno like ‘321%’
C、 select count() from t_phonebook where substring(phoneno,1,3) = ‘321’
A>或者< *** 作符会采用索引查找
B:LIKE通配符在XXX%情况下会应用索引,如果在%xxx%等情况下不会应用索引
答案: C:采用函数处理的字段不能利用索引,例如substr() 这个题好像写成java的函数了
答案: C
(5)、已知表tbl中字段land_ID建有索引,字段cust_id建有唯一索引,下列语句查询逻辑相同,其中执行效率最优的是
A、 SELECT FROM tbl
WHERE land_id > 750
or (cust_id=180 or cust_id=560)
B、 SELECT FROM tbl
WHERE (cust_id=180 or cust_id=560)
or land_id > 750
C、 SELECT FROM tbl WHERE land_id > 750
UNION
SELECT FROM tbl WHERE cust_id = 180
UNION
SELECT FROM tbl WHERE cust_id = 560
D、 SELECT FROM tbl WHERE land_id > 750
UNION
( SELECT FROM tbl WHERE cust_id = 180
UNION ALL
SELECT FROM tbl WHERE cust_id = 560
)
C/D相比较而言,D的执行效率更高一些
UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录
采用UNION ALL *** 作符替代UNION,因为UNION ALL *** 作只是简单的将两个结果合并后就返回。
(6)、员工技能表Staffskill结构如下,Staff和Skill字段建有唯一约束
staff VARCHAR2(10),
skill VARCHAR2(10)
哪条语句可以查询同时拥有技能A和技能B的员工
A、 select staff from Staffskill where skill=’A’ OR skill=’B’
B、 select staff from Staffskill where skill=’A’ AND skill=’B’
C、 select staff from Staffskill where skill=’A’ OR skill=’B’ group by staff
D、 select staff from Staffskill where skill=’A’ OR skill=’B’ group by staff having count()>1
答案:D
(7)员工表staff表结构如下
staffNo varchar2(10),
Email varchar2(50)
哪一个SQL语句查询出没有E_mail地址的员工号
A、select staffno from Staff where Email = NULL
B、select staffno from Staff where Email <> NULL
C、select staffno from Staff where Email is null
D、select staffno from Staff where Email is not null
答案: C
(8)Oracle数据库启动步骤的顺序为
1Mount 2Open 3Nomount
A、3-1-2
B、2-3-1
C、2-1-3
D、3-2-1
答案:A
(9)存在两个结构相同的数据库表T1(col1,col2,col3)、T2(col1,col2,col3),写出一SQL语句将所有T1数据导入到T2表
A、select col1,col2,col3 from T1 INTO T2 (col1,col2,col3)
B、INSERT T1 (col1,col2,col3) INTO T2(col1,col2,col3)
C、insert into T2 (col1,col2,col3) AS select col1,col2,col3 from T1;
D、insert into T2 (col1,col2,col3) select col1,col2,col3 from T1;
答案: D
10)一个表的字段为varchar2,如果建表时没有指定长度,则默认长度为:
A、1
B、25
C、38
D、255
E、4000
F、建表时varchar2类型字段必须指定长度
答案:F
(11)用TRUNCATE和DELETE语句删除表中数据的区别
A、TRUNCATE命令不记录日志
B、TRUNCATE命令记录日志
C、DELETE命令不记录日志
答案:A
(12)如下查询语句SELECT id_number,100/quantity from inventory如果quantity为空,则查询语句的第二个字段将返回
A、 a space
B、 a null value
C、 a value of 0
D、 a value of 100
E、 the keywork null
答案:B
(13)如下语句:SELECT iid_number,mid_number FROM inventory i,manufacturer m
WHERE imanufacturer_id = mid_number
Order by inventorydescription
执行时是错误的,请问以下措施哪个能够改正这个错误
A 在order by的子句中使用表的别名
B 在where子句中去掉表的别名
C 在where子句中用表名代替表的别名
D 在order by子句中去掉表名,只要字段名称即可
(如果2张表中,不同时存在字段名为description的话,D答案也是正确的)
答案:A
14)A表字段a 类型int中有100条记录,值分别为1至100。如下语句
SELECT a FROM A
WHERE A BETWEEN 1 AND 50
OR (A IN (25,70,95)
AND A BETWEEN 25 AND 75)
则如下哪个值在这个sql语句返回的结果集中
A、30 B、51 C、75 D、95
答案:A
15) 变量v_time = ‘23-MAY-00’,如下那条语句返回值为‘01-JAN-00’
A SELECT ROUND(V_TIME,’DAY’) FROM DUAL;
B SELECT ROUND(V_TIME,’YEAR’) FROM DUAL;
C SELECT ROUND(V_TIME,’MONTH’) FROM DUAL;
D SELECT ROUND(TO_CHAR(V_TIME,’YYYY’)) FROM DUAL;
答案:B
16)关于索引(index)的说法哪些是错误
A、创建索引能提高数据插入的性能
B、索引应该根据具体的检索需求来创建,在选择性好的列上创建索引
C、索引并非越多越好
D、建立索引可使检索 *** 作更迅速
答案: A
(17)指出下面sql语句的错误之处:
select id_number “Part Number”,sum(price) “price” from inventory
where price > 50
group by “Part Number”
order by 2;
A、order by 2
B、from inventory
C、 where price > 50
D、group by “Part Number”
答案:D
(18)如下语句
if v_num > 5 then
v_example := 1;
elsif v_num > 10 then
v_example := 2;
elsif v_num < 20 then
v_example := 3;
elsif v_num < 39 then
v_example := 4;
else v_example := 5;
如果v_num = 37,则v_example的值是多少
A、1 B、2 C、3 D、4 E、5
答案:A
以上就是关于数据库开发工程师面试题全部的内容,包括:数据库开发工程师面试题、求sql数据库考试题答案、数据库试题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)