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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
上一篇 2020年7月9日
下一篇 2020年7月14日

相关推荐

  • spring4.x学习之用户登录与注册

    在之前的文章中我已经把后端工程项目创建好了,接下来就是编写项目了。 首先,我先创建一个数据库。数据库使用的是MySQL,数据库管理工具用的是Navicat。 打开数据库管理工具Na…

    2019年3月21日
    2.1K
  • Webpack入门,模块打包之加载其他类型的模块

    在实际开发中,开发者可能遇到其他类型的模块,比如AMD、UMD模块,虽然这些模块在目前的使用场景已经不多,但是遇到这些模块时仍然需要知道如何处理。 加载非模块化的文件 非模块化文件…

    2022年11月14日
    720
  • CSS布局之圣杯与双飞翼布局

    所谓圣杯布局和双飞翼布局其实解决的问题是相同的,都是解决左右两栏固定宽度,中间部分自适应,其中某部分内容比其他内容高的时候,保证三者元素等高。他俩的区别就是:圣杯用padding。…

    2019年6月18日
    1.9K
  • Spring Boot的常用注解

    未来的框架趋势是“约定大于配置”,代码的封装会更加严密。开发人员会将更多的精力放在代码的整体优化和业务逻辑上,所以注解式编程会被更加广泛地使用。那么什么是注解?Spring Boo…

    2024年8月29日
    485
  • windows下使用Docker Desktop安装nacos与mysql,实现互通访问

    1、命令行拉取MySQL镜像 打开命令提示符,运行以下命令安装mysql 2、运行mysql镜像,启动mysql实例 3、命令行拉取nacos镜像 4、运行nacos镜像,启动na…

    2022年10月27日
    505
  • Spring Tools学习之JAVA开发环境搭建【windows 10】

    一直以来都想学习JAVA,但是苦于找不到门路,网上学习资料要不看不懂,要不需要金钱。 终于,迫于生活与年龄的压力,下定决心,学习JAVA。 写下此文档,记录一下自己学习JAVA之路…

    2018年12月6日
    3.0K
  • Webpack入门,模块打包之ES6 Module

    JavaScript之父Brendan Eich在最初设计这门语言时,并没有包含模块的概念。基于越来越多的工程需要,为了使用模块化进行开发,JavaScript社区涌现出了多种模块…

    2022年11月11日
    644
  • 一维数组结构数据转换树形结构数据JS方法

    在写小程序项目时,自定义了一个组织机构树形展示组件,后端接口返回的组织机构数据是一维数组。需要在前端转换成树形结构的数据,并且添加一些节点的树形,比如是否为叶子节点,节点是否展开等…

    2022年11月10日
    533
  • Webpack入门,自定义loader

    有时开发者会遇到现有loader无法很好满足需求的情况,这时就需要对其进行修改,或者编写新的loader。 下面以一个简单的示例,讲解以下如何实现一个loader。 需求 实现一个…

    2022年11月23日
    831
  • Angular4.x ngModel 指令详解

    用过angular的前端工程师都知道,angular数据是可以双向绑定的。但是它为什么可以使数据双向绑定?原理又是什么?阅读这篇文章,来了解一下吧。

    2019年7月3日
    2.0K

发表回复

登录后才能评论