Navicat操作(2)

交叉链接--笛卡尔积

  • #表1是主表,表2是从表,
  • select * from 表1,表2; # 连表,全关联,将两张表连在一起(可能有重复字段)
  • select * from 表1,表where 表1.id=表2.pid; #找到两表的对应关系 pid是关联字段
  • select 表1.name from 表1,表where 表1.id=表2.pid and 表1.name=""; # 筛选

关联条件:

  • WHERE:适用于所有关联查询
  • ON:只能和JOIN一起使用,只能写关联条件,虽然关联条件可以并到WHERE中和其他条件一起写,但分开写可读性更好。
  • USING:只能和JOIN一起使用,而且要求两个关联字段在关联表中名称一致,而且只能表示关联字段值相等

内连接:inner join

  • 隐式:SELECT [cols_list] from 表1,表2 where [condition]
  • 显式:SELECT [cols_list] from 表1 INNER JOIN 表2 ON [关联条件] where [其他筛选条件]
  • SELECT [cols_list] from 表1 CROSS JOIN 表2 ON [关联条件] where [其他筛选条件]
  • SELECT [cols_list] from 表1 JOIN 表2 ON [关联条件] where [其他筛选条件]

左链接:left join

右连接:right join

全链接:full join

外链接:outer join

条件查询:where 

分组查询:group by

聚合函数

  • avg(【distinct】expr)返回expr 的平均值
  • count(【distinct】expr)返回expr的非NULL值的数目
  • MIN(【DISTINCT】 expr)返回expr的最小值
  • MAX(【DISTINCT】 expr)返回expr的最大值
  • SUM(【DISTINCT】 expr)返回expr的总和

筛选:having

排序:order by

分页:limit

子查询

  • where型子查询
  • from型子查询
  • exists型子查询

where型子查询

  1. IN:等于任何一个 。例: a=IN( c , d )等价于a=c or a=d
  2. ALL:和子查询返回的所有值进行比较。例:  a>ALL( c , d) 等价于 a>c && a>d
  3. ANY:和子查询返回的任意一个值比较。例:a>ANY( c ,d ) 等价于 a>c or a>d
  4. EXISTS:判断子查询是否有返回结果(不关心具体行数和内容),如果返回则为TRUE,否则为FALSE。
原文地址:https://www.cnblogs.com/liang1013/p/13860646.html