本文是关于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至当前时间/指定时间的秒数)【不可设置时区】
⑦获取时间的字段值(获取年月日等)

最新文章

  1. $.extend()的用法【转】
  2. phpexcel导入数据部分数据有误
  3. C# HmacMD5 加密
  4. poj 1806 分块模拟
  5. DBCC CHECKDB
  6. 手机触摸touch事件
  7. Android开发(三十一)——重复引用包错误Conversion to Dalvik format failed
  8. Linux下MySQL不能远程访问
  9. 客户关系管理系统(CRM)的开发过程中使用到的开发工具总结
  10. Shader for sprite clipping
  11. Arch linux安装
  12. 如何正确理解正则表达式中的分隔符 \b
  13. 二叉查找树的C++实现
  14. bat 文本合并
  15. [na][dhcp]dhcp细枝末节&amp;dhcp防攻
  16. Yii2 Restful api搜索实现
  17. Python open 对应的参数
  18. mySQL InnoDB 的性能问题讨论
  19. u3d中的INput
  20. Sublime Text 3快捷键汇总

热门文章

  1. 【LeetCode】205. Isomorphic Strings
  2. Unity 游戏框架搭建 (四) 简易有限状态机
  3. Bootstrap进度条
  4. ASP.NET MVC Autofac依赖注入的一点小心得(包含特性注入)
  5. spring +springmvc+mybatis组合applicationContext.xml文件配置
  6. Kinect 常用识别手势
  7. Wiser的Junit测试用法
  8. Java Jpa 规范
  9. Spark的误解-不仅spark是内存计算,hadoop也是内存计算
  10. POJ 3279 枚举(思维)