mysql技巧

220 阅读2分钟

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、子查询

11、插入记录

  • 语法 insert into TABLE(...colum) values (...val1),(...val2);

  • 复制表数据到另一个表 insert into ... select...

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