MySQL常用语法

存储过程PROCEDURE
DROP PROCEDURE IF EXISTS usp_test;
DELIMITER //
CREATE PROCEDURE `usp_test`()
COMMENT ‘存储过程注释’
BEGIN
  -- 需要执行的SQL
  SELECT * FROM tb_a;
  SELECT * FROM tb_b;
END//
DELIMITER ;
函数FUNCTION
DROP FUNCTION IF EXISTS `fn_test`;
DELIMITER //
CREATE FUNCTION `fn_test`(`in_name` VARCHAR(50)) RETURNS varchar(50) CHARSET utf8
BEGIN
     -- 函数体
     set @a=’Name=’;
     return concat(@a,in_name);
END//
DELIMITER ;
事件EVENT
DROP EVENT IF EXISTS `evt_test`;
DELIMITER //
CREATE EVENT `evt_task_member_statistics` ON SCHEDULE EVERY 1 DAY STARTS ‘2016-07-07 00:00:00’
ON COMPLETION PRESERVE ENABLE COMMENT ‘注释’ DO BEGIN
  -- 需要执行的SQL
  SELECT * FROM tb_a;
END//
DELIMITER ;     

备注:MYSQL默认是关闭事件机制的,需要自行开启
SET GLOBAL event_scheduler = 1; — 开启event
show variables like ‘event_%’; — 查看event开启状态

SQL语句性能分析
explain
select * from wp_posts a where a .ID= 5 and a .post_type= ‘post’;
创建临时表
DROP TEMPORARY TABLE IF EXISTS tmp_tb;
CREATE TEMPORARY TABLE tmp_tb (id int AUTO_INCREMENT PRIMARY KEY not null,service_id int not null);
无锁模式(Unlock)

MS SQL Server使用无锁查询模式只需要在表名后面加上(NOLOCK)

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
  -- SQL查询语句
  SELECT * FROM tb_a;
COMMIT ;

或者

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
  -- SQL查询语句
  SELECT * FROM tb_a;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ;
触发器(TRIGGER)

插入前

CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW
BEGIN
    -- sql
END

插入后

CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW
BEGIN
    -- sql
END

删除前

CREATE TRIGGER tri_before_delete_tb1 BEFORE DELETE ON tb1 FOR EACH ROW
BEGIN
    -- sql
END

删除后

CREATE TRIGGER tri_after_delete_tb1 AFTER DELETE ON tb1 FOR EACH ROW
BEGIN
    -- sql
END

更新前

CREATE TRIGGER tri_before_update_tb1 BEFORE UPDATE ON tb1 FOR EACH ROW
BEGIN
    -- sql
END

更新后

CREATE TRIGGER tri_after_update_tb1 AFTER UPDATE ON tb1 FOR EACH ROW
BEGIN
    -- sql
END

本文会持续更新…

你可能感兴趣的:(MySQL常用语法)