当前位置: 首页>后端>正文

mysql严格语法校验 mysql语句语法

常用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;
解释:接触数据库安全模式



https://www.xamrdz.com/backend/3sm1964087.html

相关文章: