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入门,模块打包之加载其他类型的模块

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

    2022年11月14日
    533
  • Java自学之多线程编程

    多线程编程是Java语言最为重要的特性之一。利用多线程技术可以提升单位时间内的程序处理性能,也是现代程序开发中高并发的主要设计模式。 进程与线程 进程是一个应用程序。线程是一个进程…

    2020年12月16日
    1.4K
  • Webpack入门,CSS Modules

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

    2022年11月28日
    673
  • css如何利用transparent属性设置透明度?transparent属性绘制各种三角形

    想到用css设置元素透明度,大家的第一反应会是:用Opacity属性来设置透明度,其实在css中还有其他设置透明度的方法。本章给大家介绍用transparent属性设置透明度,以及…

    2021年2月25日
    1.2K
  • 初识Spring Boot

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

    2024年6月16日
    287
  • Angular 4.x ngModel 双向绑定原理揭秘

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

    2019年7月2日
    1.8K
  • Webpack入门,样式处理

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

    2022年11月24日
    486
  • MyBatis配置之properties属性详解

    之前写了一篇《如何搭建MyBatis开发环境》,通过一个简单的实例讲解了关于搭建MyBatis的开发环境,这篇将详细讲解MyBatis的配置。 MyBatis配置文件的层次结构 这…

    2022年4月18日
    655
  • 深入理解JS原型和继承

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

    2019年6月29日
    2.0K

发表回复

Please Login to Comment