MySQL-快速入门(9)视图
1、什么是视图
视图是一个虚表。视图可以进行查询、增加、修改、删除。进行修改、增加、删除,将影响基本表中的数据。
2、视图相对基本表的优势
1》简单化:看到的就是想要的字段列,可以简化后续查询。
2》安全性:通过视图用户只能查询和修改他们所能看到的数据。
3》逻辑数据独立性:屏蔽基本表结构变化带来的影响。
3、创建视图
//1、algorithm表示视图选择的算法,undefined表示MySQL自动选择算法;merge表示将使用的视
//图语句与视图定义合并起来,使得视图定义的某一部分取代语句对应的部分;temptable表示将
//视图的结果存入临时表,然后用临时表来执行语句。
//2、[with [cascaded | local] check option]表示视图在更新时保证在视图的权限范围之内
//cascaded与local为可选参数,cascaded为默认值,表示更新视图时要满足所有相关视图和表
//的条件;local表示更新视图时满足该视图本身定义的条件即可。
//3、创建的视图默认属于当前数据库,如果要创建属于其他数据库的视图,则db_name.view_name
create [or replace] [algorithm = {undefined | merge | temptable}]
view view_name [(column_list)]
as select_statement
[with [cascaded | local] check option]
1》在单表上创建视图,可以给视图指定不同的字段名,创建的时候会与基本表对齐。
mysql> create view v_test as select * from test;
Query OK, 0 rows affected (0.00 sec) mysql> select * from v_test;
+----+-------+--------+--------+----------+------+
| id | name | deptId | salary | t_time | str |
+----+-------+--------+--------+----------+------+
| 1 | Lucy | NULL | 1000 | 10:28:33 | NULL |
| 2 | Lura | NULL | 1200 | 10:28:33 | NULL |
| 3 | Kevin | NULL | 1500 | 10:28:33 | NULL |
| 4 | Nancy | NULL | 1000 | 22:08:38 | NULL |
| 5 | Bob | NULL | 1200 | 22:08:38 | NULL |
+----+-------+--------+--------+----------+------+
5 rows in set (0.01 sec) mysql> desc v_test;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(10) | NO | | 0 | |
| name | varchar(25) | NO | | NULL | |
| deptId | int(11) | YES | | NULL | |
| salary | float | YES | | NULL | |
| t_time | time | YES | | NULL | |
| str | varchar(4) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec) mysql> desc test;
+--------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+----------------+
| id | int(10) | NO | PRI | NULL | auto_increment |
| name | varchar(25) | NO | | NULL | |
| deptId | int(11) | YES | | NULL | |
| salary | float | YES | | NULL | |
| t_time | time | YES | | NULL | |
| str | varchar(4) | YES | | NULL | |
+--------+-------------+------+-----+---------+----------------+
6 rows in set (0.00 sec) mysql>
2》在多表上创建视图,基本同单表的操作。
3》查看视图:权限show view;方法有describe、show table status、show create view、views表中查询视图信息。
1>describe / desc
describe / desc view_name;
2>show table status
show table status like 'view_name';
3>show create view
show create view view_name;
4>views表中查询视图信息
select * from information_schema.views;
mysql> select * from information_schema.views where table_name='v_test' \G
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: mybatis
TABLE_NAME: v_test
VIEW_DEFINITION: select `mybatis`.`test`.`id` AS `id`,`mybatis`.`test`.`nam
e` AS `name`,`mybatis`.`test`.`deptId` AS `deptId`,`mybatis`.`test`.`salary` AS
`salary`,`mybatis`.`test`.`t_time` AS `t_time`,`mybatis`.`test`.`str` AS `str` f
rom `mybatis`.`test`
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.00 sec) mysql>
4、修改视图,两种方式
1》create or replace view
//与创建视图的语句格式一致
create [or replace] [algorithm ={undefined | merge | temptable}]
view view_name [(column_list)]
as select_statement
[with [cascaded | local] check option]
2》使用alter语句修改
alter [algorithm ={undefined | merge | temptable}]
view view_name [(column_list)]
as select_statement
[with [cascaded | local] check option]
5、更新视图
1》insert
insert into view_name ...
2》delete
delete from view_name ...
3》update
update view_name set ...
当视图包含如下内容时,视图的更新操作将不能被执行:
1>>视图中不包含基表中被定义为非空的列。
2>>在定义视图的select语句后的字段列表中使用使用了数学表达式。
3>>在定义视图的select语句后的字段列表中使用聚合函数。
4>>在定义视图的select语句中使用了distict、union、top、group by或having子句。
6、删除视图
drop view [if exists]
view_name [,view_name] ...
[restrict | cascade]
MySQL-快速入门(9)视图的更多相关文章
- MySql基础笔记(一)Mysql快速入门
Mysql快速入门 一)基本概念 1)表 行被称为记录,是组织数据的单位.列被称为字段,每一列表示记录的一个属性. 2)主键 主键用于唯一的标识表中的每一条记录.可以定义表中的一列或者多列为主键, 但 ...
- MySQL 快速入门教程
转:MySQL快速 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数据 ...
- MySQL 快速入门(一)
目录 MySQL快速入门 简介 存储数据的演变过程 数据库分类 概念介绍 MySQL安装 MySQL命令初始 环境变量配置 MySQL环境变量配置 修改配置文件 设置新密码 忘记密码的情况 基本sql ...
- MySQL快速入门(二)
目录 MySQL快速入门(二) 约束条件 自增 自增的特性 主键 外键 级联更新/删除 表与表之间的关系 外键约束 操作表方法 查询关键字 练习数据 select··from where 筛选 gro ...
- SQL快速入门 ( MySQL快速入门, MySQL参考, MySQL快速回顾 )
SQL 先说点废话,很久没发文了,整理了下自己当时入门 SQL 的笔记,无论用于入门,回顾,参考查询,应该都是有一定价值的,可以按照目录各取所需.SQL数据库有很多,MySQL是一种,本文基本都是SQ ...
- Mysql快速入门(看完这篇能够满足80%的日常开发)
这是一篇mysql的学习笔记,整理结合了网上搜索的教程以及自己看的视频教程,看完这篇能够满足80%的日常开发了. 菜鸟教程:https://www.runoob.com/mysql/mysql-tut ...
- 阿里云RDS for MySQL 快速入门——笔记
1初始化配置 1.1设置白名单 创建RDS实例后,需要设置RDS实例的白名单,以允许外部设备访问该RDS实例.默认的白名单只包含默认IP地址127.0.0.1,表示任何设备均无法访问该RDS实例. 设 ...
- MySQL快速入门及常用命令
数据库 笔记内容 SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL. 1. 数据查询语言DQL 数据查询语言DQL基本结构是由SELECT子句,F ...
- Mysql快速入门(三)
MySQL性能优化之查看执行计划explain 介绍: (1).MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发 ...
- mysql快速入门
一.下载并解压 $ wget http://cdn.mysql.com/Downloads/MySQL-5.5/MySQL-5.5.42-1.el6.x86_64.rpm-bundle.tar 解压后 ...
随机推荐
- Ubuntu中linux虚拟机全屏
登录客户机操作系统.在虚拟机中装载CD驱动器启动终端,使用tar解压缩安装程序,然后执行vmware-insall.pl安装VMware Tools. 1.进入文件界面,找到左侧“设备”右击“安装VM ...
- pt-align的用法简要记录
pt-align的用法简要记录 1.pt-align 功能:将其它工具的输出按列对齐用法:pt-align [FILES]如果没有指定文件,则默认读取标准输入的内容. 2.例如: [root@dbte ...
- windows补丁服务器
一.WSUS 安装要求 1.硬件要求: 对于多达 13000 个客户端的服务器,建议使用以下硬件:* 4 Core E5-2609 2.1GHz 的处理器* 8 GB 的 RAM 2.软件要求: 要使 ...
- springboot 在idea中实现热部署
SpringBoot的web项目,在每一次修改了java文件或者是resource的时候,都必须去重启一下项目,这样的话浪费了很多的时间,实现了热部署,在每一次作了修改之后,都会自动的重启 第一步:引 ...
- python list颠倒写法
a=[1,2,3,4] a[::-1] ...... [4,3,2,1]
- 第九周作业—N42-虚怀若谷
一.编写脚本,接收二个位置参数,magedu和/www,判断系统是否有magedu,如果没有则自动创建magedu用户,并自动设置家目录为/www [root@centos7 data]# cat u ...
- XML 简介 – 什么是 XML?
XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. XML 很重要,也很容易学习. <?xml version="1 ...
- Maven Waring : GroupId is duplicate of parent groupId 和 Version is duplicate of parent version
问题描述: 新项目在创建的时候,因为用到了分模块的,所以导致子模块的pom文件,报了 如下警告: 解决办法: 直接 Window --> Preferences --> Maven -- ...
- React 初试
小Demo, 后面会进行拓展的 import React from 'react'; import ReactDOM from 'react-dom'; class Welcome extends R ...
- 【bzoj1189】[HNOI2007]紧急疏散evacuate
*题目描述: 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域.每个格子如果是’.’,那么表示这是一块空地:如果是’X’,那么表示这是一面墙,如果是’D’,那么表示这是一扇门,人们 ...