MySQL 视图
目录
一、视图概述
二、视图的作用和优点
三、视图的使用规则
四、视图操作
1、创建视图
2、查看视图
1)查看视图基本信息
2)查看视图详细信息
3、修改视图
4、更新视图
5、删除视图
一、视图概述
视图是数据库中的一个虚拟表,同真实表一样,视图包含一系列带有名称的行和列数据。
视图是从一个或者多个表中导出来的,视图的行为与表非常相似,在视图中,用户可以使用SELECT、INSERT、UPDATE、DELETE等语句。从MySQL5.0开始就可以使用视图,视图可以使用户操作方便,而且可以保障数据库系统的安全性。视图其实没有存储任何数据,它只是对表的一个查询,视图的定义保存在数据字典内,创建视图所基于的表叫做‘基表’。
二、视图的作用和优点
作用:控制安全、保存查询数据
优点:提供了灵活一致级别安全性、隐藏了数据的复杂性、简化了用户的SQL指令、通过重命名列,从另一个角度提供数据。
三、视图的使用规则
1、视图名必须有唯一的命名;
2. 在mysql中视图的数量没有限制;
3. 创建视图必须从管理员那里获得必要的权限;
4. 视图支持嵌套,也就是说可以利用其他视图检索出来的数据创建新的视图;
5. 在视图中可以使用OREDR BY,但是如果视图内已经使用该排序子句,则视图的ORDER BY将覆盖前面的 ORDER BY;
6. 视图不能索引,也不能关联触发器或默认值;
7. 视图可以和表同时使用。
四、视图操作
1、创建视图
基本语法
create [or replace] [algorithm = {undefined | merge | temptable}]
view 视图名 [字段列表] as 查询语句
[with [cascaded | local] check option]
例如:
mysql> create view view_emp3 as select * from emp3;
Query OK, 0 rows affected (0.00 sec)mysql> show tables;
+-----------------+
| Tables_in_mydb3 |
+-----------------+
| dept3 |
| emp3 |
| view_emp3 |
+-----------------+
3 rows in set (0.00 sec)mysql> select * from view_emp3;
+-----+--------------+------+---------+
| eid | ename | age | dept_id |
+-----+--------------+------+---------+
| 1 | 乔峰 | 20 | 1001 |
| 10 | 丁春秋 | 71 | 1005 |
| 2 | 段誉 | 21 | 1001 |
| 3 | 虚竹 | 23 | 1001 |
| 4 | 阿紫 | 18 | 1001 |
| 5 | 扫地僧 | 85 | 1002 |
| 6 | 李秋水 | 33 | 1002 |
| 7 | 鸠摩智 | 50 | 1002 |
| 8 | 天山童姥 | 60 | 1003 |
| 9 | 慕容博 | 58 | 1003 |
+-----+--------------+------+---------+
10 rows in set (0.03 sec)
2、查看视图
1)查看视图基本信息
语法1
describe 视图名;
例如
mysql> describe view_emp3;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| eid | varchar(20) | NO | | NULL | |
| ename | varchar(20) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| dept_id | varchar(20) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
语法2
show table status like '视图名' \G
例如
mysql> show table status like 'view_emp3' \G
*************************** 1. row ***************************Name: view_emp3Engine: NULLVersion: NULLRow_format: NULLRows: NULLAvg_row_length: NULLData_length: NULL
Max_data_length: NULLIndex_length: NULLData_free: NULLAuto_increment: NULLCreate_time: NULLUpdate_time: NULLCheck_time: NULLCollation: NULLChecksum: NULLCreate_options: NULLComment: VIEW
1 row in set (0.00 sec)
2)查看视图详细信息
语法
show create view 视图名;
例如
mysql> show create view view_emp3;
+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| View | Create View | character_set_client | collation_connection |
+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| view_emp3 | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `view_emp3` AS select `emp3`.`eid` AS `eid`,`emp3`.`ename` AS `ename`,`emp3`.`age` AS `age`,`emp3`.`dept_id` AS `dept_id` from `emp3` | utf8 | utf8_general_ci |
+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
1 row in set (0.00 sec)
3、修改视图
语法1
create [or replace] [algorithm = {undefined | merge | temptable}]
view 视图名 [字段列表] as 查询语句
[with [cascaded | local] check option]
语法2
alter [algorithm = {undefined | merge | temptable}]
view 视图名 [字段列表] as 查询语句
[with [cascaded | local] check option]
例如
mysql> alter view view_emp3 as select eid,ename from emp3;
Query OK, 0 rows affected (0.01 sec)
#修改后查看表基本信息
mysql> desc view_emp3;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| eid | varchar(20) | NO | | NULL | |
| ename | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
4、更新视图
语法
#更新数据
update 视图名 set 字段名1=值1,…… [where <条件>];
#插入数据
insert into 视图名 [字段名列表] values (字段1值,字段2值,……) [,(字段1值,字段2值,……)……];
#删除数据
delete from 视图名 [where <条件>];
例如
#更新数据前查看表数据
mysql> select * from view_emp3;
+-----+--------------+
| eid | ename |
+-----+--------------+
| 1 | 乔峰 |
| 10 | 丁春秋 |
| 2 | 段誉 |
| 3 | 虚竹 |
| 4 | 阿紫 |
| 5 | 扫地僧 |
| 6 | 李秋水 |
| 7 | 鸠摩智 |
| 8 | 天山童姥 |
| 9 | 慕容博 |
+-----+--------------+
10 rows in set (0.00 sec)#修改数据 eid=10 的记录ename为‘张三’
mysql> update view_emp3 set ename='张三' where eid=10;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0#插入一个数据eid=20 ename='李四'的数据
mysql> insert into view_emp3 values (20,'李四');
Query OK, 1 row affected (0.00 sec)#更新数据后进行查看
mysql> select * from view_emp3;
+-----+--------------+
| eid | ename |
+-----+--------------+
| 1 | 乔峰 |
| 10 | 张三 |
| 2 | 段誉 |
| 20 | 李四 |
| 3 | 虚竹 |
| 4 | 阿紫 |
| 5 | 扫地僧 |
| 6 | 李秋水 |
| 7 | 鸠摩智 |
| 8 | 天山童姥 |
| 9 | 慕容博 |
+-----+--------------+#删除eid=20的数据
mysql> delete from view_emp3 where eid=20;
Query OK, 1 row affected (0.00 sec)#删除后再进行查看
mysql> select * from view_emp3;
+-----+--------------+
| eid | ename |
+-----+--------------+
| 1 | 乔峰 |
| 10 | 张三 |
| 2 | 段誉 |
| 3 | 虚竹 |
| 4 | 阿紫 |
| 5 | 扫地僧 |
| 6 | 李秋水 |
| 7 | 鸠摩智 |
| 8 | 天山童姥 |
| 9 | 慕容博 |
+-----+--------------+
10 rows in set (0.00 sec)
5、删除视图
语法
drop view [if exists] 视图视 [,视图名] …… [restrict | cascade];
例如
#删除前先查看存在的表
mysql> show tables;
+-----------------+
| Tables_in_mydb3 |
+-----------------+
| dept3 |
| emp3 |
| view_emp3 |
+-----------------+
3 rows in set (0.00 sec)#删除视图view_emp3
mysql> drop view view_emp3;
Query OK, 0 rows affected (0.00 sec)#删除后再进行查看
mysql> show tables;
+-----------------+
| Tables_in_mydb3 |
+-----------------+
| dept3 |
| emp3 |
+-----------------+
2 rows in set (0.00 sec)
参考书籍:MySQL5.7从入门到精通-清华大学出版社
相关文章:
MySQL 视图
目录 一、视图概述 二、视图的作用和优点 三、视图的使用规则 四、视图操作 1、创建视图 2、查看视图 1)查看视图基本信息 2)查看视图详细信息 3、修改视图 4、更新视图 5、删除视图 一、视图概述 视图是数据库中的一个虚拟表,同真…...
深入理解回调函数qsort:从入门到模拟实现
🍁博客主页:江池俊的博客 💫收录专栏:C语言进阶之路 💡代码仓库:江池俊的代码仓库 🎪我的社区:GeekHub 🎉欢迎大家点赞👍评论📝收藏⭐ 文章目录 前…...
【Git基础】获取远程仓库
我们通常从远程服务器克隆一个Git仓库或者将本地仓库初始化为Git仓库。 1 从远程服务器克隆一个Git仓库 $ git clone https://github.com/your-username/your-repo-name你可以自定义其仓库名称: $ git clone https://github.com/your-username/your-repo-name cu…...
chatGPT界面
效果图: 代码: <!DOCTYPE html> <html> <head><title>复选框样式示例</title> </head> <style>* {padding:0;margin: 0;}.chatpdf{display: flex;height: 100vh;flex-direction: row;}.chatpdf .pannel{widt…...
windows一键启动jupyter
windows一键启动jupyter jupyter简介 Jupyter是一个开源的交互式计算环境,主要用于数据分析、数据可视化和科学计算。它的名字来源于三种编程语言的缩写:Julia、Python和R,这三种语言都可以在Jupyter环境中运行。如果您想进行数据分析、科学…...
树形结构的快速生成
背景 相信大家都遇到过树形结构,像是文件列表、多级菜单、评论区的设计等等,我们都发现它有很多层级,第一级可以有多个,下边的每一个层级也可以有多个;有的可以设计成无限层级的,有的只能设计成两级。那么…...
Android笔记(二十七):自定义Dialog实现居中Toast
背景 记录实现符合项目需求的Toast弹窗 具体实现 class MyTipDialog private constructor(val context: Activity): Dialog(context, R.style.MyTipTheme) {val resId ObservableField(0)private val mainHandler Handler(Looper.getMainLooper())init {setCanceledOnTouc…...
css实现文字的渐变,适合大屏
1 在全局写一个全局样式,文字渐变 2 在组件中使用 CSS3利用-webkit-background-clip: text;实现文字渐变效果_css如何把盒子底部的文字变成透明渐变_I俩月亮的博客-CSDN博客 CSS 如何实现文字渐变色 ?_css字体颜色渐变_一个水瓶座程序猿.的博客-CSDN博客…...
软考高级系统架构设计师系列论文八十七:论企业应用集成
软考高级系统架构设计师系列论文八十七:论企业应用集成 一、企业应用集成相关知识点二、摘要三、正文四、总结一、企业应用集成相关知识点 软考高级系统架构设计师系列之:企业集成平台技术的应用和架构设计二、摘要 本文讨论了某公司的应用系统集成项目。某公司为了应对市场变…...
C++设计模式之适配器模式
一、适配器模式 适配器模式(Adapter Pattern)是一种结构型设计模式,用于将一个类的接口转换成另一个类所期望的接口,以便两个类能够协同工作。 适配器模式可以解决现有类接口与所需接口不匹配的问题,使得原本因接口不…...
山西电力市场日前价格预测【2023-08-24】
日前价格预测 预测明日(2023-08-24)山西电力市场全天平均日前电价为319.98元/MWh。其中,最高日前电价为370.78元/MWh,预计出现在19: 30。最低日前电价为272.42元/MWh,预计出现在12: 45。 价差方向预测 1: 实…...
一文速学-让神经网络不再神秘,一天速学神经网络基础(一)
前言 思索了很久到底要不要出深度学习内容,毕竟在数学建模专栏里边的机器学习内容还有一大半算法没有更新,很多坑都没有填满,而且现在深度学习的文章和学习课程都十分的多,我考虑了很久决定还是得出神经网络系列文章,…...
百度Q2财报:营收341亿元实现加速增长,净利润高速增长44%,增长强劲全线重构
北京时间8月22日,百度发布了截至2023年6月30日的第二季度未经审计的财务报告。第二季度,百度实现营收341亿元,同比增长15%;归属百度的净利润(non-GAAP)达到80亿元,同比增长44%。营收和利润双双实…...
ARM DIY(二)配置晶振频率
文章目录 前言串口乱码问题定位内核修改晶振频率uboot 修改晶振频率番外篇 前言 上篇文章《ARM DIY 硬件调试》介绍了 DIY ARM 板的基础硬件焊接,包括电源、SOC、SD 卡座等,板子已经可以跑起来了。 但是发现串口乱码,今天就来解决串口乱码问…...
高等数学:线性代数-第三章
文章目录 第3章 矩阵的初等变换与线性方程组3.1 矩阵的初等变换3.2 矩阵的秩3.3 方程组的解 第3章 矩阵的初等变换与线性方程组 3.1 矩阵的初等变换 矩阵的初等变换 下面三种变换称为矩阵的初等变换 对换两行(列),记作 r i ↔ r j ( c i …...
深入理解 SQL 注入攻击原理与防御措施
系列文章目录 文章目录 系列文章目录前言一、SQL 注入的原理二、防御 SQL 注入攻击的措施1. 使用参数化查询2.输入验证与过滤3.最小权限原则4.不要动态拼接 SQL5.ORM 框架6.转义特殊字符三、实例演示总结前言 SQL 注入是一种常见的网络攻击方式,攻击者通过在输入框等用户交互…...
QT5.12.12通过ODBC连接到GBase 8s数据库(CentOS)
本示例使用的环境如下: 硬件平台:x86_64(amd64)操作系统:CentOS 7.8 2003数据库版本(含CSDK):GBase 8s V8.8 3.0.0_1 为什么使用QT 5.12.10?该版本包含QODBC。 1&#…...
爱校对发布全新PDF校对工具,为用户带来更为便捷的校正体验
随着数字化文档使用的普及,PDF格式已经成为最为广泛使用的文件格式之一。为满足广大用户对于高效、准确PDF文档校对的需求,爱校对团队经过深入研发,正式推出全新的PDF校对工具! 这一全新工具针对PDF文件格式进行了深度优化&#…...
记录protocol buffers Mac安装
使用brew安装最新的protobuf 在Mac 上安装,使用brew 可以安装最新的protobuf。这个也比较简单,简单说一下。 首先先检查一下是否安装了brew。如果没有安装brew的话,请先安装brew.可以通过brew --version来检查 使用brew install protobuf 来…...
基于Jenkins自动打包并部署docker、PHP环境,ansible部署-------从小白到大神之路之学习运维第86天
第四阶段提升 时 间:2023年8月23日 参加人:全班人员 内 容: 基于Jenkins部署docker、PHP环境 目录 一、环境部署 (一)实验环境,服务器设置 (二)所有主机关闭防火墙和selinu…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
