笔试题

作者: Xindolia_Ring | 来源:发表于2019-04-06 21:24 被阅读0次
    1. 下列关于视图的说法错误的是( C )
      A. 视图是从一个或多个基本表导出的表,它是虚表
      B. 某一用户可以定义若干个视图
      C. 视图一经定义就可以和基本表一样被查询,删除和更新
      D. 视图可以用来定义新的视图

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

    1. 下列sql语句中哪条语句可为用户zhangsan分配数据库userdb表userinfo的查询和插入数据权限( A )
      A. <pre class="none">grant select,insert on userdb.userinfo to'zhangsan'@'localhost'</pre>
      B. <pre class="none">grant'zhangsan'@'localhost'to select,insert for userdb.userinfo</pre>
      C. <pre class="none">grant select,insert on userdb.userinfo for'zhangsan'@'localhost'</pre>
      D. <pre class="none">grant'zhangsan'@'localhost'to userdb.userinfo on select,insert</pre>

    解:格式应该是: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筛选器。只有那些使<join_condition>为真的行才被插入VT2。
    3. OUTER(JOIN):如 果指定了OUTER JOIN(相对于CROSS JOIN 或(INNER JOIN),保留表(preserved table:左外部联接把左表标记为保留表,右外部联接把右表标记为保留表,完全外部联接把两个表都标记为保留表)中未找到匹配的行将作为外部行添加到 VT2,生成VT3.如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表为止。
    4. WHERE:对VT3应用WHERE筛选器。只有使<where_condition>为true的行才被插入VT4.
    5. GROUP BY:按GROUP BY子句中的列列表对VT4中的行分组,生成VT5.
    6. CUBE|ROLLUP:把超组(Suppergroups)插入VT5,生成VT6.
    7. HAVING:对VT6应用HAVING筛选器。只有使<having_condition>为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个元组时不增加)

    相关文章

      网友评论

          本文标题:笔试题

          本文链接:https://www.haomeiwen.com/subject/vgrdiqtx.html