SELECT 连表查询

简单查询(使用表的别名):

--语句选取 "记录" 的所有访问记录。我们使用 "table1" 和 "table2" 表,并分别为它们指定表别名 "t1" 和 "t2"(通过使用别名让 SQL 更简短):

SELECT t1.name, t1.url, t2.count, t2.date FROM table1 AS t1, table2 AS t2 WHERE t1.site_id=t2.id and t1.name="记录";

详细介绍:

-- 连接查询
-- 内连接:相当于查询 A B 交集的数据 

	-- 隐式内连接
	-- select 字段列表 from 表1,表2... where 条件
	-- select * from work_dep, work_emp;
	select * from work_dep, work_emp where work_dep.id = work_emp.dep_id;
	-- 查询 emp 的 name age, dep 表的 work_dep
	select work_emp.name, work_emp.age, work_dep.dep from work_dep, work_emp where work_dep.id = work_emp.dep_id;
	-- 别名
	select t2.name, t2.age as 年龄, t1.dep as 部门 from work_dep t1, work_emp t2 where t1.id = t2.dep_id;

	-- 显式内连接
	-- select 字段列表 from 表1 [inner] join 表2 on 条件
	select work_dep.dep, work_emp.name from work_emp inner join work_dep on work_dep.id = work_emp.dep_id;
	select work_dep.dep, work_emp.name from work_emp join work_dep on work_dep.id = work_emp.dep_id;
	select t2.dep, t1.name from work_emp as t1 inner join work_dep as t2 on t2.id = t1.dep_id;

-- 外连接: A 表中有与 B 表无关的数据时更明显
		-- 左外连接:查询 A 表的所有数据和交集数据
		-- select 字段列表 from 表1 left [outer] join 表2 on 条件
		select * from work_emp left join work_dep on work_emp.dep_id = work_dep.id;
		-- 右外连接:查询 B 表的所有数据和交集数据
		-- select 字段列表 from 表1 right [outer] join 表2 on 条件
		select * from work_emp right join work_dep on work_emp.dep_id = work_dep.id;
		
-- 子查询(嵌套查询)查询中嵌套查询

	-- 单行单列 条件 = != > <
		-- select 字段列表 from 表 where 字段名 条件 (子查询)
		select age from work_emp where id = 3;
		select * from work_emp where age > 19;
		select * from work_emp where age > (select age from work_emp where id = 3);
		
	-- 多行单列
		-- select 字段列表 from 表 where 字段名 in (子查询)
		select * from work_dep where id = 1 || id = 2;
		select * from work_emp where dep_id in (1, 2);
		select * from work_emp where dep_id in (select id from work_dep where id = 1 || id = 2);
		
	-- 多行多列
		-- select 字段列表 from (子查询) where 条件
		select * from work_emp where age > 20; 
		select emp.age, emp.name, dep.dep as "部门" from work_emp as emp, work_dep as dep where emp.dep_id = dep.id;
		select * from (select emp.age, emp.dep_id, dep.dep as "部门" from work_emp as emp, work_dep as dep where emp.dep_id = dep.id) as t1, work_dep as t2 where t1.dep_id = t2.id and t1.age > 20 and t2.id > 1;
		
		

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值