day 35

day 35 MySQL数据操作

  1. 单表操作

    1. 分组指的是;将所有记录按照某个相同字段进行归类
    select 字段名,聚合函数 as 代替名 from 表名 group by 字段名 having 条件; # as 代替名 可写可不写
    
    # 聚合函数
    count() # 计数
    sum() # 求和
    max() # 最大值
    min() # 最小值
    avg() # 平均值
    
    # 二次筛选
    having 条件;
    
    # 执行顺序
    where > group py > having
    
    1. 升序、降序
    select * from 表名 order by 字段名 asc;# 升序
    select * from 表名 order by 字段名 desc;# 降序
    select * from 表名 order by 字段名1 desc,字段名2 desc;# 先对字段1降序,字段1有重复的则再对字段2进行降序
    
    1. 分页
    limit 起始行索引,行数;
    
    1. 使用顺序
    select * from 表名 where 条件 group by 条件 having 条件 order by 条件 limit 条件;
    where > group py > having > order by > limit # 执行优先级
    
  2. 多表操作

    1. 外键;表和表之间的约束关系

      1. 减少内存占用空间
      2. 方便修改,只需修改department表一次
      # 一对多
      constraint 外键名 foreign key (被约束字段) references 约束表(约束字段)
      																多													一
      
      # 多对多
      constraint 外键名1 foreign key (被约束字段1) references 约束表1(约束字段)
      constraint 外键名2 foreign key (被约束字段2) references 约束表2(约束字段)
      
      # 一对一 
      constraint 外键名 foreign key (被约束字段) references 约束表(约束字段)
      unique(被约束字段) # 不能有重复值
      
      1. pass
    2. 两表联查

      1. left join
      select * from 表1 left join 表2 on 字段1 = 表2.字段2; # 显示表1的全部内容
      
      1. right join
      select * from 表1 left join 表2 on 字段1 = 表2.字段2; # 显示表2的全部内容
      
  3. 优先级总结

select * from 表1 
left join 表2 on 表1.字段1 = 表2.字段2 
left join 表3 on 表1or表2.字段 = 表3.字段3
where 条件  group by 条件 having 条件 order by 条件 limit 条件;

原文地址:https://www.cnblogs.com/luocongyu/p/11773551.html