MySQL数据库基础之视图及触发器相关知识点整理

视图的操作

视图,本质上是一种虚拟表,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值形式存在。行和列数据来自自定义视图的查询所引用基本表,并且在具体引用视图时动态生成。

视图的功能实际上是封装查询语句

视图的特点如下:

  • 视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系;
  • 视图是由基本表(实表)产生的表(虚表);
  • 视图的建立和删除不影响基本表;
  • 对视图内容的更新(添加、删除和修改)直接影响基本表;
  • 当视图来自多个基本表时,不允许添加和删除数据;

创建视图

语法形式如下:

create view view_name AS 查询语句

和创建表一样,视图名不能和表名、也不能和其他的视图名重名。

使用视图

SELECT * FROM view_name

查看视图

SHOW TABLES查看视图

USE db_name【数据库名】;
SHOW TABLES;

SHOW TABLE STATUS 语句查看视图详细信息

SHOW TABLE STATUS 【FROM db_name】【LIKE 'pattern'】

SHOW CREATE VIEW 语句查看视图定义信息

SHOW CREATE VIEW view_name

DESCRIBE | DESC 语句产看视图设计信息

DESCRIBE | DESC view_name

删除视图

DROP VIEW view_name 【,view_name...】

通过DROP VIEW语句可以一次删除一个或多个视图

修改视图

CREATE OR REPLACE VIEW 语句修改视图

create OR REPLACE view view_name as 查询语句

通过上述语句创建视图后,如果需要更改视图时,则不需要先删除再创建,MySQL会自动进行删除和重建功能。

ALTER 语句修改视图

ALTER VIEW view_name as 查询语句

利用视图操作基本表

检索(查询)数据

SELECT * FROM view_name

对视图数据进行的更新(增加、删除和更新)操作,实际上是对其基本表数据进行更新操作。在具体更新视图数据时,需要注意以下两点:

  • 对视图数据进行添加、删除和更新操作直接影响基本表;
  • 视图来自多个基本表时,不允许添加和删除数据;

增加数据

INSERT INTO view_name (属性名1,属性名2,...) VALUES(属性1对应的值,属性2对应的值,...);

删除数据

DELETE FROM view_name WHERE条件语句

更新数据

UPDATE view_name set 要更新的属性名=更新后的属性值 WHERE语句

触发器的操作

创建触发器

创建有一条执行语句的触发器

create trigger trigger_name
    BEFORE|AFTER trigger_EVENT
        ON table_name FOR EACH ROW trigger_STMT

在上述语句中,trigger_name 参数表示所要创建的触发器名字,在具体创建触发器时,触发器标识符不能与已经存在的触发器名称重复。BEFOREAFTER参数指定了触发器执行的时间,其中前者是指在触发器事件之前执行触发器语句,后者是指在触发器事件之后执行触发器语句;trigger_EVENT参数表示触发事件,即触发器执行条件,包含DELETE、INSERT和UPDATE语句;table_name参数表示触发事件操作表的名字;FOR EACH ROW参数表示任何一条记录上的操作满足触发事件都会触发该触发器;trigger_STMT参数表示激活触发器后被执行的语句;

创建包含多条执行语句的触发器

create trigger trigger_name
    BEFORE|AFTER trigger_EVENT
        ON table_name FOR EACH ROW
            BEGIN
            trigger_STMT
            END

在上述语句中,比“只有一条执行语句的触发器”语法多出来了关键字BEGIN和END,在这两个关键字之间为所要执行的多个执行语句的内容,执行语句之间用分号隔开。

查看触发器

通过SHOW TRIGGERS语句查看触发器

删除触发器

通过DROP TRIGGER语句删除触发器

DROP TRIGGER trigger_name

原创文章,作者:ZERO,如若转载,请注明出处:https://www.edu24.cn/course/mysql-view-trigger.html

Like (0)
Donate 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
Previous 2020年7月9日
Next 2020年7月14日

相关推荐

  • Webpack入门,CSS Modules

    CSS Modules是近年来比较流行的一种开发模式,其理念就是把CSS模块化,让CSS也拥有模块的特点,具体如下: 使用CSS Modules时不需要额外安装模块,只要开启css…

    2022年11月28日
    753
  • JavaScript基础知识八问

    JavaScript是前端开发中非常重要的一门语言,浏览器是他主要运行的地方。JavaScript是一个非常有意思的语言,但是他有很多一些概念,大家经常都会忽略。比如说,原型,闭包…

    2020年12月30日
    928
  • spring boot练习篇之用户登录系统【接入数据库】

    抛弃JSP,只做纯粹的前后端分离项目。 写在前面 学习基础知识是枯燥无味的,之所以会这样,多数是因为心不静,对于如何运用它,感到茫然。所以建议大家在学习Java基础知识的时候,一定…

    2021年5月28日
    1.2K
  • vue3.0项目如何配置路径别名

    vue更新到3.0以后,在项目中已经深度集成了webpack,使用vue create命令新建项目之后,已经没有webpack配置文件了,这对于像小编这样没有系统学习过前端的同学来…

    2020年8月22日
    3.9K
  • 从零开始开发vue组件库

    前言 很早之前,就有开发一套vue组件库的想法,直到现在想法依旧只是想法。汗颜啊……此篇文章将讲述如何开发vue组件库,虽然文章标题为《从零开始开发vue组件库》,实际上是从搭建v…

    2024年6月23日
    493
  • Java自学之反射机制

    重用性是面向对象设计的核心原则。为了进一步提升代码的重用性,Java提供了反射机制。反射技术首先考虑的是“反”与“正”的操作,所谓的“正”操作,是指当开发者使用一个类的时候,一定要…

    2020年12月24日
    1.1K
  • 前端常见跨域解决方案

    跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。 广义的跨域: 资源跳转: A链接、重定向、表单提交 资源嵌入: <link>、<scr…

    2019年3月25日
    3.1K
  • 外层有一个自适应高度的div,里面有两个div,一个高度固定300px,另一个怎么填满剩余的高度?

    可以设置外层自适应高度的容器为flex布局,利用flex-basis属性即可实现自动填满剩余高度;代码如下:

    2021年2月22日
    1.2K
  • Webpack入门,样式处理

    除了JavaScript以外,Webpack在打包方面另一个重要的工作就是样式处理。在具有一定规模的工程中,由于手工维护CSS的成本过于高昂,开发者可能会需要更智能的方案来解决浏览…

    2022年11月24日
    528
  • STS插件mybatis-generator安装及使用

    断断续续学习Java也有好长时间了,没有师傅带,没有项目练手,学习超级慢,也很烦。视频、书籍翻看了一大推,还是没有目标。 相信滴水成海,外加条条大路通罗马,只要坚持,自己终能达成目…

    2019年12月27日
    2.2K

发表回复

Please Login to Comment