MySQL查询的5种子句:
where(条件查询)、having(筛选)、group by(分组)、order by(排序)、limit(限制结果数)
连接查询
连接查询:将多张表(>=2)进行记录的连接(按照某个指定的条件进行数据拼接)。
连接查询的意义: 在用户查看数据的时候,需要显示的数据来自多张表.
- 内连接(inner join)
INNER JOIN定义:在查询的几个表中,每个表都存在至少一个匹配时,INNER JOIN 关键字返回行。也就是共有部分,即几个表的交集。
1 | SELECT * FROM table1 INNER JOIN table2 ON 查询条件; |
外连接(outer jion)
- 左外连接(left outer jion)
LEFT JOIN定义:关键字会从左表那里返回所有的行,即使在右表 中没有匹配的行,右表没有的都会显示NULL。
1
SELECT * FROM table1(左表) LEFT JOIN table2(右表) ON 查询条件;
- 右外连接(right outer jion)
RIGHT JOIN定义:关键字会右表那里返回所有的行,即使在左表中没有匹配的行,左表没有的都会显示NULL。
1
SELECT * FROM table1(左表) RIGHT JOIN table2(右表) ON 查询条件;
- 完全外连接(full join)
是结合左连接与右连接的方式,会得到两表都会没有的记录,以NULL的形式显示,但是MySQL不支持。不过可以用UNION关键字来建立左连接与右连接
1
2
3SELECT * FROM table1(左表) LEFT JOIN table2(右表) ON 查询条件(注意不要有分号)
UNION
SELECT * FROM table1(左表) RIGHT JOIN table2(右表) ON 查询条件;自然连接(natural jion)
自然连接的作用:自动将表中相同的列进行匹配,同时排除掉重复出现的列,保证相同的列只出现一次。1
SELECT * FROM table1 natural join table2;
子查询
子查询是一个查询语句嵌套着另外的查询语句,用来进行一定层次的查询,其中子查询相当于第一步查询过滤,外查询就是最后得到结果的查询。
合并查询
合并查询主要是UNION与UNION ALL两个,是将查询结果合并,但是必须满足:合并的列的数据与数据类型必须相同。