文章目录
一、VIEW视图
1、定义视图 CREATE VIEW
2、删除视图
3、查询视图和更新视图
二、空值
1、判断一个属性是否为空值
2、空值的运算
一、VIEW视图
1、定义视图 CREATE VIEW
CREATE VIEW 视图名(列名 1,列名 n) //若省略列名,则该视图由子査询中 SELECT 的目标列字段组成
AS 子查询
WITH CHECK OPTION; //若添加该句,则表示对视图进行增删改时要满足子查询中的条件表达式
在以下情况中必须明确指定组成视图的列名:
1.某个目标列不是单纯的列名,而是聚集函数或列表达式
2.多表连接时选出了几个同名列作为视图的字段
3.需要在视图中为某个列启用新的更合适的名字
行列子集视图:由单个基本表导出,仅去掉了基本表的某些行和某些列,但保留了主码
若某些视图是建立在另一个表的全部属性列上的,即视图与基本表的各列是一一对应的。那么当修改基本表的结构时,基本表和视图的映像关系会被破坏。这种情况最好在修改基本表后除该视图,然后重建该视图
eg1.建立 TAB1 的视图
CREATE VIEW V TAB1
AS
SELECT C1, C2, C3, C4
FROM TAB1
WHERE C1=1;
eg2.建立 C4 为4时 TAB1 的视图,并保证以后每次增酬改时都要满足 C4为4的条件CREATE
VIEW V TAB2
AS
SELECT C1, C2, C3, C4
FROM TAB1
WHERE C4='4'
WITH CHECK OPTION;
eg3.建立在一个或多个已定义号的视图上
CREATE VIEW V TAB3
AS
SELECT C1, C2,C3
FROM V TAB1
WHERE C2=2;
eg4.为减少冗余数据,定义基本表时一般只存放基本数据。当需要使用计算得出的派生数据时,可以设置在视图中的派生属性列上,也称为虚拟列。带虚拟列的视图也称为带表达式的视图
CREATE VIEW V TAB4(C1,new C2)
AS
SELECT C1,10+C2
FROM TAB1;
eg5.分组视图:带有聚集函数和 GROUP BY 子句
CREATE VIEW V TAB5(C1, avg C2)
AS
SELECT C1, AVG(C2)
FROM TAB1
GROUP BY C1;
2、删除视图
DROP VIEWDROP VIEW 视图名 CASCADE://若使用 CASCADE 级联删除语句,则将把该视图导出的所有视图一并删除
eg1.
DROP VIEW V TAB2;
eg2.
DROP VIEW V TAB1 CASCADE; //由 V TAB1 导出的 V TAB3 也一并删除
3、查询视图和更新视图
视图定义后,对视图进行查询和更新的语句和语法与基本表相同
视图的查询与更新最终都会转换为对基本表的查询和更新,这一过程也被称为视图消解
一般来说,行列子集视图的查询和更新都可以顺利转换,其他则不一定
二、空值
1、判断一个属性是否为空值
属性 IS NULL
属性 IS NOT NULL
2、空值的运算
空值与另一个值的算术运算结果为空值
空值与另一个值的比较运算结果为 UNKNOWN
在查询语句中,只有使 WHERE 和 HAVING 子句的选择条件为 TRUE 的元组才会被选出作为输出结果(即不包括UNKNOWN 的情况)