MYSQL简单查询及条件查询

这篇博客介绍了MYSQL的简单查询和条件查询。在简单查询中,涉及查询单个、多个字段、所有字段以及字段运算,还讲解了如何自定义字段显示标题。条件查询部分,讲解了使用where语句配合between、is null、in、like等运算符进行数据筛选,同时强调了表达式的优先级和正确使用圆括号的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MYSQL简单查询及条件查询

一、简单查询

1. 查询一个字段

查询表中所有员工姓名

select [列名] from emp;

在这里插入图片描述

2. 查询多个字段

查询表中所有员工姓名,部门编号,员工工资

select [列名],[列名],[列名] from emp;

在这里插入图片描述

3. 查询全部字段

查询表中全部内容

select * from emp;

在这里插入图片描述

4. 字段运算

在MySQL中使用运算符进行运算,MySQL支持四种运算符, 分别是算术运算符、比较运算符、逻辑运算符、位运算符。

算数运算符即基本的加(+)减(-)乘(*)除(/)以及取余(%);

比较运算符在数据库操作中是十分常用的,在第二部分会详细讲述;

逻辑运算符即与或非、异或;

位运算符用来对二进制字节中的位进行移位或者测试。

5. 将查询出来的字段显示为其他标题

这里需要用到as,在查询的字段后添加as 以及需要显示出来的标题即可,as也可省略。

select 
	ename as(可省略) '员工姓名', deptno as(可省略) '部门编号', sal as(可省略) '员工工资' 
from 
	emp;

在这里插入图片描述

二、条件查询

条件查询需要用到where语句,where必须放到from语句表的后面

支持如下运算符:

运算符说明
=等于
<小于
<=小于等于
>大于
>=大于等于
<=>表示NULL安全的等价,返回值不会为NULL
<>或!=不等于
IS NULL判断是否为NULL
IS NOT NULL判断是否不为NULL
BETWWEN [ ] AND [ ]判断一个值是否在两者之间
LEAST当有两个以上值时,返回最小值
GREATEST当有两个以上值时,返回最大值
IN判断一个值是否在该列表中
NOT IN判断一个值是否不在该列表中
LIKE通配符匹配
REGEXP正则表达式匹配
and并且
or或者

以下对于 "between [ ] and [ ] " 、“isnull”、
“in”、"like"进行具体演示,以及对表达式的优先级进行简略的说明。

1.between [ ] and [ ]

查询薪水为1600到3000的员工(第一种方式,采用between … and …

select 
	empno, ename, sal 
from 
	emp 
where 
	sal between 1600 and 3000;	

在这里插入图片描述

2.is null

Null为空,但不是空串,为null可以设置这个字段不填值,如果查询为null的字段,采用is null进行查询

查询津贴为空的员工

select * from emp where comm=null;
select * from emp where comm is null;

比较上面两条语句的查询结果
在这里插入图片描述
在这里插入图片描述
第一条语句无法正确的查出我们所需要的数据,因为NULL是一个特殊的值,不能使用“=”进行比较,需要使用“is null”来进行判断。

3.in

in表示包含的意思,完全可以采用or来表示,但采用in会更简洁一些

查询出job为manager或者job为salesman的员工

select * from emp where job in ('manager','salesman');

在这里插入图片描述

4.like

like可以实现模糊查询,like支持%和下划线匹配

查询姓名以M开头所有的员工

select * from emp where ename like 'M%';

在这里插入图片描述

5.表达式的优先级

首先看一个问题的具体情况

查询薪水大于1800,并且部门代码为20或30的员工(错误的写法)

select * from emp where sal > 1800 and deptno = 20 or deptno = 30;

在这里插入图片描述
以上输出不是预期结果,薪水小于1800的数据也被查询上来了,
原因是表达式的优先级导致的,首先过滤sal > 1800 and deptno = 20,
然后再将deptno = 30员工合并过来,所以是不对的

一般情况下,级别高的运算符优先进行计算,如果级别相同,MySQL按表达式的顺序从左到右依次计算。
运算符的具体优先级如下:

优先级由低到高排列运算 符
1=(赋值运算)、:=
2II、OR
3XOR
4&&、AND
5NOT
6BETWEEN、CASE、WHEN、THEN、ELSE
7=(比较运算)、<=>、>=、>、<=、<、<>、!=、 IS、LIKE、REGEXP、IN
8按位或
9&
10<<、>>
11-(减号)、+
12*、/、%
13^
14-(负号)、〜(位反转)
15!

查询薪水大于1800,并且部门代码为20或30的(正确的写法)

select * from emp where sal > 1800 and (deptno = 20 or deptno = 30);

在这里插入图片描述
在无法确定优先级的情况下,可以使用圆括号“()”来改变优先级,并且这样会使计算过程更加清晰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值