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 解压后 ...
随机推荐
- 消息中间件--kafka(1)安装部署
一.概念 1.什么是kafka Kafka是由Apache软件基金会开发的一个开源的分布式流处理平台,由LinkedIn公司开发,使用 Scala和Java编写.Kafka是一个分布式.分区的.多副本 ...
- C++ Arrays, std::array, std::vector 总结
原文来自: https://shendrick.net/Coding%20Tips/2015/03/15/cpparrayvsvector.html @Seth Hendrick Original a ...
- 装sqlserver2005驱动解决firedac连接sql2000问题
装了sqlserver2005驱动, 系统里装的sqlserver2012也能连上sql2000了. 当然firedac连sql2000也没问题了.设置个ODBCAdvanced为SQL Native ...
- [转] C++ 的关键字(保留字)完整介绍
转载至:https://www.runoob.com/w3cnote/cpp-keyword-intro.html 1. asm asm (指令字符串):允许在 C++ 程序中嵌入汇编代码. 2. a ...
- 【bzoj2763】[JLOI2011]飞行路线
*题目描述: Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一 ...
- Python模块之-OS模块
一.os模块概述 Python os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.(一语中的) 二.常用方法 1.os.name 输出字符串指示正在使用的平台 ...
- codeforces#403—B题(二分,三分)
B. The Meeting Place Cannot Be Changed time limit per test 5 seconds memory limit per test 256 megab ...
- SWPUCTF2019 | Network
这题真的就靠百度的,第一次接触TTL型的misc,直接拿了一个大佬的脚本,改了一丢丢: with open('t.txt') as f: lines = f.readlines() n_num = [ ...
- [CSP-S模拟测试]:666(模拟)
题目描述 不忘初心. 小$\pi$假期在家无聊,打开了某弹幕直播网站. 突然,有一个精彩的镜头. 小$\pi$看到了满屏的$6$,其中,有$666$.也有$666666$.也有$6666666666. ...
- [LeetCode]-DataBase-Department Highest Salary
The Employee table holds all employees. Every employee has an Id, a salary, and there is also a colu ...