MySQL 查询

Posted 小小菜_v

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 查询相关的知识,希望对你有一定的参考价值。

mysql 查询(三)

连接查询

语法

select * from 表1 inner或left或right join 表2 on 表1.列 = 表2.

内连接查询:

查询的结果为两个表匹配到的数据

例1:使用内连接查询软件表与类型表

select * from softwares inner join types on softwares.type_id = types.id;

例4:查询软件姓名及类型名称

select s.name,t.name from softwares as s inner join types as t on s.type_id =t.id;

右连接查询:

查询的结果为两个表匹配到的数据,右表特有的数据,对于左表中不存在的数据使用null填充

例3:使用右连接查询软件表与类型表

select * from softwares as s right join types as t on s.type_id = t.id;

左连接查询:

查询的结果为两个表匹配到的数据,左表特有的数据,对于右表中不存在的数据使用null填充

例2:使用左连接查询班级表与学生表

此处使用了as为表起别名,目的是编写简单
select * from softwares as s left join types as t on s.type_id = t.id;

自关联

表自己与自己进行连接

创建areas表的语句如下:

create table areas(
    aid int primary key,
    atitle varchar(20),
    pid int
);

例:查询省的名称为“山西省”的所有城市

select city.* from areas as city
inner join areas as province on city.pid=province.aid
where province.atitle='山西省';

子查询

子查询分类

标量子查询: 子查询返回的结果是一个数据(一行一列)
列子查询: 返回的结果是一列(一列多行)
行子查询: 返回的结果是一行(一行多列)

标量子查询

查询大于平均id的软件
select * from softwares where id > (select avg(id) from softwares);

列级子查询

找出软件表中所有的类型名
select name from types where id in (select type_id from softwares);

行级子查询

需求: 查找软件表id最大,type_id最大的软件
行元素: 将多个字段合成一个行元素,在行级子查询中会使用到行元素
select * from softwares where (id,type_id) = (select max(id),max(type_id) from softwares);
子查询中特定关键字使用
in 范围
格式: 主查询 where 条件 in (列子查询)

总结

SELECT select_expr [,select_expr,...] [      
      FROM tb_name
      [WHERE 条件判断]
      [GROUP BY {col_name | postion} [ASC | DESC], ...] 
      [HAVING WHERE 条件判断]
      [ORDER BY {col_name|expr|postion} [ASC | DESC], ...]
      [ LIMIT {[offset,]rowcount | row_count OFFSET offset}]
]

完整的select语句

select distinct *
from 表名
where ....
group by ... having ...
order by ...
limit start,count

执行顺序为:

from 表名
where ....
group by ...
select distinct *
having ...
order by ...
limit start,count

以上是关于MySQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

部分代码片段

你如何在 python 中处理 graphql 查询和片段?

linux中怎么查看mysql数据库版本

关于MySQL的关联查询

Microsoft SQL Server 代码片段收集

从mysql的片段中加载ListView