子查询和联结查询
子查询:嵌套在其他查询中的查询
select max(age) as max_age from table1; #查询年龄最大的值
select name from table1 where age = max_age; #查询年龄最大的人名
select name from table1 where age = (select max(age) from table1); #查询年龄最大的人名
可以看出子查询更加灵活简单。子查询经常与IN操作符联合使用
联结查询:将有关系的两个或多个表联结在一起作为查询的表。
有内部联结,自联结,外联结。
内部联结: t1.name = adress.name 使用完全限定名作为条件,没有这个条件会出现笛卡尔积
select t1.name, t1.age,adress from table1 t1, adress where t1.name = adress.name and age >0 and adress like 'sh';#where子句联结
select t1.name, t1.age,adress from table1 t1 inner join adress on t1.name = adress.name #使用INNER JOIN 联结
自联结:同一个表之间联结
使用不同的别名,不然会出现混乱
select t1.name, t2.name from table1 t1, table1 t2 where t1.age = t2.age;
外联结
select