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

原文地址:https://www.cnblogs.com/zhizihuakai/p/3723542.html