MySQL编程基础
本文是关于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至当前时间/指定时间的秒数)【不可设置时区】 
⑦获取时间的字段值(获取年月日等)
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号