初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

MySQL学习教程(超全) mysql学习安装配置 阅读详情

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

初识MySQL

MySQL是一个开放源代码的数据库管理系统(DBMS), 它是由MySQL AB公司开发、发布并支持的。MySQL是一个跨平台的开源关系型数据库管理系统,广泛地应用在Internet上的中小型网站开发中。本章主要介绍数据库的基础知识,通过本章的学习,读者可以了解数据库的基本概念、数据库的构成和MySQL的基本知识。

一、数据库基础

数据库由一批数据构成有序的集合,这些数据被存放在结构化的数据表里。数据表之间相互关联,反映了客观事物间的本质联系。数据库系统提供对数据的安全控制和完整性控制。本即将介绍数据库中的一 些基本概念,包括:数据库的定义、数据表的定义和数据类型等。

1.1什么是数据库

数据库的概念诞生于60年前,随着信息技术和市场的快速发展,数据库技术层出不穷,随着应用的拓展和深入,数据库的数量和规模越来越大,其诞生和发展给计算机信息管理带来了一场巨大的革命。

数据库的发展大致划分为如下几个阶段:人工管理阶段、文件系统阶段、数据库系统阶段、高级数据库阶段。其种类大概有3种:层次式数据库、网络式数据库和关系式数据库。不同种类的数据库按不同的数据结构来联系和组织。

对于数据库的概念,没有一个完全固定的定义,随着数据库历史的发展,定义的内容也有很大的差异,其中- -种比较普遍的观点认为,数据库(DataBase, DB)是一一个长期存储在计算机内的、有组织的、有共享的、统- -管理的数据集合。它是一个按数据结构来存储和管理数据的计算机软件系统,即数据库包含两层含义:保管数据的“仓库"”,以及数据管理的方法和技术。

数据库的特点包括:实现数据共享,减少数据冗余;采用特定的数据类型;具有较高的数据独立性;具有统一的数据控制功能。

1.2表

在关系数据库中,数据库表是--系列二维数组的集合,用来存储数据和操作数据的逻辑结构。它由纵向的列和横向的行组成,行被称为记录,是组织数据的单位;列被称为字段,每一列表示记录的-一个属性,都有相应的描述信息,如数据类型、数据宽度等。

例如-一个有关作者信息的名为authors的表中,每个列包含所有作者的某个特定类型的信息,比如“姓名”,而每行则包含了某个特定作者的所有信息:编号、姓名、性别、专业,如下图所示。

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

authors表的结构与记录

1.3数据类型

数据类型决定了数据在计算机中的存储格式,代表不同的信息类型。常用的数据类型有:整数数据类型、浮点数数据类型、精确小数类型、二进制数据类型、日期/时间数据类型、字符串数据类型。

表中的每一一个字 段就是某种指定数据类型,比如上图中“编号”字段为整数数据,“性别”字段为字符型数据。

1.4主键

主键(Primary Key)又称主码,用于唯一的标识表中的每一 条记录。 可以定义表中的一-列或多列为主键,主键列上不能有两行相同的值,也不能为空值。假如,定义authors表,该表给每一-个作 者分配-一个“作者编号”,该编号作为数据表的主键,如果出现相同的值,将提示错误,系统不能确定查询的究竟是哪一条记录; 如果把作者的“姓名”作为主键,则不能出现重复的名字,这与现实中的情况不相符合,因此“姓名”字段不适合作为主键。

二、MySQL触发器

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

MySQL的触发器和存储过程一样,都是嵌入到MySQL的一段程序。 触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATAE和DELETE语句。如果定义了触发程序,当数据库执行这些语句的时候就会激发触发器执行相应的操作,触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。本章通过实例来介绍触发器的含义、如何创建触发器、查看触发器、触发器的使用方法以及如何删除触发器。

2.1创建触发器

触发器(trigger)是个特殊的存储过程,不同的是,执行存储过程要使用CALL语句来调用,而触发器的执行不需要使用CALL语句来调用,也不需要手工启动,只要当一个预定义的事件发生的时候,就会被MySQL自动调用。比如当对fruits表进行操作(INSERT. DELETE或UPDATE)时就会激活它执行。

触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于满足复杂的业务规则或要求。例如:可以根据客户当前的账户状态,控制是否允许插入新订单。本节将介绍如何创建触发器。

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

创建一个触发器的语法如下:

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

其中trigger_ name标识触发器名称,用户自行指定; trigger_ time 标识触发时机,可以指定为before或after; trigger_ event 标识触发事件包括INSERT UPDATE和DELETE; tbl_ name标识建立触发器的表名,即在哪张表上建立触发器; trigger_ stmt 是触发器执行语句。

创建一个单执行语句的触发器,代码如下:

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

首先创建一个account表,表中有两个字段,分别为: acct_ num 字段(定义为int类型),amount字段(定义成浮点类型) ;其次创建- -个名为ins_ sum的触发器,触发的条件是向数据表account插入数据之前,对新插入的amount字段值进行求和计算。

代码执行如下:

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

首先创建-一个account表,在向表account插入数据之前,计算所有新插入的account表的amount值之和,触发器的名称为ins_ sum, 条件是在向表插入数据之前触发。

创建有多个执行语句的触发器

创建多个执行语句的触发器的语法如下:

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

其中trigger_ _name 标识触发器的名称,用户自行指定; trigger_ time标识触发时机,可以指定为before或after; trigger_ event 标识触发事件,包括INSERT、UPDATE和DELETE;tbl_ name标识建立触发器的表名,即在哪张表上建立触发器;触发器程序可以使用BEGIN和

END作为开始和结束,中间包含多条语句。

创建一个包含多个执行语句的触发器,代码如下:

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

上面的代码是创建了-个名为testref 的触发器,这个触发器的触发条件是在向表testl插入数据前执行触发器的语句,具体执行的代码如下:

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

那么四个表中的数据如下

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

执行结果显示,在向表test1插入记录的时候,test2、 test3、 test4 都发生了变化。从这个例子看INSERT触发了触发器,向test2中插入了test1中的值,删除了test3 中相同的内容,同时更新了test4 中的b4,即与插入的值相同的个数。

2.2查看触发器

查看触发器是指查看数据库中已存在的触发器的定义、状态和语法信息等。可以通过命令来查看已经创建的触发器。本节将介绍两种查看触发器的方法,分别是: SHOW TRIGGERS 和在triggers表中查看触发器信息。

SHOW TRIGGERS语句查看触发器信息

通过SHOW TRIGGERS查看触发器的语句如下:

SHOW TRIGGERS;

通过SHOW TRIGGERS命令查看一个触发器,代码如下:

SHOW TRIGGERS;

创建一个简单的触发器,名称为trig_update,每次向account表更新数据之后都会向名称为myevent的数据表中插入一条记录,数据表myevent定义如下:

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

创建触发器的执行代码如下:

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

使用SHOW TRIGGERS命令查看触发器:

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

可以看到,信息显示比较混乱。如果在SHOW TRIGGERS命令的后面添加上‘\G’,显示信息会比较有条理,执行情况如下:

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

Trigger表示触发器的名称在这里两个触发器的名称分别为ins_ sum 和trig_ update; Event表示激活触发器的事件这里的两个触发事件为插入操作INSERT和更新操作UPDATE; Table表示激活触发器的操作对象表,这里都为account表; Timing 表示触发器触发的时间,分别为插入操作之前(BEFORE)和更新操作之后(AFTER) ; Statement 表示触发器执行的操作,还有一些其他信息,比如SQL的模式、触发器的定义账户和字符集等,这里不再一一介绍。

提示:SHOW TRIGGERS语句查看当前创建的所有触发器信息,在触发器较少的情况下,使用该语句会很方便。如果要查看特定触发器的信息,可以直接从informnation_ schema 数据库中的triggers表中查找。在下节内容中,将介绍这种方法。

在triggers表中查看触发器信息

在MySQL中所有触发器的定义都存在INFORMATION_ SCHEMA数据库的TRIGGERS表格中,可以通过查询命令SELECT来查看,具体的语法如下:

SELECT*EROM INFORMATION_SCHEMA. TRIGGERS WHERE condition;

通过SELECT命令查看触发器,代码如下:

SELECT*FROM INFORMATION_SCHEMA. TRIGGERS WHERE TRIGGER_ NAME= 'trig_ update'\G

上述的命令是通过WHERE来指定查看特定名称的触发器,下面是指定触发器名称的执行情况:

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

从上面的执行结果可以得到: TRIGGER_ SCHEMA表示触发器所在的数据库;TRIGGER_ NAME后面是触发器的名称; EVENT_ OBJECT _TABLE表示在哪个数据表上触发ACTION_ STATEMENT表示触发器触发的时候执行的具体操作ACTION_ ORIENTATION是ROW,表示在每条记录上都触发; ACTION_ TIMING表示触发的时刻是AFTER,剩下的是和系统相关的信息。

也可以不指定触发器名称,这样将查看所有的触发器,命令如下:

SELECT*FROM INFORMATION_SCHEMA.TRIGGERS \G

这个命令会显示这个TRIGGERS表中所有的触发器信息。

2.3触发器的使用

触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。在某些触发程序的用法中,可用于检查插入到表中的值,或对更新涉及的值进行计算。

触发程序与表相关,当对表执行INSERT. DELETE或UPDATE语句时,将激活触发程.序。可以将触发程序设置为在执行语句之前或之后激活。例如,可以在从表中删除每一-行之前,或在更新每--行之后激活触发程序。

创建一个在account表插入记录之后,更新myevent数据表的触发器,代码如下:

CREATE TRIGGER trig_ insert AFTER INSERT ON account
FOR EACH ROW INSERT INTO myevent VALUES (2, 'after insert') ;

上面的代码创建了一个trig_insert的触发器在向表account插入数据之后会向表myevent插入一组数据,代码执行如下:

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

从执行的结果来看,是创建了一个名称为trig insert 的触发器,它是在向account 插入记录之后进行触发,执行的操作是向表myevent插入一 条记录。

2.4删除触发器

使用DROP TRIGGER语句可以删除MySQL中已经定义的触发器,删除触发器语句基本语法格式如下:

DROP TRIGGER [schema_name. ]trigger_name

其中,schema_ name表示数据库名称,是可选的。如果省略了schema, 将从当前数据库中舍弃触发程序;trigger_name是要删除的触发器的名称。

删除一个触发器,代码如下:

DROP TRIGGER test. ins;

上面的代码中test是触发器所在的数据库,ins是一个触发器的名称。代码执行如下:

2.5综合案例——触发器的使用

本节介绍了MySQL数据库触发器的定义和作用、创建触发器、查看触发器、使用触发器和删除触发器等内容。创建触发器和使用触发器是本章的重点内容。在创建触发器的时候一定要弄清楚触发器的结构,在使用触发器的时候,要清楚触发器触发的时间(BEFORE或AFTER)和触发的条件(INSERT. DELETE或UPDATE)。在创建触发器后,要清楚怎么修改触发器。

1.案例目的

掌握触发器的创建和调用方法。

下面是创建触发器的实例,每更新一次persons表的num字段后,都要更新sales表对应的sum字段。

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

persons表结构

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

sales 表结构

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

persons 表内容

2.案例操作过程

步骤1:创建一个业务统计表persons

创建一个业务统计表persons,代码如下:

CREATE TABLE persons (name VARCHAR(40),num int) ;

步骤2:创建一个销售额表sales

创建一个销售额表sales,代码如下:

CREATE TABLE sales (name VARCHAR(40) ,sum int) ;

步骤3:创建一个触发器

创建一个触发器,在更新过persons表的num字段后,更新sales表的sum字段,代码如下:

CREATE TRIGGER num_ sum AFTER INSERT ON persons
FOR EACH ROW INSERT INTO sales VALUES (NEW. name, 7*NEW. num) ;

步骤4:向persons表中插入记录

插入新记录后,更新销售额表

INSERT INTO persons VALUES (' xiaoxiao',20) , ( 'xiaohua',69) ;

执行的过程如下:

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

初识数据库,零基础如何学习MySQL,MySQL触发器简介及使用

 

从执行的结果来看,在persons表插入记录之后,num_ sum触发器计算插入到persons表中的数据,并将结果插入到sales表中相应的位置。

解疑

疑问1 :使用触发器时须特别注意。

在使用触发器的时候需要注意,对于相同的表,相同的事件只能创建一个触发器,比如对表account创建了一个BEFORE INSERT触发器,那么如果对表account再次创建一个BEFOREINSERT触发器,MySQL将会报错,此时,只可以在表account.上创建AFTER INSERT或者BEFOREUPDATE类型的触发器。灵活地运用触发器将为操作省去很多麻烦。

疑问2 :及时删除不再需要的触发器。

触发器定义之后,每次执行触发事件,都会激活触发器并执行触发器中的语句。如果需求发生变化,而触发器没有进行相应的改变或者删除,则触发器仍然会执行旧的语句,从而会影响新的数据的完整性。因此,要将不再使用的触发器及时删除。

MYSQL 学习指南 (看完这篇就够了,万字收藏!!!) 数据类型决定了,mysql中所有列都具有数据类型,以决定能够存储哪种数据。本篇章数据库基础已经讲完啦,小伙伴一定要把基础知识学扎实了。虽然像jdbc这种实现方式在实际开发中已经被MyBatis、MyBatis Plus、 JPA这样封装好了的框架所替代。但是在我们面试中却会被面试官经常问到这些基础性的知识(例如:要你手写jdbd连接数据库代码。)所以大伙们不可以轻视这些基础的知识点。 阅读详情

相关推荐

mysql 触发器使用详解

mysql 触发器使用详解

congge 7638

mysql触发器实验报告_数据库原理实验报告s11-数据库触发器的创建.doc

数据库原理实验报告s11-数据库触发器的创建.doc 数据库管理系统SQLSERVER实验报告第1页2011年5月4日实验11数据库触发器的建立实验日期和时间20141128实验室软件工程室班级12计科3学号20124122姓名张翔实验环境1硬件内存400GB处理器250HZ2软件WINDOWS7旗舰版MICROSOFTSQLSERVER2005实验原理1理解触发器的概念、和一般存储过程的区别、触...

weixin_35755562的博客 1556

MySQL数据库入门看这一篇就够(超级详细,从零学起)

学习MySQL数据库是一个循序渐进的过程,从基本的概念到高级的操作和优化都有很多知识点需要掌握。下面是一个详细的学习指南,涵盖了从基础到高级的内容。

啊渊的专栏 1万+

练习9:MySQL触发器的应用

【案例】每更新一次persons表的num字段后,都要更新sales表对应的sum字段。其中,persons、sales和表persons表结构如下所示。 步骤1:创建一个业务统计表persons mysql> create table persons (name varchar(40),num int ); Query OK, 0 rows affected (0.10 sec) 步骤...

匿名攻城狮 2577

mysql上机实验

下面是创建触发器的实例,每更新一次persons表的num字段后都要更新sales表对应的sum字段。其中,persons表结构、sales表结构以及persons表结构的内容如下所示,按照后面的具体要求完成操作。INTO OUTFILE语句导出suppliers表中的记录,导出文件位于目录D:\下,名称为suppliers_out.txt。⑤使用MySQLdump命令将suppliers表中的记录导出到文件D:\beifen\suppliers_bk.sql。④分别从user表中查看新账户的账户信息。

Tionnnn的博客 393

MySQL学习教程(超详细步骤)

mysql从安装到卸载,从建数据库数据库设计三范式

thewhat的博客 8756

数据库原理学习——MySql触发器详解

触发器(Trigger)是数据库中的一种特殊存储程序,它绑定到某张表(或视图)上,并在特定的数据库操作(如INSERTUPDATE或DELETE)发生时自动执行预定义的操作。触发器无需手动调用,是一种事件驱动的机制。触发器目标检查是否是is_leave字段被更新为1。(表示访客已离开)。②out_time距离当前时间已有 1 年以前。触发时机: 每当表中的is_leave字段被更新为1时,该触发器会自动执行。触发器是一种强大的工具,用于增强数据库的自动化处理能力。

Future_yzx的博客 9054

MySQL-触发器

MySQL-触发器

真正的大师永远怀着一颗学徒的心 2万+

MySQL触发器触发器使用、创建、修改及删除

触发器的概念 当我们对一个表进行数据操作时,需要同步对其它的表执行相应的操作,正常情况下,如果我们使用sql语句进行更新,将需要执行多条操作语句! 触发器(TRIGGER)是由事件来触发某个操作。这些事件包括INSERT语句、UPDATE语句和DELETE语句。当数据库系统执行这些事件时,就会激活触发器执行相应的操作。MySQL从5.0.2版本开始支持触发器。 创建触发器MySQL中创建触发器通过SQL语句CREATE TRIGGER来实现,其语法形式如下: CR...

qq_54169998的博客 9万+

MySQL——超详细数据库触发器教程

MySQL——超详细数据库触发器教程

m0_65635427的博客 6170

MySQL数据库进阶之触发器内容详解

本文对数据库中的触发器进行了详细讲解。包括触发器的概述、触发器的基本使用触发器的NEW与OLD的必要性以及使用触发器的注意事项,通过案例来帮助大家更好的理解吸收。

黄小黄的博客 2469

MySQL使用 Drop Database

MySQL使用命令可以有效地删除不再需要的数据库及其所有内容。了解命令的基本语法、使用方法和注意事项可以帮助确保操作的正确性和数据的安全。在执行删除操作之前,务必进行数据备份、检查活动连接,并确保具备足够的权限。本文详细介绍了命令的使用方法和实际应用场景,希望能帮助您在 MySQL 中有效管理数据库

网络技术联盟站 2824

如何使用SQL系列 之 如何在MySQL使用触发器

通过本指南,你了解了什么是SQL触发器,以及如何在MySQL使用它们在INSERT和UPDATE查询之前操作数据。你学习了如何使用触发器将删除的行归档到单独的表中,以及如何使用AFTER语句触发器来保持汇总始终是最新的。你可以使用函数将一些数据操作和验证交给数据库引擎,以确保数据完整性或对日常数据库用户隐藏一些数据库行为。本教程只介绍了为此目的使用触发器的基础知识。你可以构建由多个语句组成的复杂触发器,并使用条件逻辑更细粒度地执行操作。要了解更多信息,请参阅MySQL关于触发器的文档。

码觉客的博客 1万+

MySQL触发器详解

今天继续给大家介绍MySQL相关知识,本文主要内容是MySQL触发器相关知识。 一、触发器简介 触发器是一种特殊的存储过程,在定义触发器时会定义触发器的触发条件,使得触发器在满足触发条件时自动执行而不需要认为调用。尽管触发器的原理很简单,但是在MySQL中引入并使用触发器,可以实现很多实用的效果,并满足一些特定业务环境的需要。 二、触发器定义 三、触发器示例 四、触发器查看与删除

永远是少年 1万+

第二十四章 MySQL学习笔记

存放文本时,也可以使用Text数据类型,可以将TEXT列视为VARCHAR列,注意Text不能有默认值,大小0-2^16字节;同一查询在同一事务中多次进行,由于其它提交事务所做的修改和删除,每次返回不同的结果集,则发生不可重复读;多个连接开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个连接在获取数据是的准确性;同一查询在同一个事务中多次执行,由于其它提交事务所做的插入操作,每次返回不同的结果集,此时发生幻读;同真是的表一样,视图包含列,其数据来自对应的真实表(基表)

你好, 我在学java的博客 1万+

MYSQL 从入门到熟练 详解(看这一篇就够啦)

开源免费:MySQL是一个开源项目,其源代码可以免费获取,并根据GNU通用公共许可证(GPL)进行分发。这使得MySQL成为许多开发者和企业的首选数据库解决方案。跨平台:MySQL支持多种操作系统,包括Linux、Windows、macOS等。这种跨平台的能力使得MySQL能够灵活地部署在各种环境中。高性能:MySQL通过优化查询算法、使用索引和缓存等技术手段,提供了高效的数据处理能力。它支持高并发访问,能够处理大量数据的存储和查询。可靠性。

qq_55797703的博客 1万+

学习MySQL这一篇就够了

第一章 数据库概述 1.1、数据库的好处 将数据持久化到本地 提供结构化查询功能 1.2、数据库的常见概念 DB:数据库,存储数据的仓库 DBS:数据库管理系统,又称为数据库软件或者数据库产品,用于创建和管理DB,常见的有MySQL、Oracle、DB2、SQL Server SQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库软件通用的语言 1.3、数据库的存储特点 数据存放到表中,然后表再放到库中 一个库中可以有多张表,每张表具有唯一的表名用来标识

轻松的小希 22万+

MYSQL入门学习教程(非常详细),零基础入门到精通,收藏这一篇就够了

数据库(Database)是“按照数据结构来组织、存储和管理数据的仓库”。它是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的数据冗余、较高的数据独立性和易扩展性,并可为多种用户共享。开源免费:MySQL是一个开源项目,其源代码可以免费获取,并根据GNU通用公共许可证(GPL)进行分发。这使得MySQL成为许多开发者和企业的首选数据库解决方案。跨平台:MySQL支持多种操作系统,包括Linux、Windows、macOS等。

m0_71745258的博客 8919
上一篇: 几行代码实现简单的网络象棋游戏,看看Java大牛是怎么做到的?
下一篇: 你无法忽视的MySQL技术,企业中MySQL的高可用架构
爱玛士
博客等级 码龄6年 719粉丝 253原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值