mysql视图有空间吗?
mysql视图没有空间。MySQL视图是一种虚拟存在的表,并不实际存在于数据库中,不分配空间。MySQL数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据都存放在定义视图查询所引用的真实表中。
(推荐教程:mysql视频教程)
MySQL 视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的。
数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据都存放在定义视图查询所引用的真实表中。使用视图查询数据时,数据库会从真实表中取出对应的数据。因此,视图中的数据是依赖于真实表中的数据的。一旦真实表中的数据发生改变,显示在视图中的数据也会发生改变。
视图可以从原有的表上选取对用户有用的信息,那些对用户没用,或者用户没有权限了解的信息,都可以直接屏蔽掉,作用类似于筛选。这样做既使应用简单化,也保证了系统的安全。
例如,下面的数据库中有一张公司部门表 department。表中包括部门号(d_id)、部门名称(d_name)、功能(function)和办公地址(address)。department 表的结构如下:
mysql> DESC department; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | d_id | int(4) | NO | PRI | NULL | | | d_name | varchar(20) | NO | UNI | NULL | | | function | varchar(50) | YES | | NULL | | | address | varchar(50) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 4 rows in set (0.02 sec)
还有一张员工表 worker。表中包含了员工的工作号(num)、部门号(d_id)、姓名(name)、性别(sex)、出生日期(birthday)和家庭住址(homeaddress)。worker 表的结构如下:
mysql> DESC worker; +-------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ | num | int(10) | NO | PRI | NULL | | | d_id | int(4) | YES |MUL | NULL | | | name | varchar(20) | NO | | NULL | | | sex | varchar(4) | NO | | NULL | | | birthday | datetime | YES | | NULL | | | homeaddress | varchar(50) | YES | | NULL | | +-------------+-------------+------+-----+---------+-------+ 6 rows in set (0.01 sec)
由于各部门领导的权力范围不同,因此,各部门的领导只能看到该部门的员工信息;而且,领导可能不关心员工的生日和家庭住址。为了达到这个目的,可以为各部门的领导建立一个视图,通过该视图,领导只能看到本部门员工的指定信息。
例如,为生产部门建立一个名为 product _view 的视图。通过视图 product_ view,生产部门的领导只能看到生产部门员工的工作号、姓名和性别等信息。这些 department 表的信息和 worker 表的信息依然存在于各自的表中,而视图 product_view 中不保存任何数据信息。当 department 表和 worker 表的信息发生改变时,视图 product_view 显示的信息也会发生相应的变化。
技巧:如果经常需要从多个表查询指定字段的数据,可以在这些表上建立一个视图,通过这个视图显示这些字段的数据。
MySQL 的视图不支持输入参数的功能,因此交互性上还有欠缺。但对于变化不是很大的操作,使用视图可以很大程度上简化用户的操作。
视图并不同于数据表,它们的区别在于以下几点:
视图不是数据库中真实的表,而是一张虚拟表,其结构和数据是建立在对数据中真实表的查询基础上的。
存储在数据库中的查询操作 SQL 语句定义了视图的内容,列数据和行数据来自于视图查询所引用的实际表,引用视图时动态生成这些数据。
视图没有实际的物理记录,不是以数据集的形式存储在数据库中的,它所对应的数据实际上是存储在视图所引用的真实表中的。
视图是数据的窗口,而表是内容。表是实际数据的存放单位,而视图只是以不同的显示方式展示数据,其数据来源还是实际表。
视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些 SQL 语句的集合。从安全的角度来看,视图的数据安全性更高,使用视图的用户不接触数据表,不知道表结构。
视图的建立和删除只影响视图本身,不影响对应的基本表。
以上就是mysql视图有空间吗?的详细内容,更多请关注其它相关文章!
推荐阅读
-
文件大小和占用空间是一个概念吗? 两者有什么差别?
-
mysql - thinkphp中控制器的划分有什么规范吗?
-
我有一个免费空间,里面有PHP,MYSQL但不知道怎么使用
-
zend studio 的工作空间是干嘛用的?选择哪个目录有区别吗
-
请教在linux下mysql不支持视图吗
-
mysql-MySQL数据库能转换成SQLServer吗?我有一个MySQL的脚本文件怎么才能在SQLServer里操作
-
请教在linux下mysql不支持视图吗
-
mysql - thinkphp中控制器的划分有什么规范吗?
-
mysql 统计大数据缓慢有关问题,请教有啥解决办法吗
-
mysql 统计大数据缓慢有关问题,请教有啥解决办法吗