MySQL视图
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,前言:什么是视图?一张虚表,和真实的表一样。视图包含一系列带有名称的行和列数据。视图是从一个或多个表中导出来的,我们可以通过insert,update,delete来操作视图。当通过视图看到的数据被修
千家信息网最后更新 2025年11月06日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'\G4、修改视图
方式一:
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安全错误
数据库的锁怎样保障安全
excel软件开发有多少条代码
江苏省青少年网络安全竞赛
关于暑假网络安全
东营食品软件开发咨询
安全狗拦截 数据库修改
柯桥区网络安全
江阴hp服务器维修热线
美国检索数据库
OTIS服务器亮度调节
贵州广思网络技术有限公司
长沙一度教育软件开发培训
南京招聘用什么软件开发
加大网络安全监管
赣州市网络安全知识竞答4月
5gvr服务器
亳州金融软件开发定制
服务器图解介绍的作用
dota2总是搜索不到服务器
我的世界服务器要求
语音直播聊天软件开发
华为服务器视频教程
医保卡在数据库中重复
网络安全倡议书致青年朋友
powerdb数据库
软件开发产品经理面试题
软件开发注册哪一类
登录皖事通显示服务器失败
mac ssh 服务器
短视频软件开发公司
米锤各服务器价格