MySQL基础02

连接查询

  • 连接查询
    也叫做多表查询,需要关联多个表进行查询
    笛卡尔乘积:由于没有使用连接条件,或者连接条件无效

  • SQL99语法
    通过使用join关键字实现连接

  • 内连接、外连接

select 
	字段名1,字段名2
from 
	表1 (inner|left outer|right outer|cross) join 表2 on 关联条件
	(inner|left outer|right outer|cross) join 表3 on 关联条件
where
	筛选条件
group by
	分组字段
having
	分组后的筛选条件
order by
	排序的字段或表达式

案例:查询员工名和他的上级名


SQL92语法:
select 
	e.last_name,m.last_name
from
	employees e,employees m
where
	e.manager_id = m.employee_id;

SQL99语法:
select
	e.last_name,m.last_name
from
	employees e
join
	employees m
on
	e.manager_id = m.employee_id;

子查询

含义:一条查询语句中又嵌套了另一条完整的select语句,其中被嵌套的select语句,称为子查询或内查询
特点:
1.子查询都放在小括号内
2.子查询可以放在from后面、select后面、where后面、having后面但是一边放在条件的右侧
3.子查询优先于主查询执行,主查询使用了子查询的执行结果
4.子查询根据查询结果的行数不同分为

  • 单行子查询
    结果集只有一行
    一般搭配单行操作符使用:< > = <= >= <>
  • 多行子查询
    结果集有多行
    一般搭配多操作符使用:any、all、in、not in
    in:处于子查询结果中的任意一个就行
    any、all往往可以用其他查询代替

在where语句中使用子查询
案例:查询哪些人的薪水高于员工的平均薪水,需要显示员工编号,员工姓名,薪水

实现思路
1.取得平均薪水
2.取得大于平均薪水的员工

1.select 
	avg(salary)
 from
 	employees;
2.select
	employee_id
 from
 	employees
 where
 	select(
 			salary>avg(salary)
 			from employees
 			);

在from语句中使用子查询,可以将该子查询看做是一张表
在select语句中使用子查询

union

可以合并集合(相加)
案例:查询job包含manager和salesman的员工

select
	*
from
	emp
where
	job ='manager'
union
select
	*
from
	emp
where
	job = 'salesman'

limit 分页查询

主要用于提取前几条或者中间某几行数据

select * from table limit m,n
其中m是指记录开始的index,从0开始表示第一条记录
n是指从第m+1条开始取n条
select * from table limit 2,4
从第三条开始取4条记录

取得前5条数据select * from emp limit 5

公式select * from 表 limit (page-1*sizePerPage,sizePerPage
每页显示条目数sizePerPage
要显示的页数 page

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值