0

0

mysql 视图_MySQL

php中文网

php中文网

发布时间:2016-06-01 13:38:31

|

969人浏览过

|

来源于php中文网

原创

bitsCN.com

从为知笔记粘过来格式不太对,没有修改了
视图是从一个或者多个表中导出来的表,是一种虚拟存在的表,视图就像一个窗口,通过它可以看到系统专门提供的数据。视图可以使用户的操作方便,保证并且数据库系统的安全。 内容:视图的作用创建视图查看视图 修改视图更新视图删除视图 

视图简介

视图从已经存在的表中导出,还可以从已经存在的视图导出,数据库只保存视图的定义,而没有存放视图的数据。视图的数据还是保存在原来的表中。视图的数据依赖于原来的表,一旦原来的表发生改变,视图的数据也相应变化。 如果需要经常查询多个表的制定字段的数据,可以在这些表上建立一个视图 MySQL的视图不支持输入参数的功能。 视图的作用:可以起到筛选器的作用,那些对用户没有用或者用户没有权限了解的信息可以直接屏蔽掉,归纳为: 使操作简化,增加数据的安全性,提高表的逻辑独立性 

创建视图

mysql通过create view实现创建视图,语法:create [algorithm={undifined|merge|temptable}] view view_name [(properties)] as select * [with [CASCADED|LOCAL] check option]; 解析:algorithm是可选参数,表示视图选择的算法,undefined表示mysql自动选择算法,merge表示将使用视图的语句与视图定义合并,使视图的定义部分取代语句的对应部分,temptable表示视图的结构保存到临时表,然后使用临时表执行语句。view_name表示要创建的视图的名字。properties是可选参数,指定视图中各属性的名词,默认与select中查询的相同。select是一个完整的查询语句从某个表中查询某些满足条件的记录并导入视图中。with check option是可选参数,表示更新视图是要保证在视图的权限范围之内。 最好使用with cascaded check option参数 权限查询:在mysql数据库的user表中保存着权限信息,使用如下语句查询select select_priv, create_view_priv from mysql.user whrer user='username';其中‘username’是数据库用户的用户名。查询结果:mysql> select select_priv, create_view_priv from mysql.user where user = 'root';
+-------------+------------------+
| select_priv | create_view_priv |
+-------------+------------------+
| Y | Y |
| Y | Y |
+-------------+------------------+
2 rows in set (0.09 sec) 在单表创建视图: mysql> use login;
Database changed
mysql> select * from login;
+-----+----------+----------------------------------+
| uid | username | password |
+-----+----------+----------------------------------+
| 1 | test | 098f6bcd4621d373cade4e832627b4f6 |
| 2 | test1 | 5a105e8b9d40e1329780d62ea2265d8a |
| 3 | test2 | ad0234829205b9033196ba818f7a872b |
| 4 | user | ee11cbb19052e40b07aac0ca060c23ee |
| 5 | testk | f2fc2720249d97db37e2a5a3330baa4e |
+-----+----------+----------------------------------+
5 rows in set (0.05 sec)

mysql> create view login_view as select * from login where uid >= 2 and uid Query OK, 0 rows affected (0.12 sec)

mysql> desc login_view;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| uid | int(11) | NO | | 0 | |
| username | varchar(32) | NO | | NULL | |
| password | varchar(32) | NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.07 sec)

mysql> select * from login_view;
+-----+----------+----------------------------------+
| uid | username | password |
+-----+----------+----------------------------------+
| 2 | test1 | 5a105e8b9d40e1329780d62ea2265d8a |
| 3 | test2 | ad0234829205b9033196ba818f7a872b |
| 4 | user | ee11cbb19052e40b07aac0ca060c23ee |
+-----+----------+----------------------------------+
3 rows in set (0.04 sec) 在多表上建立视图在多表创建视图类似单表操作,只在select语句使用多表查询即可。

查看视图

1:使用desc语句2:show table status语句查询视图基本信息。 show table status like 'view_name'; mysql> show table status like 'login_view' /G;
*************************** 1. row ***************************
Name: login_view
Engine: NULL
Version: NULL
Row_format: NULL
Rows: NULL
Avg_row_length: NULL
Data_length: NULL
Max_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: VIEW 这条语句用于查看表信息:mysql> show table status like 'login' /G;
*************************** 1. row ***************************
Name: login
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 5
Avg_row_length: 3276
Data_length: 16384
Max_data_length: 0
Index_length: 16384
Data_free: 7340032
Auto_increment: 6
Create_time: 2012-10-28 18:28:57
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.01 sec) 从上面两个查询结构可以直观看出视图和表的区别。虽然show table status可以查看视图的基本信息,但是不推荐使用,因为能提供的信息太少。 3.show create view语句查看视图信息 mysql> show create view login_view /G;
*************************** 1. row ***************************
View: login_view
Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIE
W `login_view` AS select `login`.`uid` AS `uid`,`login`.`username` AS `username`,`login`.`password`
AS `password` from `login` where ((`login`.`uid` >= 2) and (`login`.`uid` character_set_client: gbk
collation_connection: gbk_chinese_ci
1 row in set (0.00 sec) 4:在view表中查看视图的详细信息。select * from information_schema.views /G; information_schema是mysql自带的一个数据库。查询结果如下:mysql> select * from information_schema.views /G;
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: login
TABLE_NAME: login_view
VIEW_DEFINITION: select `login`.`login`.`uid` AS `uid`,`login`.`login`.`username` AS `username`
,`login`.`login`.`password` AS `password` from `login`.`login` where ((`login`.`login`.`uid` >= 2) a
nd (`login`.`login`.`uid` CHECK_OPTION: NONE
IS_UPDATABLE: YES
DEFINER: root@localhost
SECURITY_TYPE: DEFINER
CHARACTER_SET_CLIENT: gbk
COLLATION_CONNECTION: gbk_chinese_ci
1 row in set (0.10 sec) 

修改视图

create or replace view语句与alter语句修改 1.create or replace view 语法:create or replace [algorithm={undefined|merge|temptable}] view view_name [(propertise)] as selecte * [with [cascaded|local] check option]; 有点像create view,create or replace在视图不存在的情况下创建视图,视图已存在则修改视图。 2.alter语句 alter [algorithm={undefined|merge|temptable}] view view_name [(propertise)] as selecte * [with [cascaded|local] check option];参数和create view相同。 

更新视图

update,注意不要写成updata。语法:update view_name set property_1=a[, property_2=b..]; 注意:更新会修改源表,而不只是修改视图,因为视图没有存储,实际操作都是针对源表。主键字段不能update。update会修改视图中的所有数据。 不能更新视图的情况
  1. 视图包含sum(),count(),max(),min()等函数。
  2. 视图包含union,union all,distinct,group by, having等关键字。
  3. 常量视图
  4. 创建视图的select语句包含select子句。
  5. 由不可更新的视图导出的视图。//视图可以继续导出视图。
  6. 创建视图是algorithm参数为temptable。
  7. 视图对应的表上没有默认值的列,并且该列不再视图里。
  8. 除此外with check option可能决定视图鞥否更新。

删除视图

删除视图时只删除视图的定义,而不删除视图源表的数据。语法:drop view [if exits] view_name_list [restrict|cascad];解析: if exits判断视图是否存在,存在则执行删除,不存在则不执行。 可以一次删除多个视图。mysql> drop view if exits login_view;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'exits login_view' at line 1
mysql> drop view if exists login_view;
Query OK, 0 rows affected (0.00 sec)

mysql> desc login_view;
ERROR 1146 (42S02): Table 'login.login_view' doesn't exist 删除视图需要权限允许。查看是否有删除权限的命令:select Drop_priv from mysql.user where user='username'; 结果为:mysql> select drop_priv from mysql.user where user = 'root';
+-----------+
| drop_priv |
+-----------+
| Y |
| Y |
+-----------+
2 rows in set (0.00 sec)bitsCN.com

相关专题

更多
苹果官网入口直接访问
苹果官网入口直接访问

苹果官网直接访问入口是https://www.apple.com/cn/,该页面具备0.8秒首屏渲染、HTTP/3与Brotli加速、WebP+AVIF双格式图片、免登录浏览全参数等特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

115

2025.12.24

拼豆图纸在线生成器
拼豆图纸在线生成器

拼豆图纸生成器有PixelBeads在线版、BeadGen和“豆图快转”;推荐通过pixelbeads.online或搜索“beadgen free online”直达官网,避开需注册的诱导页面。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

82

2025.12.24

俄罗斯搜索引擎yandex官方入口地址(最新版)
俄罗斯搜索引擎yandex官方入口地址(最新版)

Yandex官方入口网址是https://yandex.com。用户可通过网页端直连或移动端浏览器直接访问,无需登录即可使用搜索、图片、新闻、地图等全部基础功能,并支持多语种检索与静态资源精准筛选。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

546

2025.12.24

JavaScript ES6新特性
JavaScript ES6新特性

ES6是JavaScript的根本性升级,引入let/const实现块级作用域、箭头函数解决this绑定问题、解构赋值与模板字符串简化数据处理、对象简写与模块化提升代码可读性与组织性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

150

2025.12.24

php框架基础知识汇总
php框架基础知识汇总

php框架是构建web应用程序的架构,提供工具和功能,以简化开发过程。选择合适的框架取决于项目需求和技能水平。实战案例展示了使用laravel构建博客的步骤,包括安装、创建模型、定义路由、编写控制器和呈现视图。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

20

2025.12.24

Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

47

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

7

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

12

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

371

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 5.9万人学习

Git 教程
Git 教程

共21课时 | 2.2万人学习

Django 教程
Django 教程

共28课时 | 2.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号