DQL:数据查询复杂的(多表)

附:SQL语句的分类:

*DDLData Definition Language数据定义语言

*DMLData Manipulation Language 数据操作语言

DCLData Control Language 数据控制语言

*DQLData Query Language 数据查询语言

*TPL:事务处理语言

 

连接查询(面试几率很大)

基本语法形式:FROM 1 连接类型 表2 [on 连接条件][where 筛选条件]

约定:表1在连接类型的左边,称之为左表

           2在连接类型的右边,称之为右表

 

交叉连接:cross join

 

返回左表和右表的笛卡尔积(左表5条记录 ,右表6条记录 5*6=30条)

 

select * from customer,orders;

 

select * from customer cross join orders;

 

内连接: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;

外连接: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;

posted @ 2018-08-02 14:09  梦想家ROBOT  阅读(487)  评论(0编辑  收藏  举报