SQL高级查询试题与答案

1、HAVING字句中应后跟( B )

    A、行条件表达式

    B、分组条件表达式

    C、试图序列

    D、列名序列

2、数据定义语言的缩写词为( A )

    A、DDL

    B、DCL

    C、DML

    D、DBL

3、在SQL语言中,建立存储过程的命令为( A )

    A、CREATE PROCEDURE

    B、CREATE RULE

    C、CREATE DURE

    D、CREATE FILE

4、在SQL中,建立视图的命令为( C )

    A、CREATE SCHEMA

    B、CREATE TABLE

    C、CREATE VIEW 

    D、CREATE INDEX

5、SQL的视图的数据是从( C )中产生的

    A、基本表

    B、视图

    C、基本表或视图

    D、数据库

6、从“产品”表里查询出(价格)高于(产品名为“一次性纸杯”)的产品的记录,此SQL语句为( D )

    A、Select * from 产品 where 价格>’一次性纸杯’

    B、Select * from 产品 where 价格>(select * from 产品 where 产品名称>’一次性纸杯’)

    C、Select * from 产品 where exists (产品名称=’ 一次性纸杯’)

    D、Select * from 产品 where 价格>(select 价格 from 产品 where 产品名称=’一次性纸杯’)

7、假设订单表orders用来存储的订单信息,cid代表客户编号,money代表单次订购额,现要查询每个客户的订购次数和每个客户的订购总金额,下面(D  )sql语句可以返回正确结果。

    A、Select cid,count(distinct(cid)),sum(money) from orders group by cid

    B、Select cid,count(distinct(cid)),sum(money) from orders order by cid

    C、Select cid,count(cid),sum(money) from orders order by cid

    D、Select cid,count(cid),sum(money) from orders group by cid

8、实体关系中学生与任课教师之间具有( D )联系

    A、一对一

    B、一对多

    C、多对一

    D、多对多

9、在SQL中,建立索引用( C )命名

    A、CREATE SCHEMA

    B、CREATE TABLE

    C、CREATE INDEX

    D、CREATE VIEW

10、在 SQL Server 2008中,声明一个最多可以存储10个字符的变量pwd,正确的代码是(B  )

    A、DECLARE pwd VARCHAR(10)

    B、DECLARE @pwd VACHAR(10)

    C、pwd VARCHAR(10)

    D、@pwd VARCHAR(10)

11、E-R图中,关系用下面( C )来表示

    A、矩形

    B、椭圆形

    C、菱形

    D、圆形

12、下面变量中属于T-SQL中用户自定义的变量是( B )

    A、@@error

    B、@number

    C、Abc

    D、num1

13、在数据库中查询数据,一般根据( C )查询速度较快

    A、设置默认值的列

    B、设置为外键的列

    C、设置为主键的列

    D、设置检查约束的列

14、分析下面的代码段,说法错误的是( D )(选择一项)

            1.   CREATE PROCEDURE proc_stuInfo

            2.   @stuName VARCHAR(10),

            3.   @n INT OUTPUT,

            4.   @stuAge=18  INT

            5.    AS

            6.    ….代码略

            7.    GO

            8. 

            9.     DECLARE @s INT

            10.   EXEC proc_stuInfo ‘张三’,@s,30

            11.    EXEC proc_stuInfo @stuAge=22,@stuName=’李四’,@n=@s OUTPUT

    A、此代码段创建了一个存储过程,并测试调用此存储过程

    B、第4行代码有误

    C、第10行代码有误

    D、第11行代码有误

15、关于存储过程,以下说法正确的是( A )

    A、不能在存储过程中使用CREATE VIEW命令

    B、T-SQL批代码的执行速度要快于存储过程

    C、存储过程必须带有参数

    D、存储过程不能返回结果集

16、现有书目表book,包含字段:price(float);现在查询一条书价最高的书目的详细信息,以下语句正确的是( BC )(选两项)

    A、Select top1 * from book order by price asc

    B、Select top1 * from book order by price desc

    C、Select top1 * from book where price=(select max(price) from book)

    D、Select top1 * from book where price=max(price)

17、现有订单表orders,包含数据如下表。若查询既订购了产品p01,又订购了p02的客户编号,可以执行以下( C )sql语句(选一项)

        cid(顾客编号)                    Pid(产品编号)

            C01                                      P01

            C01                                      P02

            C02                                      P01

            C03                                      P02

    A、Select distinct(cid) from orders o1 where o1.pid in (‘’P01,’P02’)

    B、Select distinct(cid) from orders o1 where o1.pid=’P01’ and o1.pid=’P02’

    C、Select distinct(cid) from orders o1 where o1.pid=’P01’ and exists(select * from orders where     pid=’P02’ and cid=o1.cid)

    D、Select distinct(cid) from orders o1,orders o2 where o1.pid=’P01’ and o2.pid=’P02’

18、下面T-SQL代码运行完的结果是( B )

        declare @counter int

        set @counter==1

        while @counter<3

        begin

        set @counter=@counter+1

        print @counter

        break

        print ‘loop’

        end

    A、2  loop

    B、2

    C、2  loop  3  loop

    D、2  3

19、对以下语句描述不正确的是( B )

                create view view_stuInfo

        as

                select stuName,stuNo,stuAddress from stuInfo

        go

    A、创建了一个命名为view_stuInfo的视图

    B、只在一个表上不能创建视图,语法错误

    C、此视图一般为班主任查询学员信息提供参考

    D、可以用 select * from view_stuInfo查询stuInfo表所有学员的三个字段的信息

20、If not exists (select * from stuMarks where writtenExam>60  or labExam>60)

Update stuMarks set writtenExam=writtenExam+3,labExam=labExam+3

以上语句的功能是( D )

    A、如果笔试或机试成绩有一项有人超过60分,则每人的笔试和机试成绩加3分

    B、如果笔试或机试成绩都有人超过60分,则每人的笔试和机试成绩加3分

    C、如果笔试或机试成绩有一项没人超过60分,则每人的笔试和机试成绩加3分

    D、如果笔试或机试成绩没有一人超过60分,则每人的笔试和机试成绩加3分

21、执行下面得到语句输出正确的是(D )。(选择一项)

        create proc MyProc

        @mystuID varchar(8)=null

        As

        If @mystuID is null

        Begin

         print '没有传递任何参数'

         return

        end

        select * from student where stuid=@mystuid

        go

        exec myproc

    A、编译错误

    B、调用存储过程myproc出现错误

    C、显示空的学员信息记录

    D、显示:没有传递任何参数

22、有一经商信息表distributors设计如下:

distri_num(经销商编号)

boss_name(负责人姓名)

company(公司名称)

city_code(所在城市)

address(公司地址)

23、请查询与“负责人为张三的经销商”在同一城市的所有经销商的数据。下面正确的是(A )

    A、select * from distributors where city_code=

{select city_code from distributors where boss_name='张三'}

    B、select * from distributors where boss_name='张三'

    C、select * from distributors where city_code=

{select city_code,boss_name from distributors where boss_name='张三'}

    D、select * from distributors where city_code Exists

{select city_code from distributors where boss_name='张三'}

24、现在如下两张表:

学生信息表

Student(StuID 学生编号StuName 学生姓名,StuAge学生年龄,StuPhone电话号码)

学生成绩表

Score(StuID 学生编号,Subject科目,Marks成绩)

现要求查询比张三JAVA成绩好的学生信息(C )

    A、Select * from student where stuName='张三'

    B、select * from student where stuid in(select stuid from score where [Subject]='java' and marks>(select marks from score where stuname='张三'))

    C、select * from student where stuid in(select stuid from score where [Subject]='java' and marks>(select marks from score where [subject]='java' and stuid=(select stuid from student where  stuname='张三')))

D、select * from student where stuid in(select stuid from score where [Subject]='java' and marks>(select marks from score where stuid=(select stuid from student where  stuname='张三')))

25、从“产品”表里查询出价格高于产品名称为“海天酱油”的产品的记录,此SQL语句为( D)

    A、SELECT * FROM 产品 WHERE 价格>海天酱油

    B、SELECT * FROM 产品 WHERE 价格>(SELECT * FROM 产品 WHERE 产品名称>’海天酱油’)

    C、SELECT * FROM 产品 WHERE EXISTS 产品名称=’海天酱油’);

    D、SELECT * FROM 产品 WHERE 价格>(SELECT 价格 FROM 产品WHERE 产品名称=’海天酱油’)

26、在SQL Server数据库中,你想得到在products表中最贵的产品名称和价格应该使用的正确查询是(AC )

    A、SELECT top 1 productname,Unitprice FROM products order by Uniprice Desc

    B、SELECT productname,MAX(Unitprice ) FROM products

    C、SELECT productname,Unitprice FROM products WHERE Unitprice=(SELECT MAX(Unitprice) FROM products)

    D、SELECT productname,MAX(Unitprice ) FROM products ORDER By productname

27、以ABCDE五级打分来显示笔试成绩

        1         Select 学号=stuNo,成绩=case

        2        when writtenExam<60 then 'E'

        3        when writtenExam between 60 and 69 then 'D'

        4        when writtenExam between 70 and 79 then 'C'

        5        when writtenExam between 80 and 89 then 'B'

        6        else 'A’

        7      end

        8     from stuMarks

下述正确的说法是(A )

    A、没有语法问题,可以正常执行

    B、第一行不能用等号,语法有误

    C、第六行语法有误

    D、第七行‘end’可以不写

28、分析以下代码,说法正确的是(B )。(选择一项)

Select * from stuInfo where stuNo not in (select stuNo from stuMarks where writtemExam !=100)

    A、此语句查询笔试成绩不等于100分的同学所有信息

    B、此语句查询笔试成绩等于100分的学生所有信息

    C、此语句查询所有没有参加考试的学生信息

    D、此语句查询所有参加考试的学生信息

29、select top (1) * from stuInfo where stNo not in(select top (2) stNo from stuInfo)

以上语句的功能是(C )

    A、查询学员信息表的第一条记录

    B、查询学员信息表的第二条记录

    C、查询学员信息表的第三条记录

    D、语法有问题,不能查询到记录

30、在(AD )的列上更适合创建索引。(选择两项)

    A、需要对数据进行排序

    B、具有默认值

    C、频繁更改

    D、频繁搜索

31、数据库中有两张表student(stuid,stuname,stuage),score(stuid,subject,marks).请分析下面哪些查询可查找出参加过考试的学生姓名?(ABD )(选择三项)

    A、Select stuname from student where stuid in(select stuid from score)

    B、Select stuname from student,score where student.stuid=score.stuid

    C、Select stuname from student left outer join score on student.stuid=score.stuid

    D、Select stuname from student where exists (select * from score where student.stuid=score.stuid)

32、关于子查询,以下说法正确的是(AC)。(选择两项)

    A、一般来说,表连接都可以用子查询替换

    B、一般来说,子查询都可以用表连接替换

    C、相对于表连接,子查询适合于作为查询的筛选条件

    D、相对于表连接,子查询适合于查看对表的数据

33、对事务描述错误的是(BD)(选择两项)

    A、一个事务中的所有命令作为一个整体提交或回滚

    B、如果两个并发事务要同时修改同一个表,有可能产生死锁

    C、Sql server默认将每条单独的T-SQl语句视为一个事务

    D、事务必须使用begin transaction来明确指定事务的开始

34、在SQL Server数据库中,以下有关系统存储过程说法正确的是(AB)(选择两项)

    A、储存在Master数据库中

    B、名称以“sp_”开头

    C、名称以“sys_”开头

    D、用来替代用户自定义的存储过程

35、下面的语句执行时不会出现错误的有(BD)(选两项)

    A、SELECT ename,job,sal FROM EMP  WHERE deptno ALL (SELECT deptno FROM dept WHERE dname LIKE ‘A%’);

    B、SELECT ename,job,sal FROM EMP  WHERE deptno =ANY (SELECT deptno FROM dept WHERE dname LIKE ‘A%’);

    C、SELECT ename,job,sal FROM EMP  WHERE deptno ANY (SELECT deptno FROM dept WHERE dname LIKE ‘A%’);

    D、SELECT ename,job,sal FROM EMP  WHERE deptno IN (SELECT deptno FROM dept WHERE dname LIKE ‘A%’);

36、以下哪个数据库实例不属于系统数据库(D)

                tempdb

                master

                model

                msdb

                temp

执行以下语句

        DECLARE @n int

        Set @n=3

        WHILE @n<5

        Begin

        IF @n=4

        Print 1trim(@n)+’的平方数为’+1trim(@n*@n)

        Set @n=@n+1

        End

执行完成后循环次数为(C)

    A、0次

    B、1次

    C、2次

    D、死循环

37、能够将‘java’课的学分赋值给变量的语句是哪一个(C)

    A、select credit into @credit from course where cname=’java’

    B、select credit=@credit from course where cname=’java’

    C、select @credit=credit from course where cname=’java’

    D、select credit from course where cname=’java’ and credit=@credit

38. 在定义存储过程时,下面说法不正确的是(D)

    A、不要以sp_为前缀创建任何存储过程,因为sp_前缀是SQL Server用来命名系统存储过程的

    B、如果定义了默认值,执行存储过程时可以不提供实参

    C、VARYING用于指定作为输出参数支持的结果集,且仅适用于定义cursor输出参数

    D、OUTPUT关键词用于指定参数为输入参数的类型

39. 有如下语句,执行结果为(A)

            Declare @x int

            If @x is null

            Select ‘A’

            If @x=0

            Select ‘B’

            If @x=’  ’

            Select ‘C’

    A、A

    B、B

    C、C

    D、有编译错误

40、查询course表中的前5行,正确的语法是(A)

    A、select top 5 * from course

    B、select top (5) from course

    C、select top 5 from course

    D、select top (5*) from course

41、为变量赋值的写法,错误的是(A)

    A、set @a=3,@b=4

    B、select @a=3,@b=4

    C、set @a=3;set @b=4

    D、select @a=3;select @b=4

42、关于T-SQL语言中的CASE语句,以下说法正确的是(D)

    A、then关键字后面可以使用insert、update和delete语句

    B、then关键字后面可以使用print语句

    C、case关键字后面不能有任何的表达式

    D、case语句中else关键字可以省略

43、要删除一个名为A1的存储过程,应使用命名(B)

    A、delete procedure A1

    B、drop procedure A1

    C、alter procedure A1

    D、execute C procedure A1

44、下面变量中属于T-SQL中用户自定义的变量的是(B)

    A、@@error          B、@number          C、Abc          D、num1

45、下面不属于SQL中事物的特征的是(C)

    A、原子性          B、一致性          C、准确性          D、隔离性

46、学生信息表中有一检查约束,学生年龄必须在0到40之间。以下语句执行后的结果,描述正确的是:(B)。(选择一项)

            begin transaction

            insert into stuInfo(stuName,stuAge) values(‘张三’,200)

            insert into stuInfo(stuName,stuAge) vaues(‘李四’,19)

            if(@@error!=0)

            rollback transaction

            else

            commit transaction

    A、张三的信息未录入,李四的信息录入成功 

    B、张三和李四的信息都未录入成功

    C、张三和李四的信息都录入成功  

    D、张三的信息录入成功,李四的信息未录入

47、if not exists (select * from stuMarke where writtenExam>60 or labExan>60)

Update stuMarke set writtenExam=writtenExam+3,labExam=labExam+3

以上的语句的功能是(D)

    A、如果笔试或机试成绩有一项有人超过60分,则每人的笔试和机试成绩加3分

    B、如果笔试或机试成绩都有人超过60分,则每人的笔试和机试成绩加3分

    C、如果笔试或机试成绩有一项没人超过60分,则每人的笔试和机试成绩加3分

    D、如果笔试或机试成绩没有一人超过60分,则每人的笔试和机试成绩加3分

48. 在数据库中查询数据,一般根据(C)查询速度较快

    A、设置默认值的列 

    B、设置为外键的列 

    C、设置为主键的列 

    D、设置检查约束的列

你可能感兴趣的:(SQL高级查询试题与答案)