赞
赏
视图是一个虚拟的表,它是不占用内存空间的。它的内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行的数据。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
在本章讲解的时候用以下两张表,学生表和班级表
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`stu_no` int(11) DEFAULT NULL,
`stu_name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`class_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `class` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`class_name` VARCHAR(200) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
我们为两张表插入数据
INSERT INTO student (`id`,`stu_no`,`stu_name`,`age`,`class_id`) VALUES
(1,1001,'小明',17,1),
(2,1002,'小红',16,1),
(3,1003,'小军',18,2),
(4,1004,'小亮',19,2);
INSERT INTO class (`id`,`class_name`) VALUES
(1,'一年级一班'),
(2,'一年级二班');
CREATE VIEW [视图名] AS [SELECT 语句];
关键字 | 描述 |
---|---|
CREATE | 创建视图时必须要有 CREATE 关键字 |
VIEW | VIEW 表示的是创建的视图 |
视图名 | 视图名,和表名类似,是唯一的,不能和现有的库里面的表或者视图同名 |
SELECT 语句 | 视图创建成功时里面的数据和 SELECT 语句里面的查询结果一样 |
CREATE VIEW view_student AS SELECT id,stu_no,stu_name,age,class_id FROM student;
我们用 show tables 语句可以看到视图出现了
我们查询视图结果
-- 嗨客网(www.haicoder.net)
SELECT * FROM view_student;
运行结果如下
-- 嗨客网(www.haicoder.net)
CREATE VIEW view_student_class AS SELECT student.id,stu_no,stu_name,age,class_id,class_name FROM student,class where student.class_id = class.id;
我们用 show tables 语句可以看到运行结果如下
我们查看视图结果
-- 嗨客网(www.haicoder.net)
SELECT * FROM view_student_class;
运行结果如下
如果我们不想要创建的视图了,想删除,该怎么办呢?我们可以使用 drop 将视图删除。
DROP VIEW 视图名;
例子如下,我们删除 view_student 这个视图
-- 嗨客网(www.haicoder.net)
DROP VIEW view_student;
我们执行 show 语句查看
我们既然已经有表了,为啥还需要视图呢?其实我们上面的例子只是简单的介绍了一下视图是怎么使用的,它的存在有以下意义
视图在我们平时开发过程中有着很重要的意义,它可以简化开发人员的查询操作,将复杂的联结查询用视图代替。它可以保护数据安全,保护一些数据不让用户看到。