T-SQL考试题
Posted 专治八阿哥的孟老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了T-SQL考试题相关的知识,希望对你有一定的参考价值。
-
SQL Server中,下面的映射关系属于“多对多”的是( )。A
A:某大学生物系的教师——某大学生物系的学生
B:储户——银行卡
C:孩子——父亲
D:以上都不是 -
在SQL Server中,当删除数据库中的某张表的数据时,使用的T-SQL关键字为( )。C
A:ALTER
B:REMOVE
C:DELETE
D:DROP -
在SQL Server中,以下对事务的理解正确的是( )。A
A:事务是一个不可分割的工作逻辑单元
B:事务具有原子性、完整性、隔离性、强制性四个特性
C:事务必须用begin开始,用end结束
D:所有的事务都是自动提交的 -
在SQL Server中,查看某个数据库对象的信息的系统存储过程是( )。B
A:sp_helpindex
B:sp_help
C:sp_helptext
D:sp_stored_procedures -
在SQL Server中,关于视图的说法不正确的是( )。D
A:视图是一种虚拟表,通常是作为执行查询的结果而创建的
B:使用CREATE VIEW语句创建视图
C:使用SELECT语句查看视图的查询结果
D:定义视图的查询可以基于一个或多个表,但不可以基于其他视图 -
在SQL Server中,下面关于局部变量声明和赋值的语句错误的是( )。AD
A:
@x Int
select @x=10
B:
declare @x int
select @x=10
C:
declare @@x int
set @@x=10
D:
@@x int
set @@x=10
- 在SQL Server中,使用( )语句可以删除数据库中学生表(Student)里名称为DF_stuSex的约束。B
A:ALTER TABLE Student DELETE CONSTRAINT DF_stuSex
B:ALTER TABLE Student DROP CONSTRAINT DF_stuSex
C:DROP DF_stuSex for Student
D:DELETE Student for DF_stuSex
-
在SQL Server中,用于提交事务的语句是( )。C
A:BEGIN TRANSACTION
B:SAVE TRANSACTION
C:COMMIT TRANSACTION
D:ROLLBACK TRANSACTION -
在SQL Server中,关于存储过程的说法不正确的是( )。D
A:存储过程一般分为系统存储过程、扩展存储过程和用户自定义存储过程
B:存储过程是在数据库管理系统中保存的、预先编译的并能实现某种功能的SQL程序
C:存储过程帮助实现了模块化编程
D:用户在创建自定义存储过程后不能再被修改 -
在SQL Server中,下列可以正确执行的语句是( )。C
A:
declare @n decimal(5,2),@m varchar(20)
go
set @n=99.995
set @m='n 的值为'
print @m+@n
go
B:
declare @n decimal(5,2),@m varchar(20)
go
set @n=99.995
set @m='n 的值为'
print @m+str(@n)
go
C:
declare @n decimal(5,2),@m varchar(20)
set @n=99.995
set @m='n 的值为'
print @m+str(@n)
go
D:
declare @n decimal(5,2)
declare @m varchar(20)
set @n=99.995
set @m='n 的值为'
print @m+@n
go
-
在SQL Server中,索引是在基本表的列上建立的一种数据库对象,它同基本表分开存储,使用它能够加快数据的( )速度。C
A:插入
B:修改
C:查询
D:删除 -
在SQL Server中,关于变量描述,不正确的是( )。C
A:变量可分为全局变量和局部变量两大类
B:全局变量是由系统提供且预先声明,通过在名称前加两个“@”符号区别于局部变量
C:不能使用SELECT语句给变量赋值
D:可使用DECLARE语句声明局部变量 -
在SQL Server中,运行以下T-SQL语句,输出的结果是( )。D
CREATE PROC usp_selectStu
@stuNo varchar(8)=NULL
AS
IF @stuNo IS NULL
Begin
Print '请输入学号'
RETURN
End
SELECT * FROM stuInfo WHERE stuNo=@stuNo
GO
EXEC usp_selectStu
A:编译错误
B:调用存储过程usp_ selectStu出错
C:显示空的学员信息记录集
D:显示“请输入学号”
-
在SQL Server中,调用存储过程的说法错误的是( )。C
A:带输出参数的存储过程调用时,在变量后跟随OUTPUT关键字
B:存储过程可以用exec调用
C:只有系统存储过程必须用exec调用,自定义存储过程则不必
D:带参数的存储过程,参数类型为输入参数和输出参数 -
在SQL Server中,Result表保存了100个学生的成绩信息,以下T-SQL代码,说法正确的是( )。C
SELECT * FROM Student WHERE studentNo =(SELECT StudentNo FROM Result)
A:此代码正确的查询出所有参加考试的学生的信息
B:此代码中将“=”换作“>=”更合理
C:此代码中将“=”换作“IN”更合理
D:此代码正确的查询出参加考试的第一条学生的信息 -
关于SQL Server的表联接和子查询,以下说法错误的是( )。CD
A:当查询结果来自多张表的时候,优先使用表联接
B:当查询的条件依赖另外的表时,优先使用子查询
C:查询语句如果使用了表联接,就不能再配合使用子查询
D:表联接和子查询不能相互替换 -
在SQL Server数据库中,关于事务日志文件说法正确的是( )。C
A:SQL Server数据库可以有事务日志文件,也可以没有
B:事务日志文件记录所有的数据和操作
C:事务日志文件记录所有事务以及每个事务对数据库所做的修改
D:事务日志文件是一个表 -
在SQL Server中,已经存在Students表,其中包括“学号”和“分数”两列,执行以下代码,正确的查询结果是( )。B
delete from students
insert into students values ('s117501',90)
if not exists (select * from students where 学号='s117502')
begin
select '没有找到!'
return
end
select '已经找到!'
return
A:没有找到!
已经找到!
B:没有找到!
C:已经找到!
D:null
-
在SQL Server中,关于子查询描述错误的是( )。B
A:相对于表连接,子查询更适合于作为查询的筛选条件
B:使用EXISTS关键字引入一个子查询,子查询产生查询结果集
C:使用IN子查询返回的查询结果是一列零值或更多值。子查询返回结果后,外部查询可以使用这些查询结果
D:子查询可由一个比较运算符引入。比较运算符可以是=、<>、>、<、>=、<=等 -
以下T-SQL代码,说法不正确的是( )。CD
SELECT 学号 = StudentNo, 成绩 =
CASE
WHEN StudentResult < 60 THEN 'E'
WHEN StudentResult BETWEEN 60 AND 69 THEN 'D'
WHEN StudentResult BETWEEN 70 AND 79 THEN 'C'
WHEN StudentResult BETWEEN 80 AND 89 THEN 'B'
WHEN ELSE 'A'
FROM Result
A:ELSE前面不用写WHEN
B:缺少END关键字
C:在每一个WHEN的条件表达式后面缺少逗号
D:缺少break关键字
-
在SQL Server中,以下用于更改数据库名称的存储过程是( )。C
A:sp_renamedatabase
B:sp_alterdb
C:sp_renamedb
D:sp_helpdb -
在数据库设计中,分析客户的业务和数据处理需求属于( )阶段的内容。A
A:需求分析
B:概要设计
C:详细设计
D:运行测试 -
在SQL Server中,当查询某种型号的手机的详细信息时,下划线处应填写( )。
SELECT * FROM mobilePhone WHERE phoneNo ___ (此处为返回多个phoneNo的SQL语句)A
A:IN
B:LIKE
C:=
D:>= -
关于SQL Server中的事务,以下说法错误的是( )。C
A:事务中的所有元素必须作为一个整体提交或回滚
B:对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务
C:SQL Server中不能使用事务日志保存受到故障影响的事务
D:当事务成功完成时,数据必须再次回到已知的一致状态 -
在SQL Server中,下面的( )语句是正确的。C
A:
CREATE VIEW view1
AS
SELECT * INTO #S1 FROM DEPT
GO
B:
CREATE VIEW view1
AS
SELECT * FROM DEPT ORDER BY DEPTID
GO
C:
CREATE VIEW view1
AS
SELECT TOP 5 * FROM DEPT ORDER BY DEPTID
GO
D:
CREATE VIEW view1
AS
DECLARE did int
SET @did=10
SELECT * FROM DEPT WHERE DEPTID =@did
GO
-
在SQL Server中,以下关于视图描述错误的是( )。BD
A:定义视图的查询可以基于一个或多个表
B:定义视图的查询不可以基于其它视图
C:视图通常在查询数据时使用
D:视图一旦被删除,视图中的数据也同时被删除 -
关于SQL Server的索引,以下说法错误的是( )。BD
A:学生表中性别字段仅有“男”、“女”两种取值,不建议仅对该列创建索引
B:索引不仅能提高查询的效率,还能提高增删改语句的运行速度
C:一个表最多只能有一个聚集索引
D:索引不会占用资源,所以为了提高查询的效率,往往会对表的每个列都建立索引 -
在SQL Server中,下面选项可以正确实现对变量赋值的是( )。AD
A:
declare @name char(10)
set @name='小强'
B:
declare @age int(4)
select @age=18
C:
declare @sex bit
set @sex=0
D:
declare @money money(4)
set @money=4
- 在SQL Server中,有一个Customer表,字段creditLimt表示信用额度,字段verified表示是否通过身份验证。需要确保表里的数据满足下列需求:未通过身份验证的客户的信用额度必须为0;通过身份验证的客户信用额度必须少于10000。应该使用( )约束。B
A:Check(creditLimt=0 and verified=0) AND (creditLimt between 0 and 10000 and verified=1)
B:Check(creditLimt=0 and verified=0) OR (creditLimt between 0 and 10000 and verified=1)
C:Check(creditLimt=0 or verified=0) AND (creditLimt between 0 and 10000 or verified=1)
D:Check(creditLimt=0 or verified=0) or (creditLimt between 0 and 10000 or verified=1)
- 在SQL Server中,书目表(titles)包含书籍标题(title)、预付款(advance)和书籍类型(type)等字段。要求查询预付款大于商业类书籍平均预付款的书籍标题,下列选项正确的是( )。B
A:
SELECT title
FROM titles
WHERE advance>
(SELECT advance
FROM titles
WHERE type='business')
B:
SELECT title
FROM titles
WHERE advance>
(SELECT avg(advance)
FROM titles
WHERE type='business')
C:
SELECT title
FROM titles
WHERE advance>=
(SELECT avg(advance)
FROM titles
WHERE type='business')
D:
SELECT title
FROM titles
WHERE advance> avg(advance)
AND type='business'
-
在SQL Server中,若实体A和B是多对多的关系,实体B和C是1对1的关系,则实体A和C是( )。D
A:一对一
B:一对多
C:多对一
D:多对多 -
在SQL Server的Orders表中,需要删除所有不活动的订单记录。现在需要开发一个存储过程来删除这些行,代码如下。
DECLARE @rowcount INT
DELETE FROM Orders
WHERE status='inactive'
SET @rowcount=@@ROWCOUNT
IF (@rowcount=0)
BEGIN
_____________________
END
PRINT '共删除'+CONVERT(varchar(20),@rowcount )+'行'
GO
横线处应填入的代码是( )。C
A:PRINT (‘没有删除的数据!’,16,1)
B:RAISERROR(‘没有删除的数据!’,16,1)
C:RAISERROR(‘没有删除的数据!’,16,1)
RETURN
D:PRINT (‘没有删除的数据!’,16,1)
RETURN
-
在T-SQL中使用if…else语句时,条件表达式不能是()。CD
A:1>0
B:exists(select * from 学生表)
C:true
D:false -
在SQL Server中,关于数据库设计三范式的描述,正确的是( )。AB
A:数据库的设计范式有助于减少数据冗余
B:数据库如果满足第三范式,则肯定满足第二范式
C:设计数据库必须严格遵守设计三范式
D:满足范式的级别越高,系统性能就越好 -
在SQL Server中,使用T-SQL语句创建一个外键约束的步骤是( )。C
A:创建主键表和外键表–>在外键表添加外键约束–>向主键表添加主键约束
B:创建主键表和外键表–>在外键表添加主键约束–>向主键表添加外键约束
C:创建主键表和外键表–>在主键表添加主键约束–>向外键表添加外键约束
D:创建主键表和外键表–>在主键表添加主键约束–>向主键表添加外键约束 -
在T-SQL中给变量赋值可以用( )。B
A:给局部变量赋值用set,给全局变量赋值用select
B:给局部变量赋值用set或select,不能给全局变量赋值
C:给局部变量赋值用select,给全局变量赋值用set
D:给局部变量赋值用set或select,给全局变量赋值用系统存储过程sp_setvalue -
在SQL Server中,调用以下存储过程语句正确的是( )。AC
create proc sp_getscore
@examNo int=3201,
@score int output
as
select @score=score from stuScore where exmaNo=@examNo
go
A:declare @score int
exec sp_getscore 3202, @score output
B:declare @score int
exec sp_getscore @score output
C:declare @score int
exec sp_getscore default, @score output
D:declare @score int
exec sp_getscore, @score
- 在SQL Server中,创建数据库应使用( A)语句。
A:CREATE DATABASE 数据库名
B:DROP DATABASE 数据库名
C:ALTER DATABASE 数据库名
D:NEW DATABASE 数据库名 - 关于SQL Server中的视图,以下说法错误的是(C)。
A:视图是一种虚拟的表,通常是作为执行查询的结果而创建的
B:视图充当着对查询中指定的表的筛选器
C:更改视图中的数据,原始表中的数据不会随之更改
D:视图的结构和数据是建立在对表的查询基础上的 - 在SQL Server中,对于使用索引的描述正确的是(C)。
A:一个表只能创建一个非聚集索引,但可以有多个聚集索引
B:创建了唯一约束,要立刻手动创建唯一索引
C:在聚集索引中,表中各行的物理顺序与键值的逻辑顺序相同
D:创建索引时,可以将多个列组合作为索引,这种索引称为全文索引 - 在SQL Server中,以下关于常用的系统存储过程的说法正确的是(AC)。
A:sp_databases用于列出数据库服务器中的所有数据库信息
B:sp_helpconstraint用于查看某个表的索引
C:sp_stored_procedures用于显示存储过程的列表
D:sp_tables用于查看系统中存在的表的个数 - 下面关于T-SQL中存储过程的说法正确的是()。C
A:所有存储过程都有参数
B:存储过程用break返回运算结果
C:存储过程用输出参数返回运算结果
D:没有输出参数的存储过程,调用时可以不必使用exec关键字 - 在SQL Server中, 分数值范围规定如下:
成绩<60分:C
60<=成绩<80分:B
80<=成绩<=100:A
根据分数值范围,正确输出结果的是(C)。
A:
select 学号,成绩,等级=
case
when 成绩<=100 then 'A'
when 成绩<80 then 'B'
when 成绩<60 then 'C'
else '成绩输入有误!'
end
from students
go
B:
select 学号,成绩,等级=
case
when 成绩<=100 then 'A'
when 成绩<80 then 'B'
when 成绩<60 then 'C'
else '成绩输入有误!'
end case
from students
go
C:
select 学号,成绩,等级=
case
when 成绩<60 then 'C'
when 成绩<80 then 'B'
when 成绩<=100 then 'A'
else '成绩输入有误!'
end
from students
go
D:
select 学号,成绩,等级=
case
when 成绩< 60 then 'A'
when 成绩<80 then 'B'
when 成绩<=100 then 'C'
else '成绩输入有误!'
end case
from students
go
使用 T-SQL 如何计算考试成绩百分比?
【中文标题】使用 T-SQL 如何计算考试成绩百分比?【英文标题】:Using T-SQL how do you calculate a test grade percentage? 【发布时间】:2010-09-28 15:05:10 【问题描述】:这应该是一个简单的任务,或者是一个简单的谷歌搜索,我都没有找到。我试图简单地计算成绩百分比。我正在尝试使用:
Select round((133 / 150), 2) * 100
结果为 0。我试图计算得到 89% 的分数。我尝试了多种组合,我开始认为使用 t-sql 太复杂或者不可能。我错过了什么?
【问题讨论】:
【参考方案1】:试试这个:
Select round((cast(133 as numeric(20,8))/ cast(150 as numeric(20,8))) * 100, 2)
当您需要十进制值时,您在示例中使用整数。请参阅here 了解更多信息。
【讨论】:
【参考方案2】:试试:
Select round(133.0 / 150) * 100
int
除以int
是int
,并且 1 / 2 = 0(整数截断)
更一般地说,如果您确保分子是浮点数(实数/十进制):
Select round(CAST(integervalue as real) / 150) * 100
【讨论】:
以上是关于T-SQL考试题的主要内容,如果未能解决你的问题,请参考以下文章