前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL学习笔记七之MySQL视图、触发器、事务、存储过程、函数

SQL学习笔记七之MySQL视图、触发器、事务、存储过程、函数

作者头像
Jetpropelledsnake21
发布2019-02-15 15:32:38
8670
发布2019-02-15 15:32:38
举报
文章被收录于专栏:JetpropelledSnakeJetpropelledSnake

阅读目录

  • 一 视图
  • 二 触发器
  • 三 事务
  • 四 存储过程
  • 五 函数
  • 六 流程控制

一 视图

视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。

使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便,因此并不推荐使用

代码语言:javascript
复制
临时表应用举例

一 创建视图

代码语言:javascript
复制
View Code

二 使用视图

代码语言:javascript
复制
View Code

我们不应该修改视图中的记录,而且在涉及多个表的情况下是根本无法修改视图中的记录的,如下图

三 修改视图

代码语言:javascript
复制
View Code

四 删除视图

代码语言:javascript
复制
View Code

二 触发器

使用触发器可以定制用户对表进行【增、删、改】操作时前后的行为,注意:没有查询

一 创建触发器

代码语言:javascript
复制
View Code
代码语言:javascript
复制
插入后触发触发器

特别的:NEW表示即将插入的数据行,OLD表示即将删除的数据行。

二 使用触发器

触发器无法由用户直接调用,而知由于对表的【增/删/改】操作被动引发的。

三 删除触发器

代码语言:javascript
复制
View Code

三 事务

事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性。

代码语言:javascript
复制
View Code

四 存储过程

一 介绍

存储过程包含了一系列可执行的sql语句,存储过程存放于MySQL中,通过调用它的名字可以执行其内部的一堆sql

使用存储过程的优点:

代码语言:javascript
复制
#1. 用于替代程序写的SQL语句,实现程序与sql解耦

#2. 基于网络传输,传别名的数据量小,而直接传sql数据量大

使用存储过程的缺点:

代码语言:javascript
复制
#1. 程序员扩展功能不方便

补充:程序与数据库结合使用的三种方式

代码语言:javascript
复制
#方式一:
    MySQL:存储过程
    程序:调用存储过程

#方式二:
    MySQL:
    程序:纯SQL语句

#方式三:
    MySQL:
    程序:类和对象,即ORM(本质还是纯SQL语句)

二 创建简单存储过程(无参)

代码语言:javascript
复制
View Code

三 创建存储过程(有参)

代码语言:javascript
复制
对于存储过程,可以接收参数,其参数有三类:

#in          仅用于传入参数用
#out        仅用于返回值用
#inout     既可以传入又可以当作返回值
代码语言:javascript
复制
in:传入参数
代码语言:javascript
复制
out:返回值
代码语言:javascript
复制
inout:既可以传入又可以返回
代码语言:javascript
复制
事务

四 执行存储过程

代码语言:javascript
复制
在MySQL中执行存储过程
代码语言:javascript
复制
在python中基于pymysql执行存储过程

五 删除存储过程

代码语言:javascript
复制
View Code

五 函数

MySQL中提供了许多内置函数,例如:

代码语言:javascript
复制
View Code
代码语言:javascript
复制
需要掌握函数:date_format

更多函数:中文猛击这里 OR 官方猛击这里

一 自定义函数

代码语言:javascript
复制
#!!!注意!!!
#函数中不要写sql语句(否则会报错),函数仅仅只是一个功能,是一个在sql中被应用的功能
#若要想在begin...end...中写sql,请用存储过程
代码语言:javascript
复制
View Code
代码语言:javascript
复制
View Code

二 删除函数

代码语言:javascript
复制
View Code

三 执行函数

代码语言:javascript
复制
View Code

六 流程控制

一 条件语句

代码语言:javascript
复制
delimiter //
CREATE PROCEDURE proc_if ()
BEGIN
    
    declare i int default 0;
    if i = 1 THEN
        SELECT 1;
    ELSEIF i = 2 THEN
        SELECT 2;
    ELSE
        SELECT 7;
    END IF;

END //
delimiter ;

二 循环语句

代码语言:javascript
复制
delimiter //
CREATE PROCEDURE proc_while ()
BEGIN

    DECLARE num INT ;
    SET num = 0 ;
    WHILE num < 10 DO
        SELECT
            num ;
        SET num = num + 1 ;
    END WHILE ;

END //
delimiter ;
代码语言:javascript
复制
delimiter //
CREATE PROCEDURE proc_repeat ()
BEGIN

    DECLARE i INT ;
    SET i = 0 ;
    repeat
        select i;
        set i = i + 1;
        until i >= 5
    end repeat;

END //
delimiter ;
代码语言:javascript
复制
BEGIN
    
    declare i int default 0;
    loop_label: loop
        
        set i=i+1;
        if i<8 then
            iterate loop_label;
        end if;
        if i>=10 then
            leave loop_label;
        end if;
        select i;
    end loop loop_label;

END
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-05-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 视图
  • 二 触发器
  • 三 事务
  • 四 存储过程
  • 五 函数
  • 六 流程控制
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档