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