mysql 联结 子查询

在可以指定一个表名的任何地方,都可以一个括号括起来的join子句替换

1. 自然联结

inner join (默认联结)

left (outer) join  左表可以为NULL

right (outer) join  右表可以为NULL

full (outner) join 左表和右表都可以为NULL


2. cross join  笛卡尔积

返回两张表的所有字段, 不去重重复列名

条件用where   比如 select a.*, b.* from a cross join b where

等同于  select * from a, b where ...



子查询

1> from子句中的任何表名替换成一条完整的select语句.当然,必须分配一个相关名称。

例如select p.name, p.id from (select * from students) as p


2>where子句 可以把一个表查询作为一个in、some、any、all、exists谓词的比较值列表的来源。  (即嵌套查询,子查询的结果不输出给主查询)
例如:Select * from students where students.area in (select area.Name from areas)

All some any 之前皆可用 > 、 = 、<、<=、>=、<>来进行筛选



关于 效率问题: 
join>exist, 通常情况下用join不用子查询
对于小数据都可以, 大数据表绝对不允许join和子查询的

你可能感兴趣的:(高性能高可靠服务器)