总结自《数据库原理及应用》(MySQL版)清华大学出版社
#在语法中,[ ]表示该部分可选,< >表示该部分必有,写具体命令时不写;#为单行备注,/**/多行
常量:
1.字符串常量是使用单引号扩起来的字符序列。
2.数值常量中科学计数法表示方法:eg.1250 = 1.25E + 3。
3.日期和时间常量使用特定格式的字符日起至表示,用单引号括起来。
4.布尔值常量:SQL命令运行的结果用1表示true,0表示false。
5.NULL值参与的运算结果仍为NULL。
变量:
1.局部变量的定义与赋值:
SET @局部变量名 = 表达式1[,@局部变量名 = 表达式2,...];
2.局部变量的显示:
SET @局部变量名[,@局部变量名,...];
3.全局变量(系统提供并赋值,用户不能定义,只能使用)
@@back_log 返回MySQL主要连接请求的数量
@@basedir 返回MySQL安装基准目录
@@license 返回服务器的许可类型
@@port 返回服务器侦听TCP/IP连接所用的端口
@@storage_engine 返回存储引擎
@@version 返回服务器版本号
1.字符串函数
1.1字符串长度函数
·CHAR_LENGTH(str):返回字符串str所包含的字符个数
·LENGTH(str)返回字符串的字节长度(一个汉字是3字节,一个数字或字母是1字节)
1.2合并字符串函数
·CONCAT(s1,s2,...)返回连接参数产生的字符串
1.3字符串大小写转换函数
·LOWER(str):大写转化成小写
·UPPER(str):小写转化成大写
1.4删除空格函数
·LTRIM(str):返回删除前导空格的字符串str
·RTRIM(str):返回删除尾部空格的字符串str
·TRIM(str):返回删除两侧空格的字符串str
2.数学函数
·ABS(x):返回x的绝对值。
·PI():返回圆周率的值。
·SQRT():返回非负数的二次方根。
·MOD(m,n):返回m被n除后的余数。
·ROUND(x,y):把x四舍五入到y指定的精度返回;如果y为负数,则保留x值到小数点左边y位。
3.时间和日期函数
3.1获取当前系统的日期及取日期的年月日的函数
·CURDATE():返回当前系统的时间 'YYYY-MM-DD'。
·YEAR(d)、MONTH(d)、DAY(d):分别返还日期或日期时间d的年月日的值。
3.2获取当前系统的日期时间的函数
·CURRENT_TIMESTAMP()、LOCALTIME()、NOW()和SYSDATE()4个函数作用相同均返回当 前系统的日期时间 'YYYY-MM-DD HH:MM:SS'。
4.系统信息函数
·USER():返回当前登录的用户名。
·DATABASE():返回当前使用的数据库的名。
·VERSION():返回MySQL服务器版本号。
5.条件控制函数
·IF(条件表达式,v1,v2),真返回v1。
#CASE() CASE 表达式 WHEN v1 THEN r1 WHEN v2 THEN r2 ... [ELSE rn] END
6.数据类型转换函数
·CAST(x AS 新类型)、CONVERT(X 新类型):将一种类型的值转化为另一种类型的值。
1.1语句块
BEGIN SQL语句 | SQL语句块 END
1.2注释
·#后为单行注释
·/* */间可写多行注释
1.3重置命令结束标记
DELIMITER符号 #恢复使用分号作为结束标记 DELIMITER;
(
当包含多个SQL语句,每个语句都是以分号结尾,而服务器处理程序时遇到第一个分号则结束 程序的执行,这时就需要使用此语句修改语句的结束标记
符号一般使用特殊符号'$$''##''@@'等等避免使用/
)
2.1存储函数的创建
CREATE FUNCTION 函数名([参数名 参数数据类型[,...]]) RETURNS 函数返回值的数据类型 BEGIN 函数体; RETURN 语句; END
2.2调用存储函数
SELECT 函数名([参数值[,...]]);
2.3删除存储函数
DROP FUNCTION 函数名;
3.1程序中变量的使用
#声明变量 DECLARE 局部变量名[,局部变量名,...] 数据类型 [DEFAULT 默认值]; #为变量赋值 SET 局部变量名 = 表达式1[,局部变量名 = 表达式2,...];
(
作用范围是BEGIN...END语句
DECLARE声明的局部变量前不能加@
DEFAULT子句提供了一个默认值,如果没有给则默认NULL
)
3.2IF语句
#形式一 IF <条件> THEN SQL语句块1; [ELSE SQL语句块2;] END IF; #形式二 IF <条件1> THEN SQL语句块1; ELSEIF <条件2> THEN SQL语句块1; ... ELSE SQL语句块n; END IF;
3.3case语句
#形式一 CASE <表达式> WHEN <表达式值1> THEN SQL语句块1; WHEN <表达式值2> THEN SQL语句块2; ... WHEN <表达式值n> THEN SQL语句块n; [ELSE SQL语句块n+1] END; #形式二 CASE WHEN <条件1> THEN SQL语句块1; WHEN <条件2> THEN SQL语句块2; ... WHEN <条件n> THEN SQL语句块n; ELSE SQL语句块n+1 END;
3.4循环语句
LOOP循环
标签:LOOP SQL语句块; IF <条件表达式> THEN LEAVE 标签; #没有LEAVE语句将会死循环 END IF; END LOOP;
WHILE循环
WHILE <条件表达式> DO SQL语句块; END WHILE;
REPEAT循环
REPEAT SQL语句块; UNTIL <条件表达式> END REPEAT;
CREATE PROCEDURE 存储过程名() BEGIN 过程体; END
CALL 存储过程名();
#创建带参数的存储过程 CREATE PROCEDURE 存储过程名( [ IN | OUT | INOUT]参数1 数据类型, [ IN | OUT | INOUT]参数2 数据类型,... ) BEGIN 过程体; END
(
IN参数为输入参数,该参数值由调用者传入,并且只能被存储过程读取,不能在过程中修改这 个值。
OUT参数为输出函数,该类型的参数值由存储过程写入,此类型参数适用于存储过程向调用者 返回多条信息的情况,它在调用过程中为空,在过程的执行中将为这个参数指定一个值,并在 执行结束后返回。
INOUT参数同时具有以上两个参数的特性,在过程中可以读取和写入该类型参数。
)
DROP PROCEDURE 存储过程名;
1.1声明游标
DECLARE 游标名 CURSOR FOR SELECT 语句;
1.2打开游标
OPEN 游标名;
1.3提取游标
FETCH 游标名 INTO 变量名1[,变量名2...];
1.4关闭游标
CLOSE 游标名;
·%FOUND:最近一次指针取出值则返回真
·%NOTFOUND:与%FOUNT相反
·%ISOPEN:游标已打开则返回真
·%ROWCOUNT:返回已从游标中读取的记录数