数据库期末简答题-第三章

时间:2024-03-10 21:14:11

1.简述SQL语言的特点

  • 综合统一。SQL语言集数据定义语句(DDL)、数据操纵语言(DML)和数据控制语言(DCL)的功能于一体。
  • 高度非过程化。用SQL语言进行数据操作,只要提出“做什么”,而无须指明“怎么做”,因此无须了解存取路径。存取路径的选择以及SQL语句的操作过程由系统自动完成。
  • 面向集合的操作方式。SQL语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除更新操作的对象也可以是元组的集合。
  • 以同一种语法结构提供两种使用方式。SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,也能够嵌入到高级语言程序中,供程序员设计程序时使用。
  • 语言简洁,易学易用。

2.列出表级约束或行级约束的几个关键字,并解释其含义

  • 用于定义表一级的完整性约束,一般包括:

    • PRIMARY KEY约束(复合属性构成的主关键字说明)
    • FOREIGN KEY约束(外部关键字及参照关系说明)
    • CHECK约束(同时涉及到多个属性的域完整性约束)
  • 用于定义列或字段一级的完整性约束,一般包括:

    • NOT NULL和NULL约束
    • PRIMARY KEY约束
    • UNIQUE约束
    • FOREIGN KEY约束
    • DEFAULT定义
    • CHECK约束

3.简述索引的含义,并说明索引与ORDER BY的区别

  • 索引:对表中的记录进行逻辑排序,加快检索的速度。
  • ORDER BY:用来对查询的结果进行排序。
  • 区别:???

4.写出完整的SELECT语句的格式(课本P112)

SELECT [ALL|DISTINCT] <目标列表达式> [别名] [,<目标列表达式> [别名]]⋯
FROM <表名或视图名> [别名] [,<表名或视图名> [别名]]⋯ | (<SELECT 语句>) [AS] <别名>
[WHERE <条件表达式>]
[GROUP BY <列名1>] [HAVING <条件表达式>]
[ORDER BY <列名2> [ASC|DESC]];

目标列表达式的可选格式:(1)*(2)<表名>.*(3)COUNT([DISTINCT|ALL] *)(4)[<表名>.]<属性列名表达式> [,[<表名>.]<属性列名表达式>]⋯
<属性列名表达式>可以由属性列、作用于属性列的聚集函数和常量的容易算数运算组成的运算公式。

5.说明WHERE子句中的<条件表达式>,与HAVING子句中的<组过滤表达式>的区别

  • WHERE用于在任何分组发生之前过滤记录。
  • HAVING用于在组成为组后过滤值。只有组中的列或表达式才能包含在HAVING子句的条件中。

    where 不能放在GROUP BY 后面;
    HAVING 是跟GROUP BY 连在一起用的,放在GROUP BY 后面,此时的作用相当于WHERE;
    WHERE 后面的条件中不能有聚集函数,而HAVING 可以

6.给出组函数(聚集函数)与单值函数的区别

  • 组函数作用于一组数据,并对一组数据返回一个值。
  • 单值函数操作数据对象,只对一行进行变换,每行返回一个结果。
    (乱写的不知道对不对)

7.视图的作用;视图的更新问题

  • 作用
    • 视图能够简化用户的操作。
    • 视图使用户能以多种角度看待同一数据。
    • 视图对重构数据库提供了一定程度的逻辑独立性。
    • 视图能够对机密数据提供安全保护。
  • 更新问题
    • 基本表的行列子集视图一般是可更新的。
    • 若视图的属性来自聚集函数、表达式,则该视图肯定是不可以更新的。