1、索引与外键:
- 单索引和复合索引,复合索引根据前缀来排序。ingore 避免重复插入记录
- 设置外键时候,外键的属性不要设置为not null ,因为删除时需要SET NULL。 更新是需要设置CASCADE。
- 索引讲解 segmentfault.com/a/119000001…
2、group by 进行分组,一般配合聚合函数 ,也可以进行去掉重复值;
DISTINCT 也能去除重复值
3、like 通配符
- ‘%’多个 ‘_’一个 ‘[abc]’abc其中一个 [^abc]不是abc之间
4、ESCAPE 转义符 Like '%M%' ESCAPE M; 把 M 后面的 % 转义成字符串‘%’
5、order by(排序意思)colum ; 永远在最后一句
6、where 句子比select句子快执行
- 基本执行顺序: from ->where ->group by ->having -> select ->order by
7、使用CAST()转化列的类型
- 比如字符串和数字进行相加,就要把字符串转化为数字类型的;
- 例子: CAST(age as int(10))
8、聚合函数
where 语句后想用聚合函数,需要group by [,...colum] having 聚合() 集合;
-
sum() 总数和
- 数字总数和 select sum(cloum) from table;
-
count() 总条数
- 'cloum' 为null不记录,' * '所有都记录。 select count(cloum) from table;
-
Max()/Min() ----最大最小值
- 了解一列中最大最小值,什么类型都可以: select Max(colum) as max from table;
-
Avg() 平均值
- 数字平均值
-
集合函数也可以组合使用
- select sum(age) as sum, count(age) as count from table;
-
group by 分组
- 单列分组
- 多列分组
-
having 后面跟着聚合函数,一般与group by 一起使用

9、多表连接查询
-
mysql详细多表连接:mysql详细多表连接
-
二表连接
- select name,age,sex,dep from user,teacher where user.teacher_id=teacher.id;
-
多表连接
- from子句中应列出所有连接表的表名
- where子句应该定义连接关联条件
- 当列名为多个表共有时,要指名列的存在表,既采用"tablename.columname"的形式;
- n个表连接,就会出现n-1个join
-
采用join关键字来创建连接
- left join ... on...
- right join...on...
- inner join ..on... 把相同匹配到新的临时表,匹配不成功就没有加入临时表
- full join..on..
- ........
-
波浪线就是多表连接返回的数据

-
UNION 运算符执行集合并运算,自动从结果中消除重复的行;(多张表合并)
-
UNION ALL 不消除重复字段
-
UNION JOIN 连接表

10、子查询



- 树查询:
- mysql使用函数查询树形数据: blog.csdn.net/qq12547345/…
- java+mysql递归拼接树形JSON列表: blog.csdn.net/qq12547345/…
11、插入记录
-
语法 insert into TABLE(...colum) values (...val1),(...val2);
-
复制表数据到另一个表 insert into ... select...

-
从表中数据复制一个新表 select ... into ..
