MySQL查询语句大全(列举所有常用查询方式) 您所在的位置:网站首页 mysql常用sql语句 MySQL查询语句大全(列举所有常用查询方式)

MySQL查询语句大全(列举所有常用查询方式)

2024-04-01 21:44| 来源: 网络整理| 查看: 265

文章目录 前提条件 简单查询直接查询条件查询模糊查询算数运算符逻辑运算符in与not in运算符排序查询 高级查询范围运算限制查询嵌套查询多表连查内连接左连接右连接 聚合函数最小值min()最大值max()求和sum()平均值avg()统计记录count()as 聚合别名 大小写转换

前提条件

首先创建SQL测试文件,其中创建了一个库两个表,用于测试。

文件名称:test.sql

/*------------员工信息库-------------*/ create database staff; use staff; create table yunwei(id int not null primary key,name char(4) not null,age tinyint(3) unsigned not null,sex enum('man','woman') not null); create table caiwu(id int not null primary key,name char(4) not null,age tinyint(3) unsigned not null,sex enum('man','woman') not null); insert into yunwei values(1,'张三',20,'man'),(2,'张四',21,'man'),(3,'张莉',22,'woman'),(4,'张五',23,'man'),(5,'张六',24,'man'),(6,'张丽',25,'woman'); insert into caiwu values(1,'李一',24,'man'),(2,'李莉',23,'woman'),(3,'李二',22,'man'),(4,'李三',21,'man'),(5,'李四',20,'man'),(6,'李丽',19,'woman');

将SQL文件导入到数据库中

mysql select * from staff.yunwei; +----+--------+-----+-------+ | id | name | age | sex | +----+--------+-----+-------+ | 1 | 张三 | 20 | man | | 2 | 张四 | 21 | man | | 3 | 张莉 | 22 | woman | | 4 | 张五 | 23 | man | | 5 | 张六 | 24 | man | | 6 | 张丽 | 25 | woman | +----+--------+-----+-------+ mysql> select * from staff.caiwu; +----+--------+-----+-------+ | id | name | age | sex | +----+--------+-----+-------+ | 1 | 李一 | 24 | man | | 2 | 李莉 | 23 | woman | | 3 | 李二 | 22 | man | | 4 | 李三 | 21 | man | | 5 | 李四 | 20 | man | | 6 | 李丽 | 19 | woman | +----+--------+-----+-------+ 简单查询 直接查询

语法:select 字段 from 表名;

最简单的一种查询方式,可查看多个字段或整张表。

例如:查询运维表姓名及年龄

mysql> select name,age from yunwei; +--------+-----+ | name | age | +--------+-----+ | 张三 | 20 | | 张四 | 21 | | 张莉 | 22 | | 张五 | 23 | | 张六 | 24 | | 张丽 | 25 | +--------+-----+ 条件查询

关键字为where,通常位于表名后面

语法:select 字段 from 表名 where 条件;

根据条件,查询指定条件的字段。

例如:查询财务表中年龄为20的员工

mysql> select * from caiwu where age=20; +----+--------+-----+-----+ | id | name | age | sex | +----+--------+-----+-----+ | 5 | 李四 | 20 | man | +----+--------+-----+-----+ 模糊查询

关键字是like,通常位于条件字段后面

语法:select 字段 from 表名 where 字段 like ‘%数据%’;

通过输入具体的数据,来对记录进行查询

例如:模糊查询caiwu表中姓名字段还有三的记录

mysql> select * from caiwu where name like '%三%'; +----+--------+-----+-----+ | id | name | age | sex | +----+--------+-----+-----+ | 4 | 李三 | 21 | man | +----+--------+-----+-----+ 算数运算符

运算符一般配合逻辑运算符一起使用,可以使条件限制更加具体。

符号作用>大于=大于等于 select * from caiwu where id!=1; +----+--------+-----+-------+ | id | name | age | sex | +----+--------+-----+-------+ | 2 | 李莉 | 23 | woman | | 3 | 李二 | 22 | man | | 4 | 李三 | 21 | man | | 5 | 李四 | 20 | man | | 6 | 李丽 | 19 | woman | +----+--------+-----+-------+ 逻辑运算符

可以将查询的单个条件改为多个条件或满足多个条件中的一个。

符号作用and与,同时满足多个条件or或,满足多个条件中的一个即可not否,不满足条件

和算数运算符一起使用,可以将条件更加具体。

例如:查询yunwei表中性别为女,或年龄为23的记录

mysql> select * from yunwei where sex='woman' or age=23; +----+--------+-----+-------+ | id | name | age | sex | +----+--------+-----+-------+ | 3 | 张莉 | 22 | woman | | 4 | 张五 | 23 | man | | 6 | 张丽 | 25 | woman | +----+--------+-----+-------+ in与not in运算符

关键字为in,通常位于条件字段后面

语法:select 字段 from 表名 where 字段 in (列表);

符号作用in在一个条件列表中not in不在一个条件列表中

例如:查询yunwei表中,年龄为22-25之间的记录

mysql> select * from yunwei where age in(22,23,24,25); +----+--------+-----+-------+ | id | name | age | sex | +----+--------+-----+-------+ | 3 | 张莉 | 22 | woman | | 4 | 张五 | 23 | man | | 5 | 张六 | 24 | man | | 6 | 张丽 | 25 | woman | +----+--------+-----+-------+ 排序查询

关键字为order by与asc,desc,通常位于表名之后

排序分为两种,升序(asc)和降序(desc)

语法:select 字段 from 表名 order by 字段 排序方式;

例如:将caiwu表中记录按年龄从大到小查询

mysql> select * from caiwu order by age desc; +----+--------+-----+-------+ | id | name | age | sex | +----+--------+-----+-------+ | 1 | 李一 | 24 | man | | 2 | 李莉 | 23 | woman | | 3 | 李二 | 22 | man | | 4 | 李三 | 21 | man | | 5 | 李四 | 20 | man | | 6 | 李丽 | 19 | woman | +----+--------+-----+-------+ 高级查询 范围运算

关键字为between…and…,通常位于条件字段后面。

语法:select 字段 from 表名 where 字段 between 范围1 and 范围2;

也是用来限制查询范围,作为算数运算符的一种替换。

例如:查询caiwu表中,年龄为21-23的记录,使用算数运算符表示为age>=21 and age select *from caiwu where age >=21 and age select *from caiwu where age between 21 and 23; +----+--------+-----+-------+ | id | name | age | sex | +----+--------+-----+-------+ | 2 | 李莉 | 23 | woman | | 3 | 李二 | 22 | man | | 4 | 李三 | 21 | man | +----+--------+-----+-------+ 限制查询

关键字为limit,通常位于表名后面。

语法:select 字段 from 表名 limit n,m;

limit可以强制指定查询结果的记录条数。

n是开始记录行,0表示第一条记录,m表示显示行,从n开始,共显示几行记录。

时刻注意开始范围时从0开始的,1表示的是第二行,而非第一行。 显示范围就是共显示几条记录,并不是结束范围。

例如:查询yunwei表中第2-4行记录

mysql> select * from yunwei limit 1,3; +----+--------+-----+-------+ | id | name | age | sex | +----+--------+-----+-------+ | 2 | 张四 | 21 | man | | 3 | 张莉 | 22 | woman | | 4 | 张五 | 23 | man | +----+--------+-----+-------+

命令解读:查询yunwei表中记录,从第二行开始,共显示三行。

嵌套查询

没有关键字,嵌套查询分为查询语句和子查询语句,在查询语句中含有子查询语句,所以叫做嵌套查询。

嵌套子查询通常位于查询语句的条件之后。

例如:在caiwu表中查询名称为张三的字段。

先在caiwu表中添加一个张三字段,并且年龄不同

mysql> insert into caiwu values(7,'张三',25,'man');

通过子查询的方式,查询caiwu和yunwei表中名称字段相同的字段

mysql> select name,age from caiwu where name=(select name from yunwei where age=20); +--------+-----+ | name | age | +--------+-----+ | 张三 | 25 | +--------+-----+

前半段是正常的查询语句,name=()中为子查询语句,查询的字段为name,查找yunwei表中age为20的name,结果为张三,将结果执行外部的查询语句,就完成了。

使用嵌套查询,两个表必须要有一个关联字段,否则无法实现。

测试完成后,将添加的字段删除即可。

多表连查

多表连查全称多表连接查询,和嵌套子查询一样,都需要有一个共同的字段,然后将多个表连接在一起查询,将符合条件的组成一个合集。

常见连接:内连接,外连接

内连接

根据两个表中共有的字段进行匹配,然后将符合条件的合集进行拼接。

关键字为inner join…on…,通常位于表名后面。

语法:select 字段 from 表1 inner join 表2 on 表1.字段=表2.字段;

on后面的是连接条件,也就是表1和表2共有的字段

例如:将yunwei和caiwu表连接在一起

mysql> select * from yunwei inner join caiwu on caiwu.id=yunwei.id ; +----+--------+-----+-------+----+--------+-----+-------+ | id | name | age | sex | id | name | age | sex | +----+--------+-----+-------+----+--------+-----+-------+ | 1 | 张三 | 20 | man | 1 | 李一 | 24 | man | | 2 | 张四 | 21 | man | 2 | 李莉 | 23 | woman | | 3 | 张莉 | 22 | woman | 3 | 李二 | 22 | man | | 4 | 张五 | 23 | man | 4 | 李三 | 21 | man | | 5 | 张六 | 24 | man | 5 | 李四 | 20 | man | | 6 | 张丽 | 25 | woman | 6 | 李丽 | 19 | woman | +----+--------+-----+-------+----+--------+-----+-------+ 左连接

关键字为left join…on,通常位于表名后面

语法:select 字段 from 表1 left join 表2 on 连接条件;

左连接是左表为主表,指定字段都显示,右表为从表,没内容显示null。

使用左连接将两个表连接到一起

mysql> select * from yunwei left join caiwu on yunwei.id=caiwu.id; +----+--------+-----+-------+------+--------+------+-------+ | id | name | age | sex | id | name | age | sex | +----+--------+-----+-------+------+--------+------+-------+ | 1 | 张三 | 20 | man | 1 | 李一 | 24 | man | | 2 | 张四 | 21 | man | 2 | 李莉 | 23 | woman | | 3 | 张莉 | 22 | woman | 3 | 李二 | 22 | man | | 4 | 张五 | 23 | man | 4 | 李三 | 21 | man | | 5 | 张六 | 24 | man | 5 | 李四 | 20 | man | | 6 | 张丽 | 25 | woman | 6 | 李丽 | 19 | woman | +----+--------+-----+-------+------+--------+------+-------+ 右连接

关键字为right join,通常位于表名后面

语法:select 字段 from 表1 right join 表2 on 连接条件

右连接是以右表为主表,指定字段都显示,左表为从表,没内容显示null。

使用右连接将两个表连接在一起

mysql> select * from yunwei right join caiwu on yunwei.id=caiwu.id; +------+--------+------+-------+----+--------+-----+-------+ | id | name | age | sex | id | name | age | sex | +------+--------+------+-------+----+--------+-----+-------+ | 1 | 张三 | 20 | man | 1 | 李一 | 24 | man | | 2 | 张四 | 21 | man | 2 | 李莉 | 23 | woman | | 3 | 张莉 | 22 | woman | 3 | 李二 | 22 | man | | 4 | 张五 | 23 | man | 4 | 李三 | 21 | man | | 5 | 张六 | 24 | man | 5 | 李四 | 20 | man | | 6 | 张丽 | 25 | woman | 6 | 李丽 | 19 | woman | +------+--------+------+-------+----+--------+-----+-------+ 聚合函数 最小值min()

关键字为min(),通常位于select之后

格式:select min(字段) from 表名;

查询字段的最小数值

例如:查询yunwei表中年龄最小的值

mysql> select min(age) from yunwei; +----------+ | min(age) | +----------+ | 20 | +----------+ 最大值max()

关键字为max(),通常位于select之后

格式:select max(字段) from 表名;

查询字段的最大数值

例如:查询yunwei表中年龄最大的值

mysql> select max(age) from yunwei; +----------+ | max(age) | +----------+ | 25 | +----------+ 求和sum()

关键字为sum(),通常位于select之后

格式:select sum(字段) from 表名;

用于统计数值和数

例如:将yunwei表中id字段求和

mysql> select sum(id) from yunwei; +---------+ | sum(id) | +---------+ | 21 | +---------+ 平均值avg()

关键字为avg(),通常位于select之后

格式:select avg(字段) from 表名;

例如:查询caiwu表中年龄字段的平均值

用于统计数值平均值

mysql> select avg(age) from caiwu; +----------+ | avg(age) | +----------+ | 21.5000 | +----------+ 统计记录count()

关键字为count(),通常位于select之后

语法:select count(字段) from 表名

用于统计记录的个数

例如:查询caiwu记录个数

mysql> select count(id) from caiwu; +-----------+ | count(id) | +-----------+ | 6 | +-----------+ as 聚合别名

关键字为as,常用于聚合查询之后

语法:select 运算函数(字段) as 别名 from 表名;

可以给字段设置别名

例如:统计caiwu表中的记录个数,并设置别名为记录总个数

mysql> select count(id) as 记录总个数 from caiwu; +-----------------+ | 记录总个数 | +-----------------+ | 6 | +-----------------+ 大小写转换

关键字为upper(),常位于select之后

格式:select upper(字段) from 表名;

只能用于英文字母的数据

例如:将caiwu表中id为1的性别字段改为大写

mysql> select upper(sex) from caiwu where id=1; +------------+ | upper(sex) | +------------+ | MAN | +------------+


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有