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日

相关推荐

  • Angular 4.x ngModel 双向绑定原理揭秘

    一直以来都没有去深入探究Angular,只是熟练运用。真要被问起来,很多关于angular的理论知识都回答不上来。感觉上学背书的能力已经丧失的差不多了。只能以这样的方式搜集整理出来。

    2019年7月2日
    2.0K
  • 日常开发 26 个常见的 JavaScript 代码优化方案

    1、NULL、Undefined、”【空】检查 我们在创建新变量赋予一个存在的变量值的时候,并不希望赋予null或undefined,我们可以采用以下简洁的赋值方式。 …

    2021年2月22日
    1.4K
  • JAVA学习路线之夯实基础

    第一章 开发环境 JDK(Java SE Development Kit),Java标准版开发包,提供编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行环…

    2020年1月14日
    1.8K
  • Java自学之I/O编程

    I/O(Input/Output,输入/输出)可以实现数据的读取与写入操作,Java针对I/O操作的实现提供了java.io工具包,此包的核心组成由File类、InputStrea…

    2020年12月21日
    1.4K
  • Java自学之继承

    在面向对象的设计过程中,类是基本的逻辑单位。但是对于这些基本的逻辑单位需要考虑到重用的设计问题,所以在面向对象的设计里提供有继承,并利用这一特点实现类的可重用性定义。 类继承定义 …

    2020年12月3日
    1.5K
  • 如何搭建MyBatis开发环境

    进入一段时间的学习及温习,已经可以说是初步掌握了Javaweb入门开发,由于我的中心思想是抛弃JSP,做纯粹的前后端分离项目,所以接下来计划学习持久层开发,现在主流的持久层开发工具…

    2022年4月6日
    877
  • Java自学之数组

    在Java中数组是一组相关变量的集合,属于引用数据类型。 定义 数组引用传递分析 数组属于引用数据类型,在数组使用时需要通过关键字new开辟堆内存空间,一块堆内存空间也可以同时被多…

    2020年11月26日
    1.4K
  • MySQL数据库入门之单表数据记录查询

    简单数据查询 语法形式如下: 在上述语句中,参数fieldn表示所要查询的字段名字,参数table_name表示所要查询数据记录的表名。 当需要查询表中所有字段时,可使用&#822…

    2020年7月15日
    1.6K
  • 初识Spring Boot

    什么是Spring Boot Spring Boot是由Pivotal Software公司于2013年研发的全新Java开发框架。其设计目的是用来简化新Spring应用的初始搭建…

    2024年6月16日
    626
  • 深入理解JS原型和继承

    在学习JS中的原型,原型链,继承这些知识之前,必须先了解并掌握基础知识:函数和对象的关系。 我们一直都知道,函数也是对象的一种,因为通过instanceof就可以判断出来。但是函数…

    2019年6月29日
    2.3K

发表回复

登录后才能评论