个人MYSQL基础知识笔记

因为我处在写增删改查还得翻《mysql必知必会》的极低水平,所以就把一些知识点汇总起来 方 ( z a i ) 便 ( x i a n ) 记 ( d i u ) 忆 ( r e n ) \color{#4285f4}{方(zai)}\color{#ea4335}{便(xian)}\color{#fbbc05}{记(diu)}\color{#4285f4}{忆(ren)} zai便xiandiuren,并且会 持 ( b u ) 续 ( d u a n ) 更 ( d i u ) 新 ( r e n ) \color{#4285f4}{持(bu)}\color{#ea4335}{续(duan)}\color{#fbbc05}{更(diu)}\color{#4285f4}{新(ren)} buduandiuren

1.内联、交叉连接和外联
内联的时候on和where是一样的,外联的时候on只是产生一个连接关系,左联产生左表和右表交集以及左表剩余项(右表项置空null)右联反之。

示例:
a表     id   name     
        13                     
         2   李四                
         3   王武                        
b表     id   job   parent_id   
         1     23     1 
          2     34     2   
          3     34     4
  a.id同parent_id   存在关系   
 1) 内连接   
  select   a.*,b.*   from   a   inner   join   b     on   a.id=b.parent_id       
  结果是     
  13                   1     23     1   
  2   李四                  2     34     2   
  2)左连接   
  select   a.*,b.*   from   a   left   join   b     on   a.id=b.parent_id       
  结果是     
  13                   1     23     1   
  2   李四                  2     34     2   
  3   王武                  null   
 3) 右连接   
  select   a.*,b.*   from   a   right   join   b     on   a.id=b.parent_id       
  结果是     
  13                   1     23     1   
  2   李四                  2     34     2   
  null                       3     34     4   
 4) 完全连接   
  select   a.*,b.*   from   a   full   join   b     on   a.id=b.parent_id   
  结果是     
  13                  1     23     1   
  2   李四                 2     34     2   
  null                   3     34     4   
  3   王武                 null

2.同一个表可以定义两次表名并且使用

比如:
select a.* ,b.s_score as 01_score,c.s_score as 02_score from 
student a 
  join score $\color{red}{  b}$ on a.s_id=b.s_id and b.c_id='01'
  left join  score  $\color{red}{c}$ on a.s_id=c.s_id and c.c_id='02' or c.c_id = NULL where b.s_score>c.s_score
;

3.聚合函数汇总

>1.count
>(1)count(*):返回表中满足where条件的行的数量
>(2)count(列):返回列值非空的行的数量
>(3)count(distinct 列):返回列值非空的、并且列值不重复的行的数量
>(4)count(expr):根据表达式统计数据
>2.max和min函数---统计列中的最大最小值
>3.sum和avg函数---求和与求平均
>4.round(x,d)  ,x指要处理的数,d是指保留几位小数

4.where子句在分组前对记录进行过滤;having子句在分组后对记录进行过滤
5.HAVING可以单独使用而不和GROUP BY配合,如果只有HAVING子句而没有GROUP BY,表中所有的行分为一组
6.HAVING子句中的列,要么出现在一个组函数中,要么出现在GROUP BY子句中(否则出错)
7.分组SELECT的基本格式:

  select [聚合函数] 字段名 from 表名

    [where 查询条件]

    [group by 字段名]

    [having 过滤条件]

注意where在having之前

你可能感兴趣的:(其它)