|
由CREATE TABLE产生的表称为基本表,是数据库存储数据的基本单位。视图创建者必须拥有在视图定义中引用的任何对象的使用权方可创建视图。视图只能在当前数据库中建立。一个视图最多可以引用250个字段。视图的定义存放在数据字典中,只有在操作(查询或通过视图更新数据)视图时,系统才执行视图的子查询,产生视图数据。
定义视图的语句格式:
CREATE VIEW 视图名 [(列名[,列名]……)]
AS
子查询
[WITH CHECK OPTION]
视图名:在当前数据库中产生的视图名,一个视图可以参照当前数据库中的一个或多个表中的多个列。
列名:指视图的列名。视图的列名或者都指定,或者都不指定,缺省情况下,视图的列名与子查询中的目标列名相同。但下列情况必须明确指定列名:
・ 视图中的列来自算术表达式、函数或常量;
・ 查询子句中由于连接多个表,不同表中的列具有相同的列名;
・ 视图中的列需要使用别名。
WITH CHECK OPTION选项:表示对视图的更新操作必须满足子查询语句中WHERE设置的条件。
|
例1,在student表上定义视图student 2,视图具有3列属性:学号、姓名、班级。如下描述: CREATE VIEW
student2
AS
SELECT sno, sname, sclass
FROM student
|
|
例2,在student表上建立视图,使用不同于基表的列名:
CREATE VIEW student3(学号、姓名、班级)
AS
SELECT sno, sname, sclass
FROM student
|
|
例3,在student表上定义视图csstud,只包含计算机系的学生。虽然视图中的数据只来源于student表,但是查询条件要用到班级名称和系的名称。视图定义如下描述:CREATE
VIEW csstud
AS
SELECT sno,sname, sex,birthday
FROM student,class,dept
WHERE student.sclass = class.classname
AND class.deptno = dept.deptno
AND deptname = '计算机';
可以定义一个基于视图的视图,而不是基于基本表的视图。也可以创建引用几个视图或者视图和表组合的视图。
|
|
例4:建立第一个视图salesonly,是基于基本表创建的,第二个视图salespersons是基于第一个视图salesonly创建的。
CREATE VIEW salesonly
AS
SELECT name, department, badge
FROM employee
WHERE department='Sales'
Go
CREATE VIEW salespersons
AS
SELECT name
FROM salesonly |
|
|