mysql 触发器 运算符_mysql三元运算,上下连表,视图,触发器,存储过程,事务等不常用方法...

1 MySql中的三元运算符有两种方法:

1、case when 条件 then (条件为true时执行) else(条件为false时执行) end;/*end不可少*/

2、select *,if(expr1,expr2,expr3) from 表名;

实例:SELECT if(isnull(sum(c.MONEY)),0,sum(c.MONEY)) AS m1 FROM Table

2 上下连表:

select 列名,列名 from 表名

union

select 列名,列名 from 表名;

这连表方法自动去重,如果不想去重,则union改成 union all。 需要注意的是上下连表的 所连接的表的列数目需要相同。

3 视图

MYSQL语句:

CREATE VIEW  视图名 AS SELECT 列名 FROM 表名 WHERE 条件;

ALTER VIEW  视图名 AS SELECT 列名 FROM 表名 WHERE 条件;

视图是一张虚拟表,动态的随着原始表更新而更新;

4 触发器

触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。

CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOR EACH ROW trigger_stmt

trigger_name:触发器的名称

tirgger_time:触发时机,

为BEFORE或者AFTER

trigger_event:触发事件,为INSERT、DELETE或者UPDATE

tb_name:表示建立触发器的表名,就是在哪张表上建立触发器

trigger_stmt:触发器的程序体,可以是一条SQL语句或者是用BEGIN和END包含的多条语句 所以可以说MySQL创建以下六种触发器: BEFORE INSERT,BEFORE DELETE,BEFORE UPDATE AFTER INSERT,AFTER DELETE,AFTER UPDATE

mysql> DELIMITER //

mysql> CREATE TRIGGER demo BEFORE DELETE ON users FOR EACH ROW BEGIN INSERT INTO logs VALUES(NOW());

INSERT INTO logs VALUES(NOW()); END //

mysql> DELIMITER ;

DELIMITER 用于修改结束语句的符号,上例就是将符号改为//,结尾又改回来了,目的是为了触发器里面的触发语句不引发错误。

NEW.columnname:新增行的某列数据

OLD.columnname:删除行的某列数据

5 函数

MySQL中提供了许多内置函数

自定义函数

delimiter \\

create function f1(

i1 int,

i2 int)

returns int

BEGIN

declare num int;

set num = i1 + i2;

return(num);

END \\

delimiter ;

删除函数

drop function func_name;

执行函数

获取返回值

declare @i VARCHAR(32);

select UPPER('alex') into @i;

SELECT @i;

在查询中使用

select f1(11,nid) ,name from tb2;

6 执行过程

存储过程是一个SQL语句集合,当主动去调用存储过程时,其中内部的SQL语句会按照逻辑执行。

创建存储过程

delimiter //

create procedure p1()

BEGIN

select * from t1;

END//

delimiter ;

执行存储过程

call p1()

创建有参数的存储过程,

in          仅用于传入参数用

out        仅用于返回值用

inout     既可以传入又可以当作返回值

delimiter \\

create procedure p1(

in i1 int,

in i2 int,

inout i3 int,

out r1 int

)

BEGIN

DECLARE temp1 int;

DECLARE temp2 int default 0;

set temp1 = 1;

set r1 = i1 + i2 + temp1 + temp2;

set i3 = i3 + 100;

end\\

delimiter ;

-- 执行存储过程

set @t1 =4;

set @t2 = 0;

CALL p1 (1, 2 ,@t1, @t2);

SELECT @t1,@t2;

解释: set @ti =4,set 是赋值的key word,@代表这个关键字是定义域是session,t1是变量名字。

7 事务

1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。

2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。

3、隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。

4、持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。

delimiter \\

create PROCEDURE p1( -- procedure 关键字,字义 程序

OUT p_return_code tinyint -- 全session的变量 短整数类型。

)

BEGIN

DECLARE exit handler for sqlexception --mysql的异常处理,declare (声明) exit(退出这个存储过程)

handler for sqlexception --出现sqlception 时

BEGIN -- ERROR set p_return_code = 1; rollback;

END;

DECLARE exit handler for sqlwarning BEGIN -- WARNING set p_return_code = 2;

rollback; END; START TRANSACTION; ---START TRANSACTION 或 BEGIN 开启事务

DELETE from tb1;

insert into tb2(name)values('seven');

COMMIT; --提交事务(关闭事务)

-- SUCCESS

set p_return_code = 0;

END\\

delimiter ;

mysql异常处理详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

求字典key的和python_python怎么将字典key相同的value值, 合并

python怎么将字典key相同的value值, 以逗号隔开,整为一行数据 源数据: test_dict1 {text: 50.00€ Rabatt fr Bestellungen ber 10.00€, strong_off: 50.00€, html_text: 50.00€ Rabatt fr Bestellungen ber 10.00€} test_dict2 {text:…

简单的mysql左链接_简单谈谈mysql左连接内连接

前言最近忙着开发x省冷链追溯系统,天天干到晚上十一点多才回到家,周末也加班,没啥时间写博客,闲下来再好好写写业务: sql语句统计出入库数据。问题:只统计了X端入库单。原因: 没有发现X端的数据…

c语言 空格_C语言100题集合-ex003

系列文章《C语言经典100例》持续创作中,欢迎大家的关注和支持。喜欢的同学记得点赞收藏哦~1 题目函数:fun() 功能:统计一行字符串单词的个数,作为函数值返回描述:一行字符串在主函数中输入,规定…

go 默认http版本_【每日一库】超赞的 Go 语言 INI 文件操作

点击上方蓝色“Go语言中文网”关注我们,领全套Go资料,每天学习 Go 语言如果你使用 INI 作为系统的配置文件,那么一定会使用这个库吧。没错,它就是号称地表 最强大、最方便 和 最流行 的 Go 语言 INI 文件操作库:https:…

python程序设计第一章答案_Python《学习手册:第一章-习题》

人们选择Python的六大主要原因是什么? 软件质量:Python注重可读性、一致性和软件质量。Python代码的设计致力于可读性,因此具备了比传统脚本语言更优秀的可重用性和可维护性。 Python的一致性保证了其代码易于理解。 Python支持软件开发的高级…

redis数据丢失_有效避免数据丢失!Redis持久化方案选择详解

为什么需要持久化呢?通常情况下redis的数据全部存储在内存中,数据库一旦故障发生重启数据会全部丢失,即使是在redis cluster或者redis sentinel模式下主从同步数据的恢复仍然需要一段时间。持久化功能在于能够有效地避免因进程退出造成的数据丢失问题&am…

做python开发要用多大的内存_Python 在分配内存需要考虑的问题

由此能看出可变对象在扩充时的秘密:超额分配机制:申请新内存时并不是按需分配的,而是多分配一些,因此当再添加少量元素时,不需要马上去申请新内存 非均匀分配机制:三类对象申请新内存的频率是不同的&#x…

mysql审计 社区版有吗_mysql 5.6 社区版上审计功能,不扯皮

官网https://mariadb.com/kb/en/mariadb/about-the-mariadb-audit-plugin/一、环境说明MySQL 5.6.25 社区版Mariadb 10.0.25 社区版mysql 企业版有审计功能需要收费,社区版被阉割的不行不行了,和古时候的太监没啥区别了,比较重要的功能特性都…

python用outlook自动发邮件_Python 调用outlook发送邮件(转 )

单账号: import win32com.client as win32 def send_mail(): outlook win32.Dispatch(Outlook.Application) mail_item outlook.CreateItem(0) # 0: olMailItem mail_item.Recipients.Add(testtest.com) mail_item.Subject Mail Test mail_item.BodyFormat 2 # …

win10子系统ubuntu图形界面_win10系统中安装ubuntu子系统及图形界面

作为全球最流行且最有影响力的Linux开源系统之一,Ubuntu自发布以来在应用体验方面:有较大幅度的提升,即使对比Windows、MacoS等操作系统,最新版本的Ubuntu也不逊色。下面教大家在win10系统中安装ubuntu子系统及图形界面。第一步&a…

为什么python打开pygame秒关闭后在运行_当我运行Python程序时,pygame窗口打开片刻,然后退出 - python...

我是一个刚开始尝试通过在线课程使用python和pygame制作游戏的程序员。但是,当我运行以下代码时,pygame窗口将打开一秒钟,然后关闭。 import pygame pygame.init() screen pygame.display.set_mode((900,700)) finished False while finish…

es 时间字段聚合_ES之五:ElasticSearch聚合

1、单值聚合Sum求和,dsl参考如下:{"size": 0,"aggs": {"return_balance": {"sum": {"field": "balance"}}}}返回balance之和,其中size0 表示不需要返回参与查询的文档。Min求最小值{"…

div字体居中_div和span的使用

这节我们来制作以下效果我们先把四个段落的文字都写出来,分别包含在p标签里现在看到的效果如下我们来一点一点给它加入样式首先,来使文字水平居中并且加背景色但是这样显示的效果有一些问题,直接加入文字背景会显示背景顶着两头,导…

java将mysql数据写入到txt_java 追加写入数据到txt

方法一try {BufferedWriter out new BufferedWriter(new FileWriter(fileName));out.write("aString1\n");out.close();out new BufferedWriter(new FileWriter(fileName,true));out.write("aString2");out.close();BufferedReader in new BufferedRead…

dubbo协议_Dubbo协议解析与OPPO自研ESA RPC框架实践

本文来自OPPO互联网基础技术团队,转载请注名作者。同时欢迎关注我们的公众号:OPPO_tech,与你分享OPPO前沿互联网技术及活动。1. 背景Dubbo是一款高性能、轻量级的开源Java RPC框架,诞生于2012年,2015年停止研发&#x…

fastjson反序列化过滤字段属性_原创干货 | 从RMI入门到fastjson反序列化RCE

关注我,让我成为你的专属小太阳吧RMI入门什么是RMIRMI(Remote Method Invocation)为远程方法调用,是允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。这两个虚拟机可以是运行在相同计算机上的不同进程中,也可以是运…

python pyquery.get()_Python爬虫之PyQuery使用(六)

Python爬虫之PyQuery使用PyQuery简介pyquery能够通过选择器精确定位 DOM 树中的目标并进行操作。pyquery相当于jQuery的python实现,可以用于解析HTML网页等。它的语法与jQuery几乎完全相同,对于使用过jQuery的人来说很熟悉,也很好上手。初始化…

axure web组件下载_Element - 饿了么团队出品的神级桌面 UI 组件库

一套著名的桌面端的组件库,同时提供Sketch、Axure模板资源文件方便快速产品设计。 介绍由饿了么团队出品,一套为开发者、设计师和产品经理准备的组件库,提供了配套axure、sektch设计资源,可以直接下载使用,能帮我等搬砖…

三农电子商务创业创新大赛作品_全国大学生电子商务“创新、创意及创业”挑战赛五邑大学校赛...

大赛简介第十届全国大学生电子商务“创新、创意及创业”挑战赛(简称“三创赛”)是由全国电子商务创新产教联盟主办,由“三创赛”竞赛组织委员会统一策划、组织、管理与实施。“三创赛”由校赛、省赛和国赛三级竞赛组成,分别由教育部认可的全国高校提出申…

程序员的数学 pdf_作为一个程序员,分享我日常学习方式,自学渠道和方式

做了几年程序员,只有高中学生的基础,就做不了高等数学算法相关工作,在有限的技术领域里进行自学做自己能做的业务。学习是少不了的事情,每天一大部分时间都是处于自学状态。第一个平台是慕课网,从高中毕业开始看慕课网…