首页 > 【转】MYSQL入门学习之十:视图的基本操作

【转】MYSQL入门学习之十:视图的基本操作

转载地址:http://www.2cto.com/database/201212/176775.html

一、视图的基本介绍  www.2cto.com  
视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。
使用视图需要MySQL5及以后的版本支持。
下面是视图的一些常见应用:
重用SQL语句;
简化复杂的SQL操作;
使用表的组成部分而不是整个表;
保护数据;
更改数据格式和表示;
在视图创建之后,可以用与表基本相同的方式利用它们。
但对于大量的复杂或嵌套视图,性能可能下降得很厉害。因此在部署相应的应用前,应进行充分的测试。
二、使用视图的规则和限制
与表一样,视图必须唯一命名(不能给视图取与别的视图或表相同的名字);
对于可以创建的视图数目没有限制;
为了创建视图,必须具有足够的访问权限;
视图可嵌套;
ORDER BY可以用在视图中;
视图不能索引,也不能有关联的触发器或默认值;
视图可以和表一起使用;
三、使用视图
1、创建视图
create  view view_name
AS
select 语句
示例:
mysql> create or replace view v_pic_url
-> as
-> select
->     id,url
-> from v9_picture
-> where catid=17;
2、查看创建视图的语句
SHOW CREATE VIEW viewname;
示例:
mysql> show create view v_pic_url;
+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| View      | Create View                                                                                                                                                                                                     | character_set_client | collation_connection |
+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| v_pic_url | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_pic_url` AS select `v9_picture`.`id` AS `id`,`v9_picture`.`url` AS `url` from `v9_picture` where (`v9_picture`.`catid` = 17) | latin1               | latin1_swedish_ci    |
+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
3、删除视图
DROP VIEW viewname;
示例:
mysql> drop view v_pic_url;
4、更新视图结构
可以先将视图DROP,再使用CREATE语句创建;
也可以直接使用CREATE OR REPLACE VIEW语句;
四、更新视图数据
通常,视图是可更新的(即,可以对它们使用INSERT、UPDATE和DELETE)。更新一个视图将更新其基表。如果对视图增加或删除行,实际上是对其基表增加或删除行。
但是,并非所有视图都是可更新的。如果视图定义中有以下操作,则不能进行视图的更新:
分组(使用GROUP BY和HAVING);
联结;
子查询;
并;
聚焦函数;
DISTINCT;
导出(计算)列;
一般,应该将视图用于检索而不用于更新。

转载于:https://www.cnblogs.com/csshaw/p/3719067.html

更多相关:

  • 大多数Ios开发者都喜欢运用xib以及约束来布局,这样省去了大量初始化代码,但是xib的使用也是存在不少差异的:一.xib的几个重要属性xib的文件名File's ownerxib中的视图classxib文件中的视图Outlet指向二.Demo实现1.加载xib中File's owner为nil的视图blueView.pngViewC...

  • # 视图高级笔记:### `add_url_rule(rule,endpoint=None,view_func=None)`这个方法用来添加url与视图函数的映射。如果没有填写`endpoint`,那么默认会使用`view_func`的名字作为`endpoint`。以后在使用`url_for`的时候,就要看在映射的时候有没有传递`en...

  • UIView 1.为什么要UIView .可以用UIView作为容器,存放子视图 .管理事件UIEvent   2.ios坐标系 以左上角为坐标原点,向右边是x的正方向,向下是y的正向方 bounds: 相对于视图本身而言(0,0,w, h) frame:相对于父视图的坐标 center: 相对于父视图的中心点坐标   3.将一...

  • 最近项目中发现一怪问题,使用DB项目发布数据库时,总提示 “(110,1): SQL72014: .Net SqlClient Data Provider: Msg 1222, Level 16, State 56, Procedure sp_refreshsqlmodule_internal, Line 67 Lock reques...

  • nan 是not a number ,inf是无穷大 numpy.nan_to_num(x): 使用0代替数组x中的nan元素,使用有限的数字代替inf元素...

  • 简介 Simple Reference  基础CUDA示例,适用于初学者, 反映了运用CUDA和CUDA runtime APIs的一些基本概念.Utilities Reference  演示如何查询设备能力和衡量GPU/CPU 带宽的实例程序。Graphics Reference  图形化示例展现的是 CUDA, OpenGL,...

  • 在做开发的过程中难免需要给内核及下载的一些源码打补丁,所以我们先学习下Linux下使用如如何使用diff制作补丁以及如何使用patch打补丁。...

  • 我在调研ATS 4.2.3挂载SSD的过程中,遇到很多坑,特此详细记录我摸索的主要过程,以便大家以后避免之。 基本思路可以完全照搬参考文献[2][3] 下面的安装假定是以root用户身份进行的,Linux服务器已经安装好系统,磁盘已经做好分区。 首先需要认识我们的Linux服务器的硬件配置和软件情况 硬件配置: DELL...

  • 该博文整理一些在使用stl编程过程中遇到的小经验: 1.在多线程环境下面打印调试,如何使用cout及时刷新到屏幕上? 在C中我们经常这样使用: printf("Hello World "); fflush(stdout); 如果使用stl,我们可以这样使用: cout << "Hello World" << endl <...

  • Python的WEB框架有Django、Tornado、Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。本文将以下方面带大家全面了解Django框架,笔者使用的版本为1.10.流程基本配置路由系统视图view模板Model中间件Form认证...

  • 我知道这个错误已经被讨论了很多,但似乎每种情况都有不同的原因。我使用下面的代码和selenium从一个网站提取一些数据,并在第二次调用浏览器.get(url)。在import openpyxl, osfrom selenium import webdriveros.chdir('C://Users/user/Documents')os...

  •   onReady(){// #ifdef H5// 初始化微信 let url = location.href.split("#")[0];configWxMp({debug: false,jsApiList: ["scanQRCode"],url: this.config.apiList.wxMpConfig,data: {ur...

  • wget -S "http:/192.168.0.102:8080/cache/lookup_url?url=http://www.dnion.com/"...

  • 首先说一下业务需求: 需要在当前各主流浏览器上从tab标签形式弹出一个页面,尽量不要以单独窗口弹出。 下面是网上搜集并修改、验证后的js代码,以备以后参阅。 function getUnionCookie(B) {var A = new RegExp(B + "=([^;]+)"), _ = A.exec(document....