笔试题

  1. 下列关于视图的说法错误的是( C )
    A. 视图是从一个或多个基本表导出的表,它是虚表
    B. 某一用户可以定义若干个视图
    C. 视图一经定义就可以和基本表一样被查询,删除和更新
    D. 视图可以用来定义新的视图

解:视图的数据是不能删除的,只能查询

  1. 下列sql语句中哪条语句可为用户zhangsan分配数据库userdb表userinfo的查询和插入数据权限( A )
    A.
    grant select,insert on userdb.userinfo to'zhangsan'@'localhost'

    B.
    grant'zhangsan'@'localhost'to select,insert for userdb.userinfo

    C.
    grant select,insert on userdb.userinfo for'zhangsan'@'localhost'

    D.
    grant'zhangsan'@'localhost'to userdb.userinfo on select,insert

解:格式应该是:grant [权限] on [table] to 'username'@'localhost';
GRANT 权限 ON 数据库名.表名 TO 用户

  1. 若事务T对数据R已经加了X锁,则其他事务对数据R( D )
    A.可以加S锁不能加X锁
    B.不能加S锁可以加X锁
    C.可以加S锁也可以加X锁
    D.不能加任何锁

解:当一个事务欲对某个数据对象操作,可以对该对象加锁,取得对数据的一定控制,同时限制其他事务对该对象进行操作。加了排他锁就不能再加任何锁。

  1. 若事务T对数据对象A加上X(eXclusive)锁,则只允许其他事务对数据对象A加S(Share)锁,而不能加X锁,直到T释放A上的锁。( B )
    A. 正确
    B. 错误

解:
S锁(又称共享锁)
又称读锁,若事务T对数据对象加上S锁,则事务T可以读A但不能修改A,其他事务只能对A加S锁,而不能加X锁,直到T释放A上的S锁,这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改;

X锁(又称排他锁)
又称写锁,若事务T对数据对象A加上X锁,事务T既可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在释放A上的锁之前不能再读取和修改A

  1. SQL语言具有数据定义、数据操纵和数据控制的功能,它的一次查询的结果是一个( A )
    A.表
    B.记录
    C.元组
    D.数据项

解:sql 的查询结果是一张临时表,可供二次查询使用
例如:select xx from (select xx from xxx)

  1. 数据库物理设计完成后,进入数据库实施阶段,下列各项中不属于实施阶段的工作的是( B )。
    A. 建立库结构
    B. 扩充功能
    C. 加载数据
    D. 系统调试

解:按照规范设计,我们将数据库的设计过程分为六个阶段:

  • 系统需求分析阶段
    1:调查分析用户活动;
    2:收集和分析需求数据,确定系统边界信息需求,处理需求,安全性和完整性需求;
    3:编写系统分析报告

  • 概念结构设计阶段
    1:需求分析数据;
    2:局部E-R模型;
    3:全局E-R模型

  • 逻辑结构设计阶段
    1:初始关系模式设计;
    2:关系模式规范化:
    3:模式评价

  • 物理结构设计阶段
    1:确定物理结构;
    2:评价物理结构

  • 数据库实施阶段
    1:建立实际数据库结构;
    2:装入数据;
    3:数据库试运行;
    4:应用程序编码与调试;
    5:整理文档

  • 数据库运行与维护阶段
    1:维护数据库的安全性和完整性;
    2:监测并改善数据库性能;
    3:重新组织和构造数据库

  1. 对于满足SQL92标准的SQL语句:
select foo,count(foo)
from pokes 
where foo > 10
group by foo 
having count (*) > 5 
order by foo 

其执行顺序应该是?( A )
A. FROM->WHERE->GROUP BY->HAVING->SELECT->ORDER BY
B. FROM->GROUP BY->WHERE->HAVING->SELECT->ORDER BY
C. FROM->WHERE->GROUP BY->HAVING->ORDER BY->SELECT
D. FROM->WHERE->ORDER BY->GROUP BY->HAVING->SELECT

解:
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、select计算所有的表达式;
7、使用order by对结果集进行排序。

SQL 不同于与其他编程语言的最明显特征是处理代码的顺序。在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理。

每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只是最后一步生成的表才会返回 给调用者。如果没有在查询中指定某一子句,将跳过相应的步骤。
下面是对应用于SQL server 2000和SQL Server 2005的各个逻辑步骤的简单描述。

( 8 ) SELECT  ( 9 ) DISTINCT   ( 11 ) < Top  Num >   < select  list >  
( 1 ) FROM   [ left_table ]  ( 3 ) < join_type >   JOIN   < right_table >  
( 2 ) ON   < join_condition >  ( 4 ) WHERE   < where_condition >  
( 5 ) GROUP   BY   < group_by_list >  ( 6 ) WITH   < CUBE  |  RollUP >  
( 7 ) HAVING   < having_condition >  ( 10 ) ORDER   BY   < order_by_list >

逻辑查询处理阶段简介

  1. FROM:对FROM子句中的前两个表执行笛卡尔积(Cartesian product)(交叉联接),生成虚拟表VT1
  2. ON:对VT1应用ON筛选器。只有那些使为真的行才被插入VT2。
  3. OUTER(JOIN):如 果指定了OUTER JOIN(相对于CROSS JOIN 或(INNER JOIN),保留表(preserved table:左外部联接把左表标记为保留表,右外部联接把右表标记为保留表,完全外部联接把两个表都标记为保留表)中未找到匹配的行将作为外部行添加到 VT2,生成VT3.如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表为止。
  4. WHERE:对VT3应用WHERE筛选器。只有使为true的行才被插入VT4.
  5. GROUP BY:按GROUP BY子句中的列列表对VT4中的行分组,生成VT5.
  6. CUBE|ROLLUP:把超组(Suppergroups)插入VT5,生成VT6.
  7. HAVING:对VT6应用HAVING筛选器。只有使为true的组才会被插入VT7.
  8. SELECT:处理SELECT列表,产生VT8.
  9. DISTINCT:将重复的行从VT8中移除,产生VT9.
  10. ORDER BY:将VT9中的行按ORDER BY 子句中的列列表排序,生成游标(VC10).
  11. TOP:从VC10的开始处选择指定数量或比例的行,生成表VT11,并返回调用者。

注:步骤10,按ORDER BY子句中的列列表排序上步返回的行,返回游标VC10.这一步是第一步也是唯一一步可以使用SELECT列表中的列别名的步骤。这一步不同于其它步骤的 是,它不返回有效的表,而是返回一个游标。SQL是基于集合理论的。集合不会预先对它的行排序,它只是成员的逻辑集合,成员的顺序无关紧要。对表进行排序 的查询可以返回一个对象,包含按特定物理顺序组织的行。ANSI把这种对象称为游标。理解这一步是正确理解SQL的基础。

  1. 数据库系统的核心是( B )
    A. 数据库
    B. 数据库管理系统
    C. 数据模型
    D .软件工具

  2. 下列四组SQL命令,全部属于数据定义语句的命令是( A )
    A. CREATE,DROP,ALTER
    B. CREATE,DROP,UPDATE
    C. CREATE,DROP,GRANT
    D. CREATE,DROP,SELECT

  3. 对关系R进行投影运算后,得到关系S,则( C )
    A. 关系R的元组数等于关系S的元组数
    B. 关系R的元组数小于关系S的元组数
    C. 关系R的元组数大于或等于关系S的元组数
    D. 关系R的元组数大于关系S的元组数

解:关系R是的投影是从关系R中选择出若干属性列组成新的关系。
分为两步:
(1)选择出指定的属性,形成一个可能含有重复行的表。
(2)删除重复行,形成新的关系。

并:属性不变,元组可能增加(集合相等时不增加)
交:属性不变,元组可能减少(集合相等时不减少)
投影:属性可能减少(全投影时不减少),元组可能减少(投影后无重复项时不减少)
笛卡尔积:属性增加,元组可能增加(只有1个元组时不增加)

你可能感兴趣的:(笔试题)