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) F)
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=厂商号
A、join C、into
B、union D、and
表如下:
厂商 产品
厂商号 C01 C02 C03 厂名 宏达
立仁 产品号 P01 P02 广源 颜色 红 黄 厂商号 C01 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 'ên' 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
字段名称 stuID stuName major 图书表:book
字段名称 BID title author 借书信息表:borrow
字段名称 borrowID stuID BID char(10) char(10) char(10) 数据类型 说明 借书编号,主键 学生编号,外键 图书编号,外键 char(10) char(50) char(20) 数据类型 说明 图书编号,主键 书名 作者 char(10) Varchar(10) Varchar(50) 数据类型 说明 学生编号,主键 学生名称 专业 T_time B_time datetime datetime 借书日期 还书日期 完成以下题目 (利用企业管理器 创建数据库 数据表 增加约束 该步骤略)
1) 利用sql语句录入测试数据 测试数据见下图(为节省时间只提交每个表录入数据的
第一条sql语句 即本题共需要提交三条sql语句) (该题6分) Book表
Borrow表
Student表
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)
C_ID
S_ID
T_ID
R_Date
R_score
部门表(depD_ID
列名 R_ID D_N
类型 varchar varchar Varchar varchar datetime numeric(5,2) varchar var
意义 选课编课程编学生编教师编选课时成绩
号
号
号
号
间
学生表(Student)
T_Mail S_ID
S_Name varchar
部门编部门号
教师表(Teacher)
T_Name D_ID
课程
列名 T_ID S_Mail C_I
类型 varchar varchar Varchar varchar varchar varchar var学生邮课箱
意义 教师编教师姓部门号 教师邮学生编学生姓名
号
1、
名
箱
号
号
根据上面表的定义,写出创建教师(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) )
2、 向选课表添加一行数据:
选课编号 课程编号 学生编号 教师编号 选课时间 成绩 HYR0001 HYC001 HYS001 HYT001 2008/6/12 76 Insert into Register Values(‘HYR0001’,’HYC001’,’HYS001’,’HYT001’,’2008/6/12’,76)
3、 4、
把所有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
5、 列出每个学生的姓名和其平均成绩
Select s.sname,avg(r.rscore) From student s join register r On s.sid=r.sid Group by s.sname
6、 列出没有带课的老师的名字
Select tname from teacher Where tid not in
(select tid from register)
7、 列出教学成绩最好(老师的各科总平均成绩高)的老师的名字
Select tname from teacher
Where tid = (Select top 1 tid from register group by tid order by avg(R_score) desc)
8、 列出所有学生姓名,授课教师姓名,课程名称,选课时间,成
绩,并包含没有参加选课的学生姓名。
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属于哪个表别忘了加上)
9、 列出高于学科平均成绩的学生编号和其成绩
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 ?张%?