内连接查询
可以查询两个或者两个以上的表,当两个表中存在表示相同意义的字段时,可以通过该字段来连接这两个表;当该字段的值相等时,就查询出该记录。
SELECT * from t_company,t_department WHERE t_company.id=t_department.company_id;
带in关键字的子查询
select * from t_department where company_id in (select id from t_company)
带exists关键字的子查询
exists关键字表示存在,使用exists关键字时,内层查询语句不用返回查询的记录。而是返回一个真假值。
如果内层查询语句查询到满足条件的记录,就返回一个真值(true);否则,返回一个假值(false);
当返回值为true时,外层查询语句将进行查询;而返回false时,外层查询语句不进行查询或者查询不出任何记录。
select * from t_department where EXISTS (select id from t_company WHERE OWNER = '吴彤' )
select * from t_department where not EXISTS (select id from t_company)
合并查询结果
将多个select语句的查询结果合并到一起 union关键字,数据库会将所有的查询结果合并到一起,然后除掉相同的记录; union
all关键字,只是简单的合并到一起
select id from t_company union select company_id from t_department;
select id from t_company union all select company_id from t_department;