简单查询(使用表的别名):
--语句选取 "记录" 的所有访问记录。我们使用 "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;