常用MYSQL语法
SQL语句:DROP [TRIGGER|TABLE|PROCEDURE] IF EXISTS X;
解释:如果【表|触发器|存储过程】X存在则删除
SQL语句:CREATE TRIGGER X [BEFORE|AFTER] [UPDATE|INSERT|…]
ON Y FOR EACH ROW EXPR
解释:创建触发器X,在表Y被执行修改、插入或其他合理操作时触发X 并执行 EXPR
SQL语句:DECLARE A [DATE|INT|VARCHAR(40)|…]
解释:声明日期,整形,指定长度的字符串等变量 A
SQL语句:SELECT A INTO B FROM X WHERE EXPR
解释:从表中查询满足条件 EXPR 的值 A插入变量 B 中
SQL语句:[NEW.A|OLD.A]
解释:在触发器中,新插入的或更改的数据行的之前的字段A
SQL语句:SIGNAL SQLSTATE ‘45000’ SET MESSAGE_TEXT = ‘warn’,
解释:抛出异常warn 45000 是通用写法
SQL语句:INSERT INTO X (A, B, C) VALUES(vol1, vol2, vol3) ON DUPLICATE KEY UPDATE A = vol1, B = vol2
解释:给表X插入一条字段 A、B、C的值分别为vol1, vol2, vol3的数据,当插入的数据主键或指定唯一字段重复时,更新字段A、B的值分别为vol1, vol2
SQL语句:IF(EXPR1, EXPR2, EXPR3)
解释:当EXPR1=true时执行EXPR2,否则执行EXPR3
SQL语句:IF (EXPR1) THEN EXPR2 ELSE EXPR3 END IF;
解释:如果EXPR1=true时执行EXPR2 否则执行EXPR3
SQL语句:CREATE PROCEDURE X(
A VARCHAR(40), B BIGINT, C INT)
BEGIN EXPR1(A,B,C); SELECT EXPR2 END
解释:创建存储过程X,参数为A,B,C,并在EXPR1语句里使用,返回查询语句EXPR2查询的结果
SQL语句:IFNULL(A,B)
解释:当字段A是NULL时取B,不是NULL时取A的值
SQL语句:SET A = LAST_INSERT_ID();
解释:设置变量A的值为最后插入表的一条数据的主键值
SQL语句:SET P_SQL = ‘INSERT INTO 。。’);
SET @P_SQL = P_SQL;
PREPARE STMT FROM @P_SQL;
EXECUTE STMT;
DEALLOCATE PREPARE STMT;
解释:与定制语句P_SQL,执行P_SQL,关闭STMT
SQL语句:SQRT(POW(A,B))
解释:计算A的B次方的平方根
SQL语句:LENGTH(A)
解释:计算字符串A的长度
SQL语句:DATE_SUB(P_DATE, INTERVAL 1 DAY);
DATE_ADD(P_DATE, INTERVAL 1 DAY);
解释:将时间 P_DATE 减去一天和增加一天
SQL语句:ORDER BY 3
解释:根据表的第三个字段排序
游标:
CREATE PROCEDURE proc_test()BEGIN
– 定义变量
DECLARE done INT DEFAULT FALSE;
DECLARE field_1 VARCHAR(20);
DECLARE field_2 VARCHAR(20);-- 创建游标,并存储数据
DECLARE cur_list CURSOR FOR SELECT id, name FROM user;
– 游标中的内容执行完后将done设置为true
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true;
– 打开游标
OPEN cur_list;
– 执行循环 read_loop : LOOP
– 取游标中的值
FETCH cur_list INTO field_1, field_2;
– 判断是否结束循环,一定要放到FETCH之后,因为在fetch不到的时候才会设置done为true
– 如果放到fetch之前,先判断done,这个时候done的值还是之前的循环的值,因此就会导致循环一次
IF done THEN
LEAVE read_loop;
END IF;
-- 执行SQL操作
SET @sql_insert = CONCAT("insert into user_bak(id, name) VALUES ('", field_1, "','", field_2 ,"')");
PREPARE sqlli FROM @sql_insert;
EXECUTE sqlli;
COMMIT;
END LOOP read_loop;
-- 释放游标
CLOSE cur_list;END
函数:
create function 函数名([参数列表]) returns 数据类型begin
sql语句;
return 值;end;
– 最简单的仅有一条sql的函数create function myselect2() returns int return 666;
– 调用函数select myselect2();
– 带传参的函数create function myselect5(name varchar(15)) returns intbegin
declare c int;
select id from class where cname=name into c;
return c;end;select myselect5(“python”);
SQL语句:EXIT_LABEL:BEGIN LEAVE EXIT_LABEL; END
解释:退出存储过程
SQL语句:CREATE TEMPORARY TABLE X SELECT * FROM Y;
解释:将从表Y查到的数据复制给临时表X
SQL语句:CREATE VIEW X AS Y
解释:将表Y创建视图X
SQL语句:[CHARSET|CHARACTER SET]
解释:指定字符集
SQL语句:
SELECT SUBSTRING(‘MYSQL SUBSTRING’, 7);
SELECT SUBSTRING(‘MYSQL SUBSTRING’, 0);
SELECT SUBSTRING(‘MYSQL SUBSTRING’ FROM -9);
SELECT SUBSTRING(‘MYSQL SUBSTRING’,1,5);
SELECT SUBSTRING(‘MYSQL SUBSTRING’ FROM 1 FOR 5);
SELECT SUBSTRING(‘MYSQL SUBSTRING’ FROM -15 FOR 5);
解释:
获取字符串第7个(包含第7个)字符以后的子字符串
返回空字符串
获取字符串倒数第9(包含倒数第9)个以后的子字符串
获取字符串第1个(包含第1个)以后5个的子字符串
获取字符串第1个(包含第1个)以后5个的子字符串
获取字符串倒数第15(包含倒数第15)个以后的5个子字符串(如果15大于字符串总长度,返回空字符串。
SQL语句:B NOT IN (‘1’,‘2’);
解释:B不在(‘1’,‘2’)里的集合
show variables like ‘%char%’;
解释:查询mysql安装目录
SQL语句:SET SQL_SAFE_UPDATES = 0;
解释:接触数据库安全模式