MySQL视图
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,前言:什么是视图?一张虚表,和真实的表一样。视图包含一系列带有名称的行和列数据。视图是从一个或多个表中导出来的,我们可以通过insert,update,delete来操作视图。当通过视图看到的数据被修
千家信息网最后更新 2024年11月23日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安全错误
数据库的锁怎样保障安全
养殖业环控系统软件开发
衢州软件开发需要学什么
腾讯云数据库如何授权账户
sql数据库备份方法有几种
手机更新数据库后怎么缓存
中国ai服务器总量
网络安全如何解决方案
多措施确保两会网络安全
数据库技术管理及人工支持
软件开发人员怎么招聘
忘川风华录怎么跨服务器加好友
怎么检测dbf数据库
如何建立数据库知识管理
服务器链路主备
武汉网络安全会
河北定制软件开发调试
数据中心服务器常见故障
部门信息数据库
ukey服务器设置
网络安全提案一览表
网络技术在降低营销成本上
西北大学软件开发技术学院
软件开发课程故事展板
2017年网络安全次新股
公需课专业网络技术
对数据库物理布局校验失败
水资源的使用数据库
网络安全产业联盟优秀会员
数据库创建视图对象名无效
计算机网络技术要什么电脑版