1、查询某月的所有数据,可是使用模糊查询
例如:like '2013-09%' 这就是查询2013年9月的所有数据
2、大数据操作进行表连接时耗费效率
可以先通过子查询缩小启动表和被驱动表,将缩小后的驱动表与被驱动表进行连接,可以提高效率,例如:
SELECT a.pref FROM (SELECT h03.UserID AS 'userId', h03.BuildingID AS 'buildingId' FROM H03_HeatRelation_User h03) u LEFT JOIN (SELECT h02.AreaID AS 'areaId', h02.BuildingID AS 'buildingId' FROM H02_HeatRelation_Building h02 ) b ON u.buildingId = b.buildingId LEFT JOIN (SELECT h01.PrefectureID AS 'pref', h01.AreaID AS 'areaId' FROM H01_HeatRelation_Area h01) a ON b.areaId = a.areaId WHERE u.userId = '0416d8d8-f059-4e9c-8d2d-3bebfc23f610'
3、MySQL系统时间,以及格式化
now():以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间
curdate():以’YYYY-MM-DD’的格式返回今天的日期
curtime():以’HH:MM:SS’的格式返回当前的时间
时间格式化函数:date_format(日期字段,’%Y-%m-%d’)
4、MySQL时间运算
时间运算函数有:DATE_ADD(date,INTERVAL expr type),DATE_SUB(date,INTERVAL expr type)
date是被运算的时间字段, expr是操作的数值, type是操作数值的类型
SELECT OrderId,DATE_ADD(OrderDate,INTERVAL 2 DAY) AS OrderPayDate FROM Orders
这个SQL语句中Date_add函数的意思是将OrderDate字段的时间加2天
5、空值转换函数
SQL Server/Access : ISNULL( , )
Oracle : NVL( , )
MySQL : IFNULL( , )
6、MySQL死锁的处理
SHOW INNODB STATUS:查看InnoDB的情况, SHOW PROCESSLIST:查看进程, kill进程ID:杀死进程
7、MySQL类型转换
类型转换函数有两个:
1 CAST(value as type); 2 CONVERT(value, type);
可以转换的类型是有限制的。这个类型可以是以下值其中的一个:
- 二进制,同带binary前缀的效果 : BINARY
- 字符型,可带参数 : CHAR()
- 日期 : DATE
- 时间: TIME
- 日期时间型 : DATETIME
- 浮点数 : DECIMAL
- 整数 : SIGNED
- 无符号整数 : UNSIGNED
8、MySQL中四舍五入与舍尾
round()函数是四舍五入,floor()函数是舍尾(需要注意的是,负数的舍尾并非变大,而是变小,例如:floor(-1.3)的结果是-2)。
1 floor(value); 2 round(value);
9、CASE WHEN语句的使用
格式如下,最后一定要有end
1 case 2 when 判断条件1 then 结果1 3 when 判断条件2 then 结果2 4 else 为满足任何条件的结果 5 end
10、MySQL的函数:count(字段),sum(字段)
如果统计的记录数为0,count()返回0,sum()返回null。
11、MySQL获取随机数
若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1))。
例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机整数, 可使用以下语句:
1 SELECT FLOOR(7 + (RAND() * 6));
12、mysql常用函数详解和实例
http://blog.youkuaiyun.com/ykm0722/article/details/7003702
13、事物锁死
当事物里面的update操作过于庞大,一旦发生异常进行回滚将非常缓慢,所以尽量避免庞大的事物。
14、update如何表连接
UPDATE H02_HeatRelation_Building b JOIN (
SELECT h03.BuildingID AS 'BuildingID', COUNT(1) AS 'RUserCount', SUM(h03.Acreage) AS 'UserAcreage'
FROM H03_HeatRelation_User h03
GROUP BY h03.BuildingID
) u ON b.BuildingID = u.BuildingID SET b.RUserCount = u.RUserCount, b.UserAcreage = u.UserAcreage
MySQL需要先join然后Set,而SQLServer是先Set然后Join