1 . Order by子句
select * from 表名 order by 列1 asc|desc,列2 asc|desc,...
将行数据按照列1进行排序,如果某些行列1的值相同,则按照列2排序,以此类推,默认值从小到大排列,升序为asc,降序为desc.
- 主键冲突
a. 更新
insert into 表名字[字段列表(一定要包含主键)] values (字段值列表) on duplicate key update 字段 = 新值;
b. 替换
replace into 表名 [字段列表(包含主键)] values(字段列表值);
(如果 表没有此记录,这插入,如果已经存在,则更新)
c . 忽略
INSERT IGNORE INTO 表名[字段列表(包含主键)] VALUES(字段列表值);
(如果 表没有此记录,这插入,如果已经存在,则更新)
3.蠕虫复制
表结构复制:
create table [if not exists] 新表名 like 数据库.表名字(如果是同一个数据库,数据库.可以省略);
数据复制:
insert into 表名字[字段列表] select 字段列表/* from 数据表名;
- 去重
distinct:去重,查出来后的结果,将重复的给去除掉(所有字段都相同)
如果主键自增长,就不能使用所有列去重了,要使用部分列的形式去去重。
select distinct age from student;
5.子查询
select * from (select * from 表名字) as 别名(别名不能省)
子查询可以用在 当作数据源、where子句、字段列表中
- group by
基本语法:group by 字段名 [asc|desc];
单字段分组
多字段分组 : 先根据一个字段进行分组,然后对分组后的结果再次按照其他字段进行分组
group_concat(字段名) : 可以对分组的结果中的某个字段进行字符串连接
7.Having子句
here是针对磁盘数据进行判断,进入到内存之后,会进行分组操作,分组结果就要使用having子句进行处理,having能做where能做的几乎所有事情,但是where却不能做having能做的事情
- Limit子句
语法:limit 起始位置, 长度;(起始位置从0开始)