DQL:数据查询复杂的(多表)
Posted dreamrobot
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DQL:数据查询复杂的(多表)相关的知识,希望对你有一定的参考价值。
附:SQL语句的分类:
*DDL:Data Definition Language数据定义语言
*DML:Data Manipulation Language 数据操作语言
DCL:Data Control Language 数据控制语言
*DQL:Data Query Language 数据查询语言
*TPL:事务处理语言
连接查询(面试几率很大)
基本语法形式:FROM 表1 连接类型 表2 [on 连接条件][where 筛选条件]
约定:表1在连接类型的左边,称之为左表
表2在连接类型的右边,称之为右表
l 交叉连接:cross join
返回左表和右表的笛卡尔积(左表5条记录 ,右表6条记录 5*6=30条)
select * from customer,orders;
select * from customer cross join orders;
l 内连接:inner join
返回满足连接条件的所有记录。
隐式内连接:(不使用inner join关键字)
select c.*,o.* from customer c,orders o where c.id=o.customer_id;
显式内连接:(使用inner join关键字)
select * from customer c inner join orders o on c.id=o.customer_id;
l 外连接:outer join
左外连接:left outer join=left join
返回满足连接条件的所有记录,同时返回左表中剩余的其他记录
查询所有客户,有订单的把订单也显示出来
select * from customer c left outer join orders o on c.id=o.customer_id;
右外连接:right outer join=right join
返回满足连接条件的所有记录,同时返回右表中剩余的其他记录
查询所有订单,同时打印订单所属的客户
select * from customer c right outer join orders o on c.id=o.customer_id;
子查询
子查询也叫嵌套查询,是指在select子句或者where子句中又嵌入select查询语句
查询“陈冠希”的所有订单信息
select id from customer where name=’陈冠希’;
select * from orders where customer_id=1;
子查询:
select * from orders where customer_id=(select id from customer where name=’陈冠希’);
联合查询
union关键字。
联合查询能够合并两条查询语句的查询结果,去掉其中的重复数据行,然后返回没有重复数据行的查询结果
SELECT * FROM orders WHERE price>200 UNION SELECT * FROM orders WHERE customer_id=1;
以上是关于DQL:数据查询复杂的(多表)的主要内容,如果未能解决你的问题,请参考以下文章