Navicat操作(2)
交叉链接--笛卡尔积
- #表1是主表,表2是从表,
- select * from 表1,表2; # 连表,全关联,将两张表连在一起(可能有重复字段)
- select * from 表1,表2 where 表1.id=表2.pid; #找到两表的对应关系 pid是关联字段
- select 表1.name from 表1,表2 where 表1.id=表2.pid and 表1.name=""; # 筛选
关联条件:
- WHERE:适用于所有关联查询
- ON:只能和JOIN一起使用,只能写关联条件,虽然关联条件可以并到WHERE中和其他条件一起写,但分开写可读性更好。
- USING:
内连接:inner join
- 隐式:SELECT [cols_list] from 表1,表2 where [condition]
- 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型子查询
- IN:等于任何一个 。例: a=IN( c , d )等价于a=c or a=d
- ALL:和子查询返回的所有值进行比较。例: a>ALL( c , d) 等价于 a>c && a>d
- ANY:和子查询返回的任意一个值比较。例:a>ANY( c ,d ) 等价于 a>c or a>d
- EXISTS:判断子查询是否有返回结果(不关心具体行数和内容),如果返回则为TRUE,否则为FALSE。