代码改变世界

MySQL学习笔记

2015-01-26 13:58  郭志通  阅读(157)  评论(0编辑  收藏  举报

基础知识

1、插入、更新一句搞定

在用数据库的时候经常会遇到这种情况:如果不存在则插入,如果存在则更新(通过主键判断是否存在),粗暴并不简单的做法是分成三步:

  1. 先select出来,判断有没有数据;
  2. 如果有数据,执行更新操作;
  3. 如果没有数据,执行插入操作;

这种处理方式并不严谨,数据库提供了另外一种方式来实现:ON DUPLICATE KEY UPDATE,比如:

INSERT INTO 
	table (a,b,c) VALUES (1,2,3),(4,5,6)
ON DUPLICATE KEY UPDATE 
	c=VALUES(a)+VALUES(b);  

配合IF这个功能的威力还会增强不少。另外有时候需要将删除、插入用一句搞定,那么可以用REPLACE INTO来做。


2、group by的其他信息

经常会用group by配合max/min来求最值,但是需要注意的是下面这段SQL:

select key1, key2, max(val) from your_table group by key1

直观上我们希望得到的key2是对应val最大值的那条记录,但事实上并非如此,而是被group by分组之后的第一条数据。那么如果想要返回对应的记录只需要先排序让对应的记录到第一个即可:

select key1, key2, max(val) from (select * from your_table order by val desc) t group by key1.


3、数据库和实例

MySQL是单进程多线程,也就是说MySQL在系统上的体现就是一个进程。而数据库则是指一系列的物理文件:

 

 

 

 

 

 

 

高级货

 

 

 

 

 

----- updating -----