MySQL的一些语法总结
初学MySQL,今天遇到了一个问题,然后汇总了一下MySQL的一些语法
1. date和datetime类型是不同的
date只记录日期(包括年月日),datetime记录日期和时间(包括年月日时分秒)
注:这一点和sql server 不同
2. NOW()函数和SYSDATE()函数也是不同的
NOW()函数 记录操作开始时间(在操作的任意阶段都是一样,无论操作中间停留了多长时间),SYSDATE()函数 记录实时时间(在操作的任意阶段都不一样)
3. 删除数据的语法
DELETE FROM table_name WHERE .....
4. int后面的长度表示什么
不知道有没有像我一样,每次设置长度时都很纠结的,相信看完这篇文章你不会再纠结 http://www.cnblogs.com/echo-something/archive/2012/08/26/mysql_int.html
5. 事物的使用语法
START TRANSACTION; ...... COMMIT;
6. GROUP BY
SQL写法
SELECT COUNT(*), NAME, AGE FROM tablename a GROUP BY NAME,AGE ORDER BY id DESC
MySQL写法
SELECT COUNT(*), NAME, AGE FROM tablename a GROUP BY AGE ORDER BY id DESC
这里可以看出一点区别,SELECT语句里面的除了函数,在SQL中需要全部列出来(即NAME,AGE字段),而MySQL中则不需要全部列出来
7. if else 使用方法
IF search_condition THEN statement_list [ELSEIF search_condition THEN statement_list] ... [ELSE statement_list]
示例:
-- p_oper 1#添加,2#修改,3#删除 IF (p_oper = 1) THEN -- 添加收货地址 INSERT INTO tbname (address, contacter, phone, cid, state) VALUES (p_address, p_contacter, p_phone, p_cid, p_state); ELSEIF (p_oper = 2) THEN -- 修改收货地址 UPDATE tbname SET address = p_address, contacter = p_contacter, phone = p_phone, state = p_state, updatetime = CURRENT_TIMESTAMP, deleted = p_deleted WHERE mcaid = p_mcaid; ELSEIF (p_oper = 3) THEN -- 删除收货地址 UPDATE tbname SET deleted = p_deleted WHERE mcaid = p_mcaid; END IF;
8. 变量使用
DECLARE startrow INT DEFAULT 0; -- 从第几行开始查询 DECLARE pagecount INT DEFAULT 10; -- 一页多少条 IF(p_pagenum > 0) THEN -- 计算起始条数 SET startrow = p_pagenum * pagecount; END IF; IF (p_cid > 0) THEN SELECT * FROM tablename WHERE ...... ORDER BY createtime DESC LIMIT startrow, pagecount; END IF;
MySQL参考手册:http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html
MySQL错误大全:http://www.cnblogs.com/xugang/articles/882943.html