SQL概述 Flashcards

0
Q

SQL特点

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
1
Q

SQL功能

A

数据查询,数据操纵,数据定义,数据控制。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

综合统一

A

数据库系统的主要功能是通过数据库支持的数据语言来实现的。
非关系模型(层次模型、网状模型)的数据语言一般都分为:模式数据定义语言,外模式数据定义语言,数据存储有关的描述语言,数据操纵语言。它们分别用于定义模式、外模式、内模式和进行数据的存取与处置。当用户数据库投入运行后,如果需要修改模式,必须停止现有数据库的运行,转储数据,修改模式并编译后再重装数据库,十分麻烦。
SQL集数据定义语言DDL、数据操纵语言DML,数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动:包括:定义关系模式,插入数据,建立数据库;对数据库中的数据进行查询和更新;数据库重构和维护;数据库安全性、完整性控制;等一系列操作要求。
这为数据库应用系统的开发提供了良好的环境。用户在数据库系统投入运行后,还可根据需要随时地逐步地修改模式,并不影响数据库的运行,从而使系统具有良好的可扩展性。
在关系模型中实体和实体之间的联系均用关系表示,这种数据结构的单一性带来了数据操作符的统一性,查找、插入、删除、更新等每一种操作都只需要一种操作符,从而克服了非关系系统由于信息表示方式的多样性带来的操作复杂性。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

高度非过程化

A

非关系数据模型的数据操纵语言是"面向过程"的语言,用"过程化"语言完成某项请求,必须指定存取路径。
而用SQL进行数据操作,只要提出"做什么",而无须指明"怎么做",因此无需了解存取路径。存取路径的选择以及SQL的操作过程由系统自动完成。
不但大大减轻了用户的负担,而且有利于提高数据独立性。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

面向集合的操作方式

A

非关系数据模型采用的是面向记录的操作方式,操作对象是一条记录。

SQL采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

以同一种语法结构提供多种使用方式

A

SQL既是独立的语言,又是嵌入式语言。
作为独立的语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言程序中,供程序员设计程序时使用。而在两种不同的使用方式下,SQL的语法结构基本上是一致的。这种以统一的语法结构提供多种不同使用方式的做法,提供了极大的灵活性与方便性。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

语言简洁,易学易用

A

SQL功能极强,但由于设计巧妙,语言十分简洁,完成核心功能只用了9个动词。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

SQL的动词

A

数据查询:SELECT
数据定义:CREATE,DROP,ALTER
数据操纵:INSERT,UPDATE,DELETE
数据控制:GRANT,REVOKE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

支持SQL的RDBMS同样支持关系数据库三级模式结构

A

外模式对应于视图和部分基本表,模式对应于基本表,内模式对应于存储文件。

用户可以用基本表和视图进行查询或其他操作,基本表和视图一样,都是关系。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

基本表

A

是本身独立存在的表,在SQL中一个关系就对应一个基本表。一个(或多个)基本表对应一个存储文件,一个表可以带若干索引,索引也存放在存储文件中。
存储文件的逻辑结构组成了关系数据库的内模式。存储文件的物理结构是任意的,对用户是透明的。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

SQL的数据定义功能

A

模式定义、表定义、视图和索引的定义。

关系数据库系统支持三级模式结构,其模式、外模式和内模式中的基本对象有表、视图和索引。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

SQL的数据定义语句

A
模式  CREATE/ DROP SCHEMA
表     CREATE/ DROP/ ALTER TABLE
视图  CREATE/ DROP VIEW
索引  CREATE/ DROP INDEX
SQL标准通常不提供修改模式定义、修改视图定义和修改索引定义的操作。用户如果想修改这些对象,只能先将它们删除掉,然后再创建。
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

模式定义语句

A

CREATE SCHEMA AUTHORIZATION
如果没有指定,那么隐含为。
要创建模式,调用该命令的用户必须拥有DBA权限,或者获得了DBA授予的CREATE SCHEMA的权限。
定义模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表、视图、索引等。
在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。即用户可以在创建模式的同时在这个模式定义中进一步创建基本表、视图,定义授权。
CREATE SCHEMA AUTHORIZATION [||]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

删除模式语句

A

DROP SCHEMA
其中CASCADE和RESTRICT两者必选其一。
CASCADE(级联):在删除模式的同时把该模式中所有的数据库对象全部一起删除。
RESTRICT(限制):如果该模式中已定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。只有当该模式中没有任何下属的对象时才能执行DROP SCHEMA语句。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

基本表的定义

A

创建了一个模式,就建立了一个数据库的命名空间,一个框架。在这个空间中首先要定义的是该模式包含的数据库基本表。
CREATE TABLE ( [列级完整性约束条件][,[列级完整性约束条件]]…[,]);
建表的同时还可以定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中,当用户操作表中数据时由RDBMS自动检查该操作是否违背这些完整性约束条件。如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

A

每一个属性来自一个域,它的取值必须是域中的值。
在SQL中域的概念用数据类型来实现。定义表的各个属性时需要指明其数据类型及长度。(不同的RDBMS中支持的数据类型不完全相同。)
一个属性要选用哪种数据类型,要根据实际情况来决定,一般从两个方面来考虑,一是取值范围,二是要做哪些运算。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

数据类型

A
CHAR(n)  长度为n的定长字符串
VARCHAR(n)  最大长度为n的变长字符串
INT  长整数(也可以写作INTEGER)
SMALLINT  短整数
NUMERIC(p,d)  定点数,由p位数字(不包括符号、小数点)组成,小数后面有d位数字
REAL  取决于机器精度的浮点数
Double Precision  取决于机器精度的双精度浮点数
FLOAT(n)  浮点数,精度至少为n位数字
DATE  日期,包含年、月、日,格式为YYYY-MM-DD
TIME  时间,包含一日的时、分、秒,格式为HH:MM:SS
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

模式与表

A
每一个基本表都属于某一个模式,一个模式包含多个基本表。
定义基本表时定义它所属的模式的方法:
1。在表名中明显地给出模式名。
(CREATE TABLE "S-T".Student(...);)
2。在创建模式语句中同时创建表。
3。设置所属的模式,这样在创建表时表名中不必给出模式名。
当用户创建基本表(其他数据对象也一样)时若没有指定模式,系统根据搜索路径来确定该对象所属的模式。
搜索路径包含一组模式列表,RDBMS会使用模式列表中第一个存在的模式作为数据库对象的模式名。若搜索路径中的模式名不存在,系统将给出错误。
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

搜索路径

A

显示当前的搜索路径:SHOW search_path;
搜索路径的当前默认值是:$user, PUBLIC。其含义是首先搜索与用户名相同的模式名,如果该模式不存在,则使用PUBLIC模式。
DBA用户也可以设置搜索路径,例如:SET searth_path TO “S-T”,PUBLIC;
然后定义基本表:CREATE TABLE Student(…);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

修改基本表

A
格式:
ALTER TABLE 
[ADD   [完整性约束]]
[DROP ]
[ALTER COLUMN  ];
其中是要修改的基本表,ADD子句用于增加新列和新的完整性约束条件,DROP子句用于删除指定列的完整性约束条件,ALTER COLUMN子句用于修改原有的列定义,包括修改列名和数据类型。
不论基本表中原来是否已有数据,新增加的列一律为空值。
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

删除基本表

A

DROP TABLE [RESTRICT|CASCADE];
RESTRICT:该表的删除是有限制条件的。欲删除的基本表不能被其他表的约束所引用(如CHECK,FOREIGN KEY等约束),不能有视图,不能有触发器,不能有存储过程或函数等。如果存在这些依赖该表的对象,则此表不能被删除。
CASCADE:该表的删除没有限制条件。在删除基本表的同时,相关的依赖对象,例如视图,都将被一起删除。
缺省情况是RESTRICT。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

索引

A

建立索引是加快查询速度的有效手段。用户可以根据应用环境的需要,在基本表上建立一个或多个索引,以提供多种存取路径,加快查找速度。
建立与删除索引由数据库管理员DBA或表的属主,即建立表的人,负责完成。系统在存取数据时会自动选择合适的索引作为存取路径,用户不必也不能显式地选择索引。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

建立索引

A

CREATE [UNIQUE][CLUSTER] INDEX ON ([][,[]]…);
其中,是要建索引的基本表的名字。索引可以建立在该表的一列或多列上,各列名之间用逗号分隔。每个后面还可以用指定索引值的排列次序,可选ASC(升序)或DESC(降序),缺省值为ASC。
UNIQUE:此索引的每一个索引值只对应唯一的数据记录。
CLUSTER:聚簇索引(索引项的顺序与表中记录的物理顺序一致的索引组织)。
用户可以在最基经常查询的列上建立聚簇索引以提高查询效率。在一个基本表上最多只能建立一个聚簇索引。建立聚簇索引后,更新该索引列上的数据时,往往导致表中记录的物理顺序的变更,代价较大,因此对于经常更新的列不宜建立聚簇索引。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

删除索引

A

索引一经建立,就由系统使用和维护它,不需用户干预。建立索引是为了减少查询操作的时间,但如果数据增删改频繁,系统会花很多时间来维护索引,从而降低了查询效率。
DROP INDEX ;
删除索引时,系统会同时从数据字典中删去有关该索引的描述。
在RDBMS中索引一般采用B+树、HASH索引来实现。B+树索引具有动态平衡的优点。HASH索引具有查找速度快的特点。
索引属于内模式的范畴。
用户使用CREATE INDEX语句定义索引时,可以定义索引是唯一索引、非唯一索引或聚簇索引。至于某一索引是采用B+树,还是HASH索引则由具体的RDBMS来决定。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

数据查询

A
查询是数据库的核心操作。
SELECT [ALL|DISTINCT]  [,]...
FROM  [,]...
[WHERE ]
[GROUP BY  [HAVING ]]
[ORDER BY  [ASC|DESC]];
含义:根据WHERE子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,再按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表。
如果有GROUP BY子句,则将结果按的值进行分组,该属性列值相等的元组为一个组。通常会在每组中作用聚集函数。如果GROUP BY子句带HAVING短语,则只有满足指定条件的组才予以输出。
如果有ORDER BY子句,则结果表还要按的值的升序或降序排序。
SELECT语句既可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询。
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

单表查询

A

仅涉及一个表的查询。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

查询

A

SELECT

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

用小写字母表示

A

LOWER()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

消除取值重复的行

A

DISTINCT

若没有DISTINCT,则缺省为ALL。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

查询满足指定条件的元组

A

WHERE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

比较大小

A
=
>
<
>=
<>
!>
!<
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

确定范围

A

BETWEEN…AND…

NOT BETWEEN…AND…

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

确定集合

A

IN

NOT IN

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

字符匹配

A

[NOT] LIKE ‘’ [ESCAPE ‘’]
%:任意长度(长度可以为0)的字符串。
:任意单个字符。
如果LIKE后面的匹配串中不含通配符,则可以用=运算符取代LIKE谓词,用!=或<>运算符取代NOT LIKE谓词。
如果用户要查询的字符串本身就含有通配符%或
,这时就要使用ESCAPE ‘‘短语,对通配符进行转义了。

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

涉及空值的查询

A

IS NULL

IS NOT NULL

35
Q

多重条件查询

A

AND

OR

36
Q

ORDER BY

A

对查询结果按照一个或多个属性列的升序或降序排序,缺省为升序。

对于空值,排序时显示的次序由具体系统实现来决定。

37
Q

聚集函数

A
COUNT([DISTINCT|ALL] *)
COUNT([DISTINCT|ALL] )
SUM([DISTINCT|ALL] )
AVG([DISTINCT|ALL] )
MAX([DISTINCT|ALL] )
MIN([DISTINCT|ALL] )
在聚集函数遇到空值时,除COUNT(*)外,都跳过空值而只处理非空值。
WHERE子句是不能用聚集函数作为条件表达式的。
38
Q

GROUP BY

A

将查询结果按某一列或多列的值分组,值相等的为一组。

目的:细化聚集函数的作用对象。

39
Q

HAVING

A

指定筛选条件。

WHERE子句与HAVING短语的区别在于作用对象不同。WHERE子句作用于基本表或视图,从中选出满足条件的元组。HAVING短语作用于组,从中选择满足条件的组。

40
Q

连接查询

A

一个查询同时涉及两个以上的表。

是关系数据库中最主要的查询,包括等值连接查询、自然连接查询、非等值连接查询、自身连接查询、外连接查询和复合条件连接查询等。

41
Q

连接条件(连接谓词)

A
WHERE子句中用来连接两个表的条件。
[.]  [.]
[.] BETWEEN [.] AND [.]
当连接运算符为=时,称为等值连接。
使用其他运算符称为非等值连接。
连接谓词中的列名称为连接字段。
连接条件中的各连接字段类型必须是可比的,但名字不必相同。
如果属性名在参加连接的各表中是唯一的,则可以省略表名前缀。
42
Q

自然连接

A

在等值连接中把目标列中重复的属性列去掉。

43
Q

自身连接

A

一个表与其自己进行连接。

要取别名。

44
Q

外连接

A

属性上填空值。
左外连接列出左边关系中所有的元组,右外连接列出右边关系中所有的元组。
LEFT OUT JOIN SC ON (Student.Sno=SC.Sno);
LEFT OUT JOIN SC USING (Sno);

45
Q

复合条件连接

A

WHERE子句中有多个连接条件。

46
Q

多表连接

A

两个以上的表进行连接。

47
Q

嵌套查询

A

一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为条件查询。
外层查询(父查询):上层的查询块。
内层查询(子查询):下层的查询块。

48
Q

多层嵌套查询

A

一个子查询中还可以嵌套其他子查询。
子查询的SELECT语句中不能使用ORDER BY子句,ORDER BY子句只能对最终查询结果排序。
IN

49
Q

不相关子查询

A

子查询的查询条件不依赖于父查询。

50
Q

带有ANY(SOME)或ALL谓词的子查询

A

子查询返回单值时可以用比较运算符,但返回多值时要用ANY(有的系统用SOME)或ALL谓词修饰符。而使用ANY或ALL谓词时必须同时使用比较运算符。

51
Q

EXISTS

A

存在量词。
带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值”true”或逻辑假值”false”。
若内层查询结果非空,则外层的WHERE子句返回真值,否则返回假值。
由EXISTS引出的子查询,其目标列表达式通常都用*,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义。
NOT EXISTS:若内层查询结果为空,则外层的WHERE子句返回真值,否则返回假值。
一些带EXISTS或NOT EXISTS谓词的子查询不能被其他形式的子查询等价替换,但所有带有IN谓词、比较运算符、ANY和ALL谓词的子查询都能用带EXISTS谓词的子查询等价替换。

52
Q

集合操作

A
并:UNION
交:INTERSECT
差:EXCEPT
参加集合操作的各查询结果的列数必须相同,对应项的数据类型也必须相同。
使用UNION将多个查询结果合并起来时,系统会自动去掉重复元组。如果要保留重复元组,则用UNION ALL操作符。
53
Q

数据更新操作

A

向表中添加若干行数据、修改表中的数据和删除表中的若干行数据。

54
Q

数据插入

A

INSERT

两种形式:插入一个元组,或插入子查询结果。后者可以一次插入多个元组。

55
Q

插入元组

A

INSERT INTO [( [,…)] VALUES ( [,]…);
功能:将新元组插入指定表中。
INTO子句中没有出现的属性列,新元组在这些列上将取空值。但在表定义时说明了NOT NULL的属性列不能取空值,否则会出错。
如果INTO子句中没有指明任何属性列名,则新插入的元组必须在每个属性列上均有值。
属性的顺序可以与CREATE TABLE中的顺序不一样。VALUES子句对新元组的各属性赋值,字符串常数要用单引号(英文符号)括起来。
在INTO子句中只指出了表名,没有指出属性名,这表示新元组要在表的所有属性列上都指定值,属性列的次序与CREATE TABLE中的次序相同。VALUES子句对新元组的各属性列赋值,一定要注意值与属性列要一一对应。

56
Q

插入子查询结果

A

INSERT INTO [( [,…)] 子查询;

57
Q

修改操作(更新操作)

A

UPDATE SET = [,=]…[WHERE ];
功能:修改指定表中满足WHERE子句条件的元组。其中SET子句给出的值用于取代相应的属性列值。如果省略WHERE子句,则表示要修改表中的所有元组。
子查询也可以嵌套在UPDATE语句中,用以构造修改的条件。

58
Q

删除数据

A

DELETE FROM [WHERE ];
功能:从指定表中删除满足WHERE子句条件的所有元组。如果省略WHERE子句,表示删除表中全部元组,但表的定义仍在字典中。(DELETE语句删除的是表中的数据,而不是关于表的定义。)
子查询也可以嵌套在DELETE语句中,用以构造执行删除操作的条件。
对某个基本表中的数据增、删、改操作有可能会破坏参照完整性。

60
Q

建立视图

A

CREATE VIEW [( [,]…)] AS [WITH CHECK OPTION];
其中,子查询可以是任意复杂的SELECT语句,但通常不允许含有ORDER BY子句和DISTINCT短语。
WITH CHECK OPTION表示对视图进行UPDATE,INSERT,和DELETE操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)。
组成视图的属性列名或者全部省略或者全部指定,没有第三种选择。如果省略了视图的各个属性列名,则隐含该视图由子查询中SELECT子句目标列中的诸字段组成。
视图不仅可以建立在单个基本表上,也可以建立在多个基本表上,也可以建立在一个或多个已定义好的视图上,或建立在基本表与视图上。

61
Q

必须明确指定组成视图的所有列名的情况

A

1。某个目标列不是单纯的属性名,而是聚集函数或列表达式。
2。多表连接时选出了几个同名列作为视图的字段。
3。需要在视图中为某个列启用新的更合适的名字。

62
Q

行列子集视图

A

从单个基本表导出的,并且只是去掉了基本表的某些行和某些列,但保留了主码的视图。

63
Q

虚拟列

A

定义基本表时,为了减少数据库中的冗余数据,表中只存放基本数据,由基本数据经过各种计算派生出的数据一般是不存储的。但由于视图中的数据并不实际存储,所以定义视图时可以根据应用的需要,设置一些派生属性列。
带虚拟列的视图也称为带表达式的视图。

64
Q

分组视图

A

带有聚集函数和GROUP BY子句的查询。

65
Q

子查询为SELECT*的视图

A

其属性列与基本表的属性列一一对应,如果以后修改了基本表的结构,则基本表与视图的映像关系就被破坏了,该视图就不能正确工作了。最好在修改基本表之后删除由该基本表导出的视图,然后重建这个视图。

66
Q

删除视图

A

DROP VIEW [CASCADE];
视图删除后视图的定义将从数据字典中删除。如果该视图上还导出了其他视图,则CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除。
基本表删除后,由该基本表导出的所有视图(定义)没有被删除,但均已无法使用了。删除这些视图(定义)需要显式地使用DROP VIEW语句。

67
Q

查询视图

A

视图定义后,用户就可以像对基本表一样对视图进行查询了。
RDBMS在执行对视图的查询时,首先进行有效性检查。检查查询中涉及的表、视图等是否存在。如果存在,则从数据字典中取出视图的定义,把定义中的子查询和用户的查询结合起来,转换成等价的对基本表的查询,然后再执行修正了的查询。这一转换过程称为视图消解。
在一般情况下,视图查询的转换是直截了当的。但有些情况下,这种转换不能直接进行,查询时就会出现问题。
目前多数关系数据库系统对行列子集视图的查询均能进行正确转换。但对非行列子集视图的查询就不一定能做转换了,因此这类查询应该直接对基本表进行。

68
Q

更新视图

A

通过视图来插入(INSERT)、删除(DELETE)和修改(UPDATE)数据。
由于视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。像查询视图那样,对视图的更新操作也是通过视图消解,转换为对基本表的更新操作。
为防止用户通过视图对数据进行增加、删除、修改时,有意无意地对不属于视图范围内的基本表数据进行操作,可在定义视图时加上WITH CHECK OPTION子句。这样在视图上增删改数据时,RDBMS会检查视图中的条件,若不满足条件,则拒绝执行该操作。
在关系数据库中,并不是所有的视图都是可更新的,因为有些视图的更新不能唯一地有意义的转换成对相应基本表的更新。
一般地,行列子集视图是可更新的。除行列子集视图外,还有些视图理论上是可更新的,但它们的确切特征还是尚待研究的课题。
还有些视图从理论上就是不可更新的。
目前各个关系数据库系统一般都只允许对行列子集视图进行更新。

69
Q

DB2规定

A

1。若视图是由两个以上基本表导出的,则此视图不允许更新。
2。若视图的字段来自字段表达式或常数,则不允许对此视图执行INSERT和UPDATE操作,但允许执行DELETE操作。
3。若视图的字段来自聚集函数,则此视图不允许更新。
4。若视图定义中含有GROUP BY子句,则此视图不允许更新。
5。若视图定义中含有DISTINCT短语,则此视图不允许更新。
6。若视图定义中有嵌套查询,并且内层查询的FROM子句中涉及的表也是导出该视图的基本表,则此视图不允许更新。
7。一个不允许更新的视图上定义的视图也不允许更新。

70
Q

视图的作用(优点)

A
1。简化用户的操作。
2。使用户能以多种角度看待同一数据。
3。对重构数据库提供了一定程度的逻辑独立性。
4。对机密数据提供安全保护。
5。适当的利用视图可以更清晰的表达查询。
71
Q

什么是基本表?什么是视图?两者之间的区别和联系是什么?

A

基本表是独立存在的表。在SQL中,一个关系对应于一个基本表。
视图是从一个或多个基本表(或视图)所导出的表。它本身不独立存储在数据库中,是一个虚表,即数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。视图在概念上与基本表等同,用户可以像使用基本表那样使用视图,可以在视图上再定义新的视图。

72
Q

是否所有的视图都可以更新?为什么?

A

不是。视图是不实际存储数据的虚表,因此对视图所做的更新最终要转换为对基本表的更新。因为有些视图的更新不能唯一地、有意义地转换成对相应的基本表的更新,所以,并非所有视图都是可更新的。
例如:
CREATE VIEW S_G(Sno,Gavg) AS SELECT Sno, AVG(Grade) FROM SC GROUP BY Sno;
要修改平均成绩,必须修改各门课程的成绩,而我们无法知道是哪些课程成绩的变化导致平均成绩的变化。

73
Q

哪类视图是可以更新的?哪类视图是不可更新的?各举一例说明之。

A

基本表的行列子集视图通常是可更新的。若视图的属性来自聚集函数、表达式,则该视图肯定是不可更新的。

122
Q

视图

A

是从一个或几个基本表(或视图)导出的表。它本身不独立存储在数据库中,即数据库中只存放视图的定义而不存放视图对应的数据。这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。若基本表中的数据发生变化,从视图中查询出的数据也就随之改变了。
视图一经定义,就可以和基本表一样被查询、被删除。视图在概念上与基本表等同,用户可以在视图上再定义新的视图,但对视图的更新(增、删、改)操作则有一定限制。

123
Q

在SQL中,用户可以直接操作的是___。

A.基本表 B.视图 C.基本表或视图 D.基本表和视图

A

D

124
Q

在SQL的SELECT语句中,与选择运算对应的命令动词是___。

A.SELECT B.FROM C.WHERE D.ORDER BY

A

C

125
Q

SELECT语句执行的结果是___。

A.数据项 B.元组 C.表 D.数据库

A

C

126
Q

在SELECT语句中使用*,表示___。

A.选择任何属性 B.选择全部属性 C.选择全部元组 D.选择主码

A

B

127
Q

在SELECT语句中使用MAX(列名)时,列名应该___。

A.必须是数值型 B.必须是字符型 C.必须是数值型或字符型 D.不限制数据类型

A

C

128
Q

在SQL的查询语句中,对应关系代数中"投影"运算的语句是___。

A.SELECT B.FROM C.WHERE D.SET

A

A

129
Q

SQL的含义是___。

A

结构化查询语言

130
Q

在SQL中数据库是___的集合。

A

基本表(或表)

131
Q

在SQL中使用___确定表的结构。

A

CREATE TABLE

132
Q

在SQL中使用___描述数据库的外模式。

A

视图

133
Q

在嵌入式SQL中使用___方法解决与其他程序设计语言数据组织方式不一致的问题。

A

游标