MySQL视图
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,前言:什么是视图?一张虚表,和真实的表一样。视图包含一系列带有名称的行和列数据。视图是从一个或多个表中导出来的,我们可以通过insert,update,delete来操作视图。当通过视图看到的数据被修
千家信息网最后更新 2025年01月19日MySQL视图
前言:
什么是视图?
一张虚表,和真实的表一样。视图包含一系列带有名称的行和列数据。视图是从一个或多个表中导出来的,我们可以通过insert,update,delete来操作视图。当通过视图看到的数据被修改时,相应的原表的数据也会变化。同时原表发生变化,则这种变化也可以自动反映到视图中。
视图具有以下优点:
- 简单化:看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化操作。经常被使用的查询可以制作成一个视图;
- 安全性:通过视图用户只能查询和修改所能见到的数据,数据库中其他的数据既看不见也取不到。数据库授权命令可以让每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定的行,列上;
- 逻辑数据独立性:视图可帮助用户屏蔽真实表结构变化带来的影响。
视图和表的区别以及联系是什么?
两者的区别:
- 视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化的表,而表不是;
- 视图没有实际的物理记录,而表有;
- 表是内容,视图窗口;
- 表和视图虽然都占用物理空间,但是视图只是逻辑概念存在,而表可以及时对数据进行修改,但是视图只能用创建语句来修改 ;
- 视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL 语句的集合。从安全角度来说,视图可以防止用户接触数据表,因而不知道表结构 ;
- 表属于全局模式中的表,是实表。而视图属于局部模式的表,是虚表;
- 视图的建立和删除只影响视图本身,而不影响对应表的基本表。
两者的联系:
视图是在基本表之上建立的表,它的结构和内容都来自于基本表,它依赖基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本的抽象和逻辑意义上建立的关系。
一、创建视图
1、创建单表视图
mysql> create table t(quantity int,price int); Query OK, 0 rows affected (0.01 sec)mysql> insert into t values(3,50); Query OK, 1 row affected (0.00 sec)mysql> create view view_t as select quantity,price,quantity*price as tottal from t;Query OK, 0 rows affected (0.01 sec)mysql> select * from view_t; +----------+-------+-------+| quantity | price | total |+----------+-------+-------+| 3 | 50 | 150 |+----------+-------+-------+1 row in set (0.00 sec)
2、创建多表视图
mysql> create table student -> ( -> s_id int(3) primary key, -> s_name varchar(30), -> s_age int(3), -> s_sex varchar(8) -> );Query OK, 0 rows affected (0.01 sec)mysql> create table stu_info -> ( -> s_id int(3), -> class varchar(50), -> addr varchar(100) -> );Query OK, 0 rows affected (0.01 sec)mysql> insert into stu_info values -> (1,'erban','anhui'), -> (2,'sanban','chongqing'), -> (3,'yiban','shangdong');mysql> create view stu_class(id,name,class) as -> select student.s_id,student.s_name,stu_info.class -> from student,stu_info where student.s_id=stu_info.s_id;
3、查看视图的相关信息
mysql> desc stu_class;+-------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id | int(3) | NO | | NULL | || name | varchar(30) | YES | | NULL | || class | varchar(50) | YES | | NULL | |+-------+-------------+------+-----+---------+-------+3 rows in set (0.00 sec)mysql> show table status like 'stu_class'\G*************************** 1. row *************************** Name: stu_class Engine: NULL Version: NULL Row_format: NULL Rows: NULL Avg_row_length: NULL Data_length: NULLMax_data_length: NULL Index_length: NULL Data_free: NULL Auto_increment: NULL Create_time: NULL Update_time: NULL Check_time: NULL Collation: NULL Checksum: NULL Create_options: NULL Comment: VIEW1 row in set (0.01 sec)mysql> show create view stu_class\G*************************** 1. row *************************** View: stu_class Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `stu_class` AS select `student`.`s_id` AS `id`,`student`.`s_name` AS `name`,`stu_into`.`class` AS `class` from (`student` join `stu_into`) where (`student`.`s_id` = `stu_into`.`s_id`)character_set_client: utf8collation_connection: utf8_general_ci1 row in set (0.00 sec)mysql> select * from information_schema.views where TABLE_SCHEMA='test02'\G
4、修改视图
方式一:
mysql> create or replace view view_t as select * from t;Query OK, 0 rows affected (0.00 sec)mysql> select * from view_t; +----------+-------+| quantity | price |+----------+-------+| 3 | 50 |+----------+-------+1 row in set (0.00 sec)
方式二:
mysql> alter view view_t(abc) as select quantity from t; Query OK, 0 rows affected (0.00 sec)mysql> desc view_t; +-------+---------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+---------+------+-----+---------+-------+| abc | int(11) | YES | | NULL | |+-------+---------+------+-----+---------+-------+1 row in set (0.00 sec)
5、更新视图
1)update指令更新
mysql> select * from t;+----------+-------+| quantity | price |+----------+-------+| 3 | 50 |+----------+-------+1 row in set (0.00 sec)mysql> select * from view_t;+------+| abc |+------+| 3 |+------+1 row in set (0.00 sec)mysql> update view_t set abc=5;Query OK, 1 row affected (0.01 sec)Rows matched: 1 Changed: 1 Warnings: 0mysql> select * from view_t; +------+| abc |+------+| 5 |+------+1 row in set (0.00 sec)mysql> select * from t; +----------+-------+| quantity | price |+----------+-------+| 5 | 50 |+----------+-------+1 row in set (0.00 sec)
2)insert指令更新
mysql> select * from t; +----------+-------+| quantity | price |+----------+-------+| 5 | 50 |+----------+-------+1 row in set (0.00 sec)mysql> select * from view_t; +------+| abc |+------+| 5 |+------+1 row in set (0.00 sec)mysql> insert into t values(3,5); Query OK, 1 row affected (0.00 sec)mysql> select * from view_t; +------+| abc |+------+| 5 || 3 |+------+2 rows in set (0.00 sec)mysql> select * from t; +----------+-------+| quantity | price |+----------+-------+| 5 | 50 || 3 | 5 |+----------+-------+2 rows in set (0.00 sec)
3) delete指令删除表数据
mysql> create view view_t2(qty,price,total) as select quantity,price,quantity*price from t;mysql> select * from view_t2; +------+-------+-------+| qty | price | total |+------+-------+-------+| 5 | 50 | 250 || 3 | 5 | 15 |+------+-------+-------+2 rows in set (0.00 sec)mysql> delete from view_t2 where price=5; Query OK, 1 row affected (0.00 sec)mysql> select * from view_t2; +------+-------+-------+| qty | price | total |+------+-------+-------+| 5 | 50 | 250 |+------+-------+-------+1 row in set (0.00 sec)mysql> select * from t; +----------+-------+| quantity | price |+----------+-------+| 5 | 50 |+----------+-------+1 row in set (0.00 sec)
6、删除视图
mysql> drop view view_t;
视图
数据
数据库
用户
语句
变化
指令
数据表
结构
逻辑
影响
更新
查询
安全
内容
只是
方式
模式
物理
联系
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
新建县软件开发培训班
大学生如何了解网络安全
三面隔离 网络安全
用友服务器已启动连接失败
信息战关于网络安全方面举例
服务器的租用哪家比较好
gp数据库成本
python安装和数据库
软件开发研究生学校
服务器针同步
数据库文本导入工具
小学一年级网络安全图片
网络安全设备图例下载
山西曙光服务器续保调试
宣扬网络安全的目的
智业软件开发怎么样
暗黑2重制服务器怎么样
软件开发价钱评估
数据库在日常生活中的作用
网易网盾网络安全云平台
服务器网卡有新的吗
奉贤区常规软件开发销售价格
云服务器运行不了bat
网络安全培训机构哪个好一点
济宁网络安全公司
湘潭网络安全系统厂家
长沙天迹网络技术
闵行区手机软件开发流程
广州御途网络技术有限公司
360安全服务器设置