SQLServer练习题2
时间:2021-08-31
Sql server一期内部测试题
一选择题
1、 _______是指组成表的各列的名称及数据类型,也就是日常表格的“栏目信息”。(选择1项)
A) 表型
B) 记录
C) 属性
D) 关键字
2、在SQL查询时,使用()子句指出的是分组后的条件。 (选择1项)
A) WHERE
B) HAVING
C) WHEN
D) GROUP
3、已知关系: 员工(员工号,姓名,部门号,薪水) PK=员工号 FK=部门号
部门(部门号,部门名称,部门经理员工号) PK=部门号(PK指的式主键 FK指的式外键)
现在要查询部门员工的平均工资大于3000的部门名称及平均工资,下面哪两句查询正确:(选择2项)
A) SELECT 部门名称,AVG(薪水) FROM 部门 P,员工 E WHERE E.部门号=(SELECT部门号 FROM 部门 WHERE 部门名称 = P.部门名称) GROUP BY 部门名称 HAVING AVG(薪水)> 3000
B) SELECT 部门名称,AVG(薪水) FROM 部门 P INNER JOIN 员工 E ON P.部门号=E.部门号 GROUP BY 部门名称 WHERE AVG(薪水)> 3000
C) SELECT 部门名称,AVG(薪水) FROM 部门 P INNER JOIN 员工 E ON P.部门号=E.部门号 GROUP BY 部门名称 HAVING AVG(薪水)> 3000
D) SELECT 部门名称,AVG(薪水) FROM 部门 P,员工 E WHERE P.部门号=(SELECT部门号 FROM 部门 WHERE 部门名称 = P.部门名称) GROUP BY 部门名称 HAVING AVG(薪水)> 3000
4、要将表userInfo从数据库中删除,用以下的哪个命令?(选择1项)
A) DROP TABLE userInfo
B) TRUNCATE TABLE userInfo
C) DELETE FROM userInfo
D) DROP FROM userInfo
5、在以下哪种情况下使用主键约束而不使用唯一约束:(选择1项)
A) 列的值允许为空值
B) 列有外键引用
C) 列的值不允许为空值
D) 以上都不对
6、在数据库表employee中查找字段empid中以两个数字开头第三个字符是下画线“_”的所有记录。
请选择以下正确的语句:(选择1项)
A) SELECT * FROM employee WHERE empid LIKE '[0-9][0-9]_%'
B) SELECT * FROM employee WHERE empid LIKE '[0-9][0-9]_[%]'
C) SELECT * FROM employee WHERE empid LIKE '[0-9]9[_]%'
D) SELECT * FROM employee WHERE empid LIKE '[0-9][0-9][_]%'
7、函数FLOOR(-41.3)返回 ______。(选择1项)
A) -41
B) -42
C) 41
D) 以上都不是
8、下面哪个函数返回的是满足给定条件的平均值:(选择1项)
A) Max(col_name)
B) Avg(col_name)
C) Sum(col_name)
D) COUNT(col_name)
9、合并多个查询结果集,应使用( )关键字。
E) A、join B、union
F) C、into D、and
10、在SQL查询时,使用WHERE子句指出的是。(选择1项)
A) 查询目标
B) 查询结果
C) 查询条件
E) 查询视图
11、下面有关HAVING子句描述错误的是。(选择1项)
A) HAVING子句必须与GROUPBY子句同时使用,不能单独使用
B) 使用HAVING子句的同时不能使用WHERE子句
C) 使用HAVING子句的同时可以使用WHERE子句
D) 使用HAVING子句的作用是限定分组的条件
12、已知关系: 厂商(厂商号,厂名) PK=厂商号
产品(产品号,颜色,厂商号) PK=产品号,FK=厂商号
表如下:
厂商 产品
厂商号厂名
C01宏达
C02立仁
C03广源
产品号颜色厂商号
P01红C01
P02黄C03
若再往产品表中插入如下记录:
I(P03,红,C02) II(P01,蓝,C01)
III(P04,白,C04) IV(P05,黑,null)
能够插入的记录是。(选择1项)
A) I,II,IV
B ) I,III
C ) I,II
D ) I,IV
13、要删除表userInfo中的所有记录,用以下的哪两个命令?(选择2项)
A) DROP TABLE userInfo
B) TRUNCATE TABLE userInfo
C) DELETE FROM userInfo
D) DROP FROM userInfo
14、Delete 语句是_____语句?(选择1项)
A) DQL
B) DML
C) DDL
D) DCL
15、SQL语句中,可以使用( )语句一次插入( )条记录,如果想要一次插入多条记录,必须在语句中使用( )语句。
A、Insert,一,Select B、Insert,二,Update
C、Update,一,Insert D、Delete,三,Select
16、在数据库pubs的表authors中查找以 ean 结尾的所有 4 个字母的作者所在的行。
请选择以下正确的语句:(选择1项)
A) SELECT * FROM authors WHERE au_fname LIKE '_ean'
B) SELECT * FROM authors WHERE au_fname LIKE '%ean'
C) SELECT * FROM authors WHERE au_fname LIKE '[_ean]'
E) SELECT * FROM authors WHERE au_fname LIKE '[%]ean'
17 你是一名电子商务网站的数据库开发人员。你正在建立一个数据库来存储网站的订单信息。这些信息从一个client/server应用程序的client端被输入,每输入一条新订单,就会产生一个唯一的订单号(OrderNumber),并且订单号是以递增的顺序产生的。每天的订单数量大概在10,000条左右。
你建立了一个新表Orders并且向其中加入了一个字段OrderNumber。下一步你该做什么?
A 将OrderNumber的数据类型设置为uniqueidentifier。
B 将OrderNumber的数据类型设置为int,并为其设置IDENTITY属性。
C 将OrderNumber的数据类型设置为int,然后建立一个用户定义的sql语句来找出表中最大的订单号。
D 将OrderNumber的数据类型设置为int。然后建立一个新表NextKey,向其中加入NextOrder(下一张订单)字段, 将NextOrder的数据类型设置为int。建立一个存储过程来获得或更新表NextKey中的值。
18、以下那些是系统数据库:
A SQL Server
B tempdb
C systemdb
D model
19、检索序列号(Prono)为空的所有记录( )。
A、 select * from Tab_ProInfor where Prono = ‘’;
B、 select * from Tab_ProInfor where Prono = 0;
C、 select * from Tab_ProInfor where Prono is null;
D、select * from Tab_ProInfor where Prono = ‘0’
20 charindex(‘hy’,’huayuguoji’)返回的结果为
A 0
B 1
C 4
D -1
二 sql语句测试提交sql语句
、学校图书馆借书信息管理系统建立三个表:
学生信息表:student
字段名称数据类型说明
stuIDchar(10)学生编号,主键
stuNameVarchar(10)学生名称
majorVarchar(50)专业
图书表:book
字段名称数据类型说明
BIDchar(10)图书编号,主键
titlechar(50)书名
authorchar(20)作者
借书信息表:borrow
字段名称数据类型说明
borrowIDchar(10)借书编号,主键
stuIDchar(10)学生编号,外键
BIDchar(10)图书编号,外键
T_timedatetime借书日期
B_timedatetime还书日期
完成以下题目 (利用企业管理器 创建数据库 数据表 增加约束 该步骤略)
1) 利用sql语句录入测试数据 测试数据见下图(为节省时间只提交每个表录入数据的第一条sql语句 即本题共需要提交三条sql语句) (该题6分)
2) 查询“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、学生名称、图书编号、图书名称、借出日期;参考查询结果如下图所示:(该题6分)
select st.stuid,stuname,bk.bid,title,t_time from student st,book bk,borrow br
where st.stuid=br.stuid and br.bid=bk.bid
and t_time>='2007-12-15' and t_time<='2008-1-8' and major='计算机'
3) 查询所有借过图书的学生编号、学生名称、专业;参考查询结果如下图所示:(该题6分)
select stuid,stuname,major from student where stuid in (select stuid from borrow)
4) 查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日期、归还日期;参考查询结果如下图所示:(该题6分)
select stuname,title,t_time,b_time from book bk,student st,borrow br
where st.stuid=br.stuid and br.bid=bk.bid and author='安意如'
5) 查询目前借书但未归还图书的学生名称及未还图书数量;参考查询结果如下图所示:(该题6分)
select stuname, count(*) from student st,borrow br where st.stuid=br.stuid and b_time is null group by st.stuid,stuname
6) 利用sql语句删除已经还书的的信息(该题5分)
delete from borrow where B_time is not null
7) 利用sql语句把五月的专业更改为”数学应用” (该题5分)
update student set major='数学应用' where stuname='五月'
三sql语句测试
根据以下对表的描述要求完成SQL语句:
选课表(Register)部门表(dept)
列名R_IDC_IDS_IDT_IDR_DateR_scoreD_IDD_Name
类型varcharvarcharVarcharvarchardatetimenumeric(5,2)varcharvarchar
意义选课编号课程编号学生编号教师编号选课时间成绩部门编号部门名
教师表(Teacher)学生表(Student)课程表(Course)
列名T_IDT_NameD_IDT_MailS_IDS_NameS_MailC_IDC_NameC_Comment
类型varcharvarcharVarcharvarcharvarcharvarcharvarcharvarcharvarcharvarchar
意义教师编号教师姓名部门号教师邮箱学生编号学生姓名学生邮箱课程编号课程名课程描述
根据上面表的定义,写出创建教师(teacher)和部门表(dept)的SQL语句,要求:TID定义为主键,DID定义为外键。
Create table dept
(
did varchar(15) primary key,
Dname varchar(15)
)
Create table teacher
(tid varchar(15) primary key,
tname varchar(15),
did varchar(15) references dept(did),
,tmail varchar(15)
)
向选课表添加一行数据:
选课编号课程编号学生编号教师编号选课时间成绩
HYR0001HYC001HYS001HYT0012008/6/12 76
Insert into Register
Values(‘HYR0001’,’HYC001’,’HYS001’,’HYT001’,’2008/6/12’,76)
把所有HYD01部门的老师的邮箱添加前缀“Mailto”。
Update teacher set tmail=’Mailto’+tmail where did=’HYD01’
列出所有教师的姓名和部门名
Select t.tname,d.dname from
Teacher t join dept d
On t.did=d.did
列出每个学生的姓名和其平均成绩
Select s.sname,avg(r.rscore)
From student s join register r
On s.sid=r.sid
Group by s.sname
列出没有带课的老师的名字
Select tname from teacher
Where tid not in
(select tid from register)
列出教学成绩最好(老师的各科总平均成绩高)的老师的名字
Select tname from teacher
Where tid = (Select top 1 tid from register group by tid order by avg(R_score) desc)
列出所有学生姓名,授课教师姓名,课程名称,选课时间,成绩,并包含没有参加选课的学生姓名。
Select s.sname,t.tname,c.cname,r.rdate,r.rscore
From register r
Join teacher t on t.tid=r.tid
Join course c on r.cid=c.cid
Right outer Join student s on r.sid=r.sid (注意sname,tanme,cname属于哪个表别忘了加上)
列出高于学科平均成绩的学生编号和其成绩
Select sid,rscore
from register outers
where rscore>
(select avg(rscore) from register inners where inners.cid=outers.cid)
10 删除姓张的学员信息
delete from student where S_Name like ‘张%’