初学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