1、试题Sql Advance 120题带答案SQL Server 数据库管理和高级查询试题库 答案仅作参考选择题(120题)1. 下列哪个SQL 语句属于DDL 语句( )。A. CreateB. SelectC. GrantD. Insert注释:DDL(数据定义语句): Data Definition Language2. SQL Server 2008 的BEGIN TRANS 和COMMIT TRANS,ROOLBACK TRANS 语句可用在( )中来支持操作的事务特性。A. Select 语句B. 存储过程C. ADO.NET 连接对象的Transaction 属性D. 触发器3.
2、在SQL Server2008数据库中,从Product表中查询出Price(价格)高于Pname (产品名称)为“网通IP电话卡”的所有记录中的最高价格的查询语句是( )。A. SELECT * FROM Product WHERE max(Price)网通IP电话卡B. SELECT * FROM Product WHERE Price(SELECT max(*)FROM Product WHERE Pname= 网通IP电话卡)C. SELECT * FROM Product WHERE EXISTS Pname=网通IP电话卡D. SELECT * FROM Product WHERE
3、 Price(SELECT max(Price)FROM Product WHERE Pname= 网通IP电话卡)4. 在SQL Server 2008中,声明一个最多可以存储10个字符的变量pwd,正确的代码是( )。A. DECLARE pwd VARCHAR(10)B. DECLARE pwd VACHAR(10)C. pwd VARCHAR(10)D. pwd VARCHAR(10)5. 在SQL Server 2008中,已知Student表中有一个age列,数据类型是int,如果要限制该列的取值范围在18到28之间,可以使用以下哪个SQL语句( )。A. alter table
4、Student add check(age=18 and age=18 and age=18 and age=18 and age=28)6. SQL Server 2008数据库中,创建books表的语句如下,这个创建命令执行时出错,错误原因有( )。 Cerate table books(bookid int primary key,title varchar(20) not null,author char not null,loc int identity(1,1),depid int foreign key,comment text(1000)A. 定义主键的方式错误B. 必须对Ch
5、ar数据类型指定列宽度C. 定义外键的方式错误D. 定义外键列不能定义为标识列E. 不能对text数据类型指定列宽度7. 在SQL Server 2008中,创建存储过程如下:要在Students表中查找Age(年龄)是18岁的学生,( )可以正确的调用这个存储过程。 CREATE PROCEDURE MyP1 p Int As SELECT Studentname,Age FROM Student WHERE Age=pA. EXEC Myp1 18B. EXEC Myp1 p=18C. EXEC Myp1 p=18D. EXEC Myp1 p=188. 在SQLServer2008中,假设
6、Orders表中存在自动编号字段oid等于1的记录,执行下面T-SQL,以下说法正确的是( )。BEGIN TRANSACTIONDelete from Orders where oid=1If(Error0) ROLLBACK TRANSACTIONElse COMMIT TRANSACTIONA. 执行成功,oid为1的记录被永久删除B. 执行成功,Orders表没有任何变化C. 执行时出现错误D. 执行成功,但事务处理并没有任何结束9. 在SQLServer 2008中,给定如下的T-SQL代码,以下说法正确的是( )。Create Procedure price_proc(count
7、int output,avg_price money output,type char(12)=business)asSelect Count=Count(*),avg_price=Avg(price) from titles where type=typeA. 建立了存储过程price_proc,所有参数都是输出参数B. 建立了存储过程price_proc,返回的是用户指定图书种类数量及平均价格C. count=count(*) 也可以用count=count()代替D. 创建存储过程失败,Select语句中使用了聚合函数,因此必须使用Group By进行分组10. 在SQL Server
8、安全管理过程中,以下( )的概念类似于WinNT 中的用户组。A. 权限 B. 登录账户 C. 角色 D. 触发器11. 在sql server2008中,与以下T-SQL等效的是( )。 Update titles set price = price * 1.05 where pub_id in (select pub_id from publishers)A. Update titles set price = price * 1.05 where exists (select pub_id from publishers)B. Update titles set price = pric
9、e * 1.05 from titles where pub_id in publishers.pub_idC. Update titles set price = price * 1.05 where titles.pub_id =publishers.pub_idD. Update titles set price = price * 1.05 from titles inner join publishers on titles.pub_id= publishers.pub_id12. Sqlserver 2008 中,已知执行语句:Select count(score),sun(sco
10、re)from score 返回的结果是5和750,那么执行语句:Select avg(score) from score,返回的结果是( )。A. 5B. 150C. 1500D. 750注释:count()获得数据的总数量,sun()获取某个字段的总和,avg()获取某个字段的平均值13. 在Sql Server 2008数据库中,使用TSQL编程时,下列( )语句可以从WHILE语句块中退出。A. CONTINUEB. EXITC. BREAKD. RETURN14. 在SQL Server 2008数据库中运行以下T-SQL语句,将输出( )。 CREATE TABLE My_Tabl
11、e (a int NULL,b int NULL) GO CREATE TRIGGER my_trig ON My_Table FOR INSERT AS IF UPDATE(b) PRINT 更新 GO INSERT My_Table values(3,4) GO UPDATE My_Table SET a=5 WHERE b=4 GOA. 更新时间B. 更新C. 不打印任何信息D. 以上代码将出现运行错误而中断注释: TRIGGER 触发器15. 在SQL Servet 2008中,执行以下的T-SQL,若能找到title_id为“tc2”的记录,将( )。 begin transacit
12、on if exists(select title_id from titles where title_id=tc2) begin delete titles where title_id=tc2 rollback transaction printOK endA. 删除该记录行,不打印任何信息B. 不删除该记录行,并且打印OKC. 删除该记录行,并且打印OKD. 不删除该记录行,也不打印任何信息16. 在SQL Server 2008中,有Products(产品)表,包含字段Pname(产品名称)、Price(价格)。若要得到最贵产品的产品名称和产品价格,应该使用的查询语句有( )。A.
13、SELECT TOP 1 Pname,Price FROM Products ORDER BY PriceB. SELECT Pname,MAX(Price) FROM ProductsC. SELECT Pname,MAX(Price) FROM Products GROUP BY PnameD. SELECT Pname,Price FROM Products WHERE Price = (SELECT MAX(Price) FROM Products)17. 在SQL Server2008中,分析下面的存储过程,执行后的结果是( )。CREATE Procedure lookup(a i
14、nt)ASIF a is nullBeginPrint 缺少参数RETURNEndSelect * from sysobjects where id=aRETURNGoEXECUTE lookupA. 该存储过程会打印“缺少参数”B. 该存储过程会基于无参数情况做一个查找,返回表中的所有行C. 该存储过程有语法错误D. 数据库服务器会打印一条消息,提示该存储过程需要提供一个参数 18. Sql Server2008中已知有表,表中共有10条status列值为0的记录,创建视图:CREATE VIEW view1ASselect * from student where status=0视图创建
15、成功后,执行如下命令:Update view1 set status=1Select * from view1命令执行的结果是( )。A. 错误提示:不能对视图执行更新操作B. 错误提示:不能对视图执行查询操作C. 返回10条记录D. 返回0条记录19. Sql Server2008中,创建触发器的语句如下:Create trigger trig_score on score for insert as declare sid int,score float select sid=sid,score=score from inserted update student set score=sc
16、ore+score where sid=sid Go其中score表通过sid列与student表建立了外键约束,假定数据库中的数据具备完整性,创建触发器成功后执行语句,insert into score(aid,score)values(2,20),执行后的结果是( )。A. score表中插入一条数据,student表中更新一条数据B. score表中插入一条数据,student表中插入一条数据C. score表中插入一条数据,student表中没有变化D. 提示错误:没有inserted这张表20. 为表userinfo添加约束,语法如下:alter table userinfo add
17、 constraint uq_userid unique(userid)执行成功后,为userinfo表的( )字段添加了( )约束。A. Userid ; 主键B. Userid ; 唯一C. Uq_userid ;外键D. Uq_userid ;检查21. 运行如下T-SQL,结果返回包含( )的记录集。create table scores(scoreid int identity(1,2),score numeric(4,2) not null,courseid int)insert into scores values(90.5, null)insert into scores va
18、lues(100, 2)select * from scores A. 1、90.5、null3、100、2B. 1、100、2lC. 1、90.50、nullD. 1、90.5、null3、100.0、222. 关于子查询,以下说法正确的是( )。A. 一般来说,联接查询都可以用子查询替换B. 一般来说,子查询都可以用联接查询替换C. 相对于联接查询,子查询适合作为查询的筛选条件D. 相对于联接查询,子查询适合查看多表的数据23. 创建存储过程如下:CREATE procedure bookproc (id int, title char(20) OUTPUT) ASselect title
19、=title from book where id= id执行该存储过程的方法正确的是( )。A. exec bookproc 1,title outputprint titleB. exec bookproc id =1,title outputprint titleC. declare title char(20)exec bookproc 1,title outputprint titleD. declare title char(20)exec bookproc id =1,title outputprint title24. 假设需要设计一个表,记录各个作者著作的所有图书信息,表结构
20、设计如下:作者(作者名称、图书1、版本1、书价1、图书2、版本2、书价2、),该表最高符合第( )范式。A. 1NF B. 2NFC. 3NF D. 未规范化的注释:1第一范式(确保每列保持原子性)2第二范式(确保表中的每列都和主键相关)3第三范式(确保每列都和主键列直接相关,而不是间接相关)25. 一个学生只能就读于一个班级,而一个班级可以同时容纳多个学生,学生与班级之间是( )关系。A. 一对一 B. 一对多C. 多对一 D. 多对多26. E-R图中,关系用( )来表示。A. 矩形 实体型(Entity) B. 椭圆形 属性(Attribute)C. 菱形 关系(Relationship
21、) D. 圆形27. 表结构如下,其中# 号打头字段代表主键或组合主键,一份订单可以订购多种产品。产品:# 产品编号,产品名称,产品价格;订单:# 订单编号,# 产品编号,订购日期,订购数量;该表最高符合第( )范式。A. 1NF B. 2NFC. 3NF D. 未规范化的28. 表结构如下,# 号打头字段代表主键或组合主键,一份订单可以订购多种产品:产品:# 产品编号,产品名称,产品价格;订单:# 订单编号,总价,支付类型编号,订购日期; 订单子项:# 子项编号,订单编号,产品编号,订购数量;该表最高符合第( )范式。A. 1NF B. 2NFC. 3NF D. 未规范化的29. 创建表sq
22、l语句如下:create table userInfo(userId int identity(-1,1), 第一行username nvarchar(20) not null, 第二行cardNO char not null, 第三行age smallint(2), 第四行address ntext(300) 第五行)执行时,会在( )出现错误。A. 第一行B. 第二行C. 第三行D. 第四行E. 第五行30. 以下关于规范设计的描述正确的是( )。A. 规范设计的主要目的是消除数据冗余B. 规范设计往往会增强数据库的性能C. 设计数据库时,规范化程度越高越好D. 在规范化数据库中,易于维护
23、数据完整性31. 关于存储过程,以下说法正确的是( )。A. 不能在存储过程中使用CREATE VIEW命令B. T-SQL批代码的执行速度要快于存储过程C. 存储过程必须带有参数D. 存储过程不能返回结果集32. 下面T-SQL代码运行完的结果是( )。declare counter intset counter=1while counter3begin set counter=counter+1 print counterbreakprint loopend A. 2loopB. 2C. 2loop3loopD. 2333. 阅读下面T-SQL语句,对变量赋值时存在错误的是( )。A. D
24、ECLARE id INT,price MONEYset id=100set price=$2.21B. DECLARE id INT,price MONEYselect id=100,price=2.21C. DECLARE id INT,price MONEYset id=100, price=2.21D. DECLARE id INT,price MONEYselect id=100select price=$2.2134. 已知有student表,studentid为主键,现在表中共有10行记录,studentid列值从1到10创建视图:CREATE VIEW dbo.VIEW_stu
25、dentASSELECT * FROM dbo.student接着执行如下命令:DELETE FROM VIEW_student WHERE (studentid = 8)然后执行查询命令:SELECT * FROM studentSELECT * FROM VIEW_student假定上述命令全部执行成功,将各自返回( )( )行记录。A. 10,10 B. 10,9C. 9,10 D. 9,935. 设计用户表时,身份证号为固定18位,对该字段最好采用( )数据类型。A. int B. charC. varchar D. text36. 授予用户teacher对Score表的插入和修改的权
26、限,正确的授权语句是( )。A. GRANT INSERT,UPDATE TO TABLE Score ON teacherB. GRANT INSERT AND UPDATE TO TABLE Score ON teacherC. GRANT INSERT,UPDATE ON Score TO teacherD. GRANT INSERT AND UPDATE ON Score TO teacher37. 建立如下数据库表:CREATE TABLE department( DeptID int NOT NULL primary key, DeptName varchar (20) NOT N
27、ULL )CREATE TABLE Employee ( EmployeeID int NOT NULL, DeptID int NOT NULL, Name varchar (20) NOT NULL )要想保证Employee表中每一个雇员(Employee)是唯一的,且只能属于在Department表中已经存在的部门,最佳的做法是( )。A. EmployeeID 和DeptID 设为组合主键B. EmployeeID设为主键,同时在DeptID列上创建一个外键约束C. EmployeeID设为主键,同时在DeptID列上创建一个检查约束D. 在DepartmentID列上创建一个唯一约
28、束,同时在DeptID列上创建一个外键约束38. 建立一张员工表(employee),当向表中插入数据时,若不提供入职时间(beginTime),就把系统当前时间自动作为员工入职时间插入数据库中,以下说法正确的是( )。A. 约束中不能使用各种函数,所以只能使用触发器来实现B. 可以使用CHECK约束实现,默认值采用日期函数getDate()C. 入职时间必须设为日期类型D. 可以使用DEFAULT 约束实现,默认值采用日期函数getDate()39. 为了加快对某表的访问速度,应对此表建立( )。A. 约束B. 存储过程C. 规则D. 索引40. 假设有表student的设计如下:ID(学号
29、)Name(姓名)Address(家庭住址)Department(所在系)DepartmentHead(系主任)该表最高满足第( )范式。A. 1NF B. 2NFC. 3NF D. 不满足任何范式41. 为数据库中一个或多个表的数据提供另一种查看方式的逻辑表被称为( )。A. 存储过程 B. 触发器C. 视图 D. 表42. 要建立一张教师表,包含姓名、职称、级别等字段。插入数据时,如果不输入级别字段,缺省值为“讲师”,最合适的实现方法是( )。A. 为 “级别” 字段建立default约束B. 为“级别”字段建立check 约束C. 在教师表上建立一个触发器 (trigger)D. 为教师表插入数据编写一个存储过程进行控制43. 现有订单表orders,包含数据如下表。若查询既订购了产品P01,又订购了产品P02的顾客编号,可以执行以下( )sql语句。 cid (顾客编号) Pid (产品编号)C01 P01C01 P02C02 P01C03 P02A. select distinct(cid) from orders o1 where o1.pid in (p01,p02)B. select distinct(cid) from orders o1 where o1.pid=p01 and o
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1