在 MySQL中除了可以在单表上创建视图,还可以在两个或者两个以上的基本表上创建视图。本节将通过具体的案例来讲解如何在多表上创建视图。
例如, 在 student 表和 stu_info 表上创建 stu class 视图,查询出sid号、姓名和班级,具体步骤如下。
(1)首先创建 stu info表,创建 stu info 表的 SQL 语句如下所示:
mysql> CREATE TABLE stu_info(
-> s_id INT(3),
-> class VARCHAR(50),
-> addr VARCHAR(100)
-> );
Query OK, 0 rows affected, 1 warning (0.04 sec)
使用 INSERT 语句向 stu _info 表中插人数据,SQL 语句如下所示:
INSERT INTO stu_info(s_id,class,addr) VALUES(1,'erban','anhui');
INSERT INTO stu_info(s_id,class,addr) VALUES(2,'sanban','chongging');
INSERT INTO stu_info(s_id,class,addr) VALUES(3,'yiban','shandong');
在上述 SQL语句执行成功后,会在 stu_info 表中添加三条数据。为了验证数据是否添加成功,使用 SELECT 语句查询 stu_info 表,查询结果如下所示:
mysql> SELECT * FROM stu_info;
+------+--------+-----------+
| s_id | class | addr |
+------+--------+-----------+
| 1 | erban | anhui |
| 2 | sanban | chongging |
| 3 | yiban | shandong |
+------+--------+-----------+
3 rows in set (0.00 sec)
从查询结果可以看出,stu_info 表中成功地添加了三条记录。
(2)创建 stu class 视图,SQL语句如下所示:
CREATE VIEW stu_class(id,name,glass)
AS
SELECT student.s_id,student.name,stu_info.class
FROM student,stu_info
WHERE student.s_id=stu_info.s_id;
上述 SQL语句执行成功后,会生成一个名为 stu_class 的视图,接下来使用 SELECT语句查看 view_stu2 视图,查询结果如下所示:
mysql> SELECT * FROM stu_class;
+------+------+--------+
| id | name | glass |
+------+------+--------+
| 1 | Tom | erban |
| 2 | Jack | sanban |
| 3 | Lucy | yiban |
+------+------+--------+
3 rows in set (0.01 sec)
从执行结果可以看出,创建的视图中包含 id、name 和 class 字段,其中,id 字段对应student 表中的 s_id 字段,name 对应 student 表中的 name 字段,class 字段对应 sut info表中的 class 字段。