MySql教程

MySQL相关知识二

本文主要是介绍MySQL相关知识二,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

多表连接查询

sql92

等值连接

非等值连接

自连接

sql99

内连接

外连接

交叉连接(类似笛卡尔积)

子查询

含义

分类

1、按出现位置

2、按结果集的行列

例子

1、标量子查询

2、列子查询

分页查询

应用场景

语法

注意:

公式:

联合查询

含义

语法

意义

特点

查询顺序总结


多表连接查询

sql92

等值连接

语法

select 
from 表1 别名,表2 别名
where 表1.key = 表2.key
【and 筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】

特点:① 一般为表起别名
    ②多表的顺序可以调换
    ③n表连接至少需要n-1个连接条件
    ④等值连接的结果是多表的交集部分

非等值连接

    select 查询列表
	from 表1 别名,表2 别名
	where 非等值的连接条件
	【and 筛选条件】
	【group by 分组字段】
	【having 分组后的筛选】
	【order by 排序字段】

自连接

    select 查询列表
	from 表 别名1,表 别名2
	where 等值的连接条件
	【and 筛选条件】
	【group by 分组字段】
	【having 分组后的筛选】
	【order by 排序字段】

sql99

内连接

select 查询列表
from 表1 别名
【inner】 join 表2 别名 on 连接条件
where 筛选条件
group by 分组列表
having 分组后的筛选
order by 排序列表
limit 子句;

特点:

①表的顺序可以调换
②内连接的结果=多表的交集
③n表连接至少需要n-1个连接条件

分类:

等值连接
非等值连接
自连接

外连接

select 查询列表
from 表1 别名
left|right|full【outer】 join 表2 别名 on 连接条件
where 筛选条件
group by 分组列表
having 分组后的筛选
order by 排序列表
limit 子句;

特点:
①查询的结果=主表中所有的行,如果从表和它匹配的将显示匹配行,如果从表没有匹配的则显示null
②left join 左边的就是主表,right join 右边的就是主表
  full join 两边都是主表
③一般用于查询除了交集部分的剩余的不匹配的行

交叉连接(类似笛卡尔积)

select 查询列表
from 表1 别名
cross join 表2 别名;

子查询

含义

嵌套在其他语句内部的select语句称为子查询或内查询,
外面的语句可以是insert、update、delete、select等,一般select作为外面语句较多
外面如果为select语句,则此语句称为外查询或主查询

分类

1、按出现位置


select后面:
        仅仅支持标量子查询
from后面:
        表子查询
where或having后面:
        标量子查询
        列子查询
        行子查询
exists后面:
        标量子查询
        列子查询
        行子查询
        表子查询

2、按结果集的行列


标量子查询(单行子查询):结果集为一行一列
列子查询(多行子查询):结果集为多行一列
行子查询:结果集为多行多列
表子查询:结果集为多行多列

例子

1、标量子查询

案例:查询最低工资的员工姓名和工资
①最低工资
select min(salary) from employees

②查询员工的姓名和工资,要求工资=①
select last_name,salary
from employees
where salary=(
	select min(salary) from employees
);

2、列子查询

①查询所有员工的 manager_id
select manager_id
from employees

②查询姓名,employee_id属于①列表的一个
select last_name
from employees
where employee_id in(
	select manager_id
	from employees
);

分页查询

应用场景

当要查询的条目数太多,一页显示不全

语法

select 查询列表
from 表
limit 【offset,】size;

注意:


offset代表的是起始的条目索引,默认从0卡死
size代表的是显示的条目数

公式:

假如要显示的页数为page,每一页条目数为size
select 查询列表
from 表
limit (page-1)*size,size;

联合查询

含义

union:合并、联合,将多次查询结果合并成一个结果

语法

查询语句1
union 【all】
查询语句2
union 【all】
...

意义

1、将一条比较复杂的查询语句拆分成多条语句
2、适用于查询多个表的时候,查询的列基本是一致

特点

1、要求多条查询语句的查询列数必须一致
2、要求多条查询语句的查询的各列类型、顺序最好一致
3、union 去重,union all包含重复项

查询顺序总结

select 查询列表    ⑦
from 表1 别名       ①
连接类型 join 表2   ②
on 连接条件         ③
where 筛选          ④
group by 分组列表   ⑤
having 筛选         ⑥
order by排序列表    ⑧
limit 起始条目索引,条目数;  ⑨
 

这篇关于MySQL相关知识二的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!