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)
如果一个选择语句块有一个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)