MySQL(三) 您所在的位置:网站首页 sql条件查询语句全角大于半角 MySQL(三)

MySQL(三)

2024-07-04 08:05| 来源: 网络整理| 查看: 265

MySQL数据库系列内容的学习目录 → \rightarrow →老杜带你学MySQL学习系列内容汇总。

3. 条件查询3.1 什么是条件查询3.2 查询条件3.2.1 =等号操作符3.2.2 不等于操作符3.2.3 < 小于操作符3.2.4 大于操作符3.2.6 >= 大于等于操作符3.2.7 between … and …. 操作符3.2.8 is null 操作符3.2.9 and 并且操作符3.2.10 or 或者操作符3.2.11 表达式的优先级3.2.12 in 包含操作符3.2.13 not 取反操作符3.2.14 like操作符

3. 条件查询 3.1 什么是条件查询

  不是将表中所有数据都查出来,而是查询出来符合条件的。   语法格式:

select 字段1,字段2,字段3.... from 表名 where 条件; 3.2 查询条件

  条件查询需要用到 where 语句,where 必须放到 from 语句表的后面。支持如下运算符:

在这里插入图片描述

3.2.1 =等号操作符 查询薪水为 5000 的员工:select empno, ename, sal from emp where sal=5000;   在这里插入图片描述查询 job 为 MANAGER 的员工:select empno, ename from emp where job=manager;   在这里插入图片描述    以上查询出现错误,因为 job 为字符串,所以出现了以上错误,将语句改为select empno, ename from emp where job="manager";。   在这里插入图片描述    也可以使用单引号select empno, ename from emp where job='manager';。   在这里插入图片描述    mysql 默认情况下大小写是不敏感的,所以也可以使用大写select empno, ename from emp where job='MANAGER';。   在这里插入图片描述   注意:MySQL 在 windows 下是不区分大小写的,将 script 文件导入 MySQL 后表名也会自动转化为小写,结果再想要将数据库导出放到 linux 服务器中使用时就出错了。因为在 linux 下表名区分大小写而找不到表,查了很多都是说在 linux 下更改 MySQL 的设置使其也不区分大小写。   反过来也可以让 windows 下大小写敏感,做法是相应的更改 windows 中 MySQL 的设置。具体操作:在 MySQL 的配置文件 my.ini 中增加一行:lower_case_table_names = 0,其中 0:区分大小写,1:不区分大小写。   MySQL 在 Linux 下数据库名、表名、列名、别名大小写规则是这样的:    1. 数据库名与表名是严格区分大小写的;    2. 表的别名是严格区分大小写的;    3. 列名与列的别名在所有的情况下均是忽略大小写的;    4. 变量名也是严格区分大小写的;MySQL 在 Windows 下都不区分大小写。 3.2.2 不等于操作符

查询薪水不等于 5000 的员工:select empno, ename, sal from emp where sal 5000;   在这里插入图片描述    也可以采用!=代替操作符:select empno, ename, sal from emp where sal != 5000;   数值也可以采用单引号引起来:select empno, ename, sal from emp where sal '5000';   但是不推荐使用后两者写法。

查询工作岗位不等于 MANAGER 的员工:select empno, ename from emp where job 'MANAGER';   在这里插入图片描述

3.2.3 < 小于操作符 查询薪资小于2000的员工姓名和编号:select empno,ename,sal from emp where sal < 2000;   在这里插入图片描述 3.2.4 3000;   在这里插入图片描述 3.2.6 >= 大于等于操作符 查询薪资大于等于3000的员工姓名和编号:select empno,ename,sal from emp where sal >= 3000;   在这里插入图片描述 3.2.7 between … and …. 操作符

  between … and …. 操作符:两个值之间,等同于 >= and = and = 2450 and sal 2500;

在这里插入图片描述

3.2.10 or 或者操作符

  or,只要满足条件即可,相当于包含。

查询工作岗位是MANAGER和SALESMAN的员工:select empno,ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';   在这里插入图片描述 3.2.11 表达式的优先级

  问题: and和or同时出现的话,有优先级问题吗?

查询工资大于2500,并且部门编号为10或20部门的员工:select * from emp where sal > 2500 and deptno = 10 or deptno = 20;   在这里插入图片描述     分析以上语句的问题。   以上输出不是预期结果,薪水小于 2500 的数据也被查询上来了,原因是表达式的优先级导致的,首先过滤 sal > 2500 and deptno = 10,然后再将 deptno = 20 员工合并过来,所以是不对的。   and优先级比or高,以上语句会先执行and,然后执行or。以上这个语句表示什么含义?   找出工资大于2500并且部门编号为10的员工,或者20部门所有员工找出来。   改为:select * from emp where sal > 2500 and (deptno = 10 or deptno = 20);    在这里插入图片描述   总结: and和or同时出现,and优先级较高。如果想让or先执行,需要加“小括号”。以后在开发中,如果不确定优先级,就加小括号就行了。 3.2.12 in 包含操作符

  in包含,相当于多个or (not in不在这个范围中)。

查询工作岗位是MANAGER和SALESMAN的员工: select empno,ename,job from emp where job = 'MANAGER' or job = 'SALESMAN'; select empno,ename,job from emp where job in('MANAGER', 'SALESMAN');   在这里插入图片描述    注意:in不是一个区间,in后面跟的是具体的值。  查询薪资是800和5000的员工信息: select ename,sal from emp where sal = 800 or sal = 5000; select ename,sal from emp where sal in(800, 5000);   在这里插入图片描述 查询薪资是800,5000,3000的员工信息:select ename,sal from emp where sal in(800, 5000, 3000);   在这里插入图片描述

   not in 表示不在这几个值当中的数据。例如,select ename,sal from emp where sal not in(800, 5000, 3000);。

在这里插入图片描述

3.2.13 not 取反操作符

  not 可以取非,主要用在 is 或 in 中。例如,is not null,not in。

第一种写法:查询出薪水不包含 1600 和薪水不包含 3000 的员工 select * from emp where sal 1600 and sal 3000;   在这里插入图片描述 第二种写法:查询出薪水不包含 1600 和薪水不包含 3000 的员工 select * from emp where not (sal = 1600 or sal = 3000);   在这里插入图片描述 第三种写法:查询出薪水不包含 1600 和薪水不包含 3000 的员工 select * from emp where sal not in (1600, 3000);   在这里插入图片描述 查询出津贴不为 null 的所有员工:select * from emp where comm is not null;   在这里插入图片描述 3.2.14 like操作符

  like 称为模糊查询,支持%或下划线匹配。% 匹配任意多个字符;下划线只匹配任意一个字符。(%是一个特殊的符号,_ 也是一个特殊符号)   Like 中的表达式必须放到单引号或双引号中。

找出名字中含有O的:select ename from emp where ename like '%O%';   在这里插入图片描述 找出名字以T结尾的:select ename from emp where ename like '%T';   在这里插入图片描述 找出名字以K开始的:select ename from emp where ename like 'K%';   在这里插入图片描述 找出第二个字每是A的:select ename from emp where ename like '_A%';   在这里插入图片描述 找出第三个字母是R的:select ename from emp where ename like '__R%';   在这里插入图片描述

  如果有一个t_student学生表,name字段包含zhangsan、lisi、wangwu、zhaoliu、jack_son,找出名字中有“_”的?   select name from t_student where name like '%_%'; 是不行,需要包含\转义字符:select name from t_student where name like '%\_%';。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

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