mysql-readme

1. group by 子句
   如果一个选择语句块有一个group by子句,在select子句中指定的任何列都必须专门作为聚合函数的一个参数出现,或者位于group by子句中给出的列的列表中。

2. having 子句
   having子句中的所有列指定必须出现在一个聚合参数中,或者出现在group by子句指定的列的列表中。

3. union 取多个集合的并集

4. replace 语句,插入新数据,覆盖老数据

5. 数据表的 导出和导入 select XXXX out file 'xxxxxxxxx' , load data infile 'xxxxx' (replace) into table xxx

6. mysql 表联接
  [1]
  SELECT sensor.HID , sensor.SID FROM sensor , tsdata  
WHERE sensor.SID = tsdata.SID AND tsdata.CollectTime > '2012-7-24 9:07:59';
  [2]
  SELECT sensor.HID , sensor.SID FROM sensor INNER JOIN tsdata  
ON( sensor.SID = tsdata.SID ) 
WHERE tsdata.CollectTime > '2012-7-24 9:07:59';
  
  首先说明两个sql语句的执行过程 ,性能比较 
  1. 首先得到两个表的笛卡尔积集合,在利用where条件进行筛选。
  2. 首先得到应用on条件后的两个表的笛卡尔积集合,在利用where条件进行筛选。  
     两个sql语句执行结果相同,很明显第二个sql效率高。

  a. 内联接定义
     inner join on (...) , 在连接列集合的内部取子集。关键字inner可以省略。
     
  b. 外联接
     left outer on (...) , right outer on (...) , full outer on (...), 左外连接表示left左表必须出现在中间结果中,同理
     右外连接表示left右表必须出现在中间结果中,全连接两个表的数据都出现在中间结果中。

  c. 自然联接可以缩短sql语句长度值,实际上mysql内部将自然联接转换层内、外联接,所以自然联接极少使用。

  d. 联接列中的附加条件的影响 
     注意联接列中的附加条件,mysql处理方式:mysql分两步处理显示联接,
     第一步:应用联接列及附加条件,统一进行内连接处理(注意是内联接),得到中间集合。
     第二步:结合具体的连接类型(inner、left、right、full),对中间集合进行处理,得到最终集合。

  e. 交叉联接(内联接的同义词)

  f. 使用using替换联接条件, 使sql语句更短
     如果联接列名字相同, 且联接条件就是两者相等,可以使用using。
     例如:from a inner join b on a.col = b.col 等价于 from a inner join b using (col)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值