MySQL数据库中一些常见问题

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

转载于:https://www.cnblogs.com/dengjunwu/articles/3620546.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值