本文是关于MySQL编程中的一些基础知识,包括变量和运算符、常用语句、函数。
一、变量与运算符
1.用户会话变量声明:SET @变量名 = 表达式;//即:用户会话变量无需提前定义,直接用赋值语句赋值,就算是定义了(也可用SELECT赋值语句赋值)
【无需指定类型,生命周期:关闭服务器链接前】
2.局部变量声明:DECLARE 变量名 数据类型;
【必须指定类型,生命周期:定义局部变量的小范围(类似于Java的{}内)】
3.运算符
(1)算术运算符:与Java相同
(2)比较运算符:大部分与Java相同。不同的地方:=(等于),<>(不等于【!=也是不等于】),<=>(相等或都为NULL),IS NULL(为空),BETWEEN … AND …(在区间内),IN(…)(在集合内),LIKE(模式匹配)
(3)逻辑运算符:与(AND,&&),或(OR,||),非(NOT,!),异或(XOR)
(4)位运算符:与Java相同
二、语句
1.赋值语句:
(1)SET:
SET 变量 = 表达式;
(2)SELECT:
SELECT 表达式 INTO 变量; //不产生结果集 SELECT 变量 := 表达式; //产生结果集
(3)可以同时给多个变量赋值,用逗号隔开。如:SET 变量1 = 表达式1, 变量2 = 表达式2, ……;
2.重置命令结束标记:DELIMITER。由于MySQL客户机的默认结束标记和语句的结束标记相同,都是分号,所以在写语句块的时候,为避免语句块被;拆开,应该在语句块前重设客户机结束标记,然后在语句块结束后改回原样:
DELIMITER $$
:将客户机结束标记设为$$
3.BEGIN-END语句块:将功能封装到存储过程、函数、触发器、事件等存储程序内部。
DELIMITER $$ //将客户机结束标记改为$$ BEGIN 要执行的功能代码; END; $$ DELIMITER ; //将客户机结束标记改回;
4.条件控制语句
(1)IF语句
IF 条件 THEN 语句块; ELSE IF 条件 THEN 语句块; …… ELSE 语句块; END IF;
(2)CASE语句
CASE 表达式 WHEN 值1 THEN 语句块; WHEN 值2 THEN 语句块; …… ELSE 语句块; END CASE;
5.循环语句
(1)WHILE-DO语句
WHILE 条件表达式 DO //继续循环的条件 循环体; END WHILE;
(2)REPETE-UNTIL语句
REPEAT 循环体; UNTIL 条件表达式 //跳出循环的条件 END REPEAT;
(3)LOOP语句
循环标签:LOOP 循环体; IF 条件表达式 THEN LEAVE 循环标签; //跳出循环的条件 END IF; END LOOP;
(4)LEAVE和ITERATE
类似于Java中的break和continue:LEAVE 循环标签;
或ITERATE 循环标签;
循环标签:给循环起的名字。在循环开始前加上,格式是:循环标签:
。
在循环结束语句后可以标记循环标签,比如:END WHILE 循环标签;
。
三、函数
1.自定义函数
DELIMITER $$ CREATE FUNCTION 函数名(参数1,参数2,…) RETURNS 返回值类型 [函数选项] BEGIN 函数体; RETURN 返回值; END; $$ DELIMITER ;
函数选项:需要时再详细了解。用的比较多的是NO SQL:函数体中不包含SQL语句
2.系统函数
(1)数学函数
(2)字符串函数
(3)日期和时间函数
①获取当前日期:CURDATE()
,CURRENT_DATE()
(YYYY-MM-DD)【可设置时区】
②获取当前时间:CURTIME()
,CURRENT_TIME()
(hh:mm:ss)【可设置时区】
③获取当前日期时间:NOW()
,CURRENT_TIMESTAMP()
,LOCALTIME()
,SYSDATE()
(YYYY-MM-DD hh:mm:ss)【可设置时区】
④时间戳转为日期时间:FROM_TIMESTAMP(TIMESTAMP)
(将指定时间戳的时间转为YYYY-MM-DD hh:mm:ss)【可设置时区】
⑤获取当前UTC日期/时间:UTC_DATE()
,UTC_TIME()
(分别是YYYY-MM-DD和hh:mm:ss)【不可设置时区】
⑥获取当前时间戳:UNIX_TIMESTAMP()
,UNIX_TIMESTAMP(DATETIME)
(从1970-01-01 00:00:00至当前时间/指定时间的秒数)【不可设置时区】
⑦获取时间的字段值(获取年月日等)