MySQL数据库笔记(五) 数据过滤

MySQL数据库 数据过滤

使用select语句的where子句指定过滤条件。通常情况下,我们查询数据会根据特定条件和情况提取表中的部分数据。并不会查询表中所有的数据。

语法格式:where 子句放在from子句后面出现。

where子句操作符
操作符说明
=等于
<>不等于
!=不等于
<小于
<=小于等于
>大于
>=大于等于
between指定在2个值之间
过滤单个值
#=: 查询员工名为Ngao的员工信息
SELECT
   a.id,
   a.last_name,
   a.first_name,
   a.salary
FROM
   s_emp a
WHERE
   a.last_name = 'Ngao';
#<>: 查询不属于41部门的员工信息
SELECT
   a.id,
   a.last_name,
   a.first_name,
   a.salary,
   a.dept_id
FROM
   s_emp a
WHERE
   a.dept_id <> 42;
#!=:查询不属于41部门的员工信息
SELECT
   a.id,
   a.last_name,
   a.first_name,
   a.salary,
   a.dept_id
FROM
   s_emp a
WHERE
   a.dept_id != 42;
#<: 查询工资大于1500的员工信息
SELECT
   a.id,
   a.last_name,
   a.first_name,
   a.salary,
   a.dept_id
FROM
   s_emp a
WHERE
   a.salary >1500;
#between and : 查询工资在 1100到1400之间的员工信息
SELECT
   a.id,
   a.last_name,
   a.first_name,
   a.salary,
   a.dept_id
FROM
   s_emp a
WHERE
   a.salary BETWEEN 1100 and 1400;
空值过滤

概念:在一个列不包含值时,称为空值null。null 无值,与字段包含0 ,空字符串或者空格不同。

  • 为空:is null
  • 不为空:is not null
  • 对null值操作特定义的操作符,不能使用=
#查询员工工资为空的员工信息
SELECT
	a.id,
	a.last_name,
	a.salary
FROM
	s_emp a
WHERE
	a.salary IS NULL;
#查询员工的经理不为空的员工信息
SELECT
	a.id,
	a.last_name,
	a.manager_id
FROM
	s_emp a
WHERE
	a.manager_id IS NOT NULL;
逻辑操作符
and 操作符:
  • 且逻辑。对多个列进行过滤。
#查看员工部门id为41且职位名称为Stock Clerk(存库管理员)的员工id和名字
SELECT
	id,
	last_name,
	dept_id,
	title
FROM
	s_emp
WHERE
	dept_id = 41
AND title = 'Stock Clerk';
or 操作符
  • 或逻辑,任意匹配其中一个条件
#查看员工部门为41 或者 44号部门员工id、名字和部门号
SELECT
	a.id,
	a.last_name,
	a.dept_id
FROM
	s_emp a
WHERE
	a.dept_id = 41
OR a.dept_id = 42;
and 和 or 组合:
  • and逻辑比or逻辑要高
#查看员工部门为41 或者 44号部门 且工资大于1000的员工id和名字
SELECT
	a.id,
	a.last_name,
	a.dept_id,
  a.salary,
	a.title
FROM
	s_emp a
WHERE
	a.salary > 1000
AND (a.dept_id = 41 OR a.dept_id = 44);
#练习:查看员工部门为41且工资大于1000 或者 44号部门的员工id和名字
SELECT
	a.id,
	a.last_name,
	a.dept_id,
  a.salary,
	a.title
FROM
	s_emp a
WHERE
	a.salary > 1000
AND a.dept_id = 41 OR a.dept_id = 44;
in 操作符
  • 用来指定条件范围,范围中的每个条件都可以进行匹配 。
  • 圆括号包围,逗号分隔。
  • in的操作符比or操作符的效率高
#查看员工号1,3,5,7,9员工的工资
SELECT
	a.id,
	a.last_name
FROM
	s_emp a
WHERE
	a.id IN (1, 3, 5, 7, 9);
not 操作符
  • 非逻辑。否定它之后所跟的任何条件
  • not in
  • **not like **
  • is not null
  • not between
#查询员工工资不在1000到1500范围的员工信息
SELECT
	a.id,
	a.last_name,
    a.salary
FROM
	s_emp a
WHERE
	a.salary not BETWEEN 1000 and 1500;
#查询员工不在41或42或43部门的员工信息
SELECT
	a.id,
	a.last_name,
	a.dept_id
FROM
	s_emp a
WHERE
	a.dept_id NOT IN (41, 42, 43);
like 操作符
  • %:通配0到多个字符。
  • _ : 当且仅当通配一个字符
  • 转义字符:默认为,可以指定 指定的时候用escape 符号指明即可,转义字符只能转义后面的一个字符
  • 通配符操作位于开始处,搜索效率最慢
#查看员工名字以N或n字母开头的员工的信息
#注:mysql 默认查询时,不区分大小写。可以通过在创建表时,添加 BINARY属性进行区分。
#或者在where子句中添加 BINARY关键字 格式: where binary ...
SELECT
	a.id,
	a.last_name
FROM
	s_emp a
WHERE
	a.last_name LIKE 'N%';
#查看员工名字以大写N字母结尾的员工的信息
SELECT
	a.id,
	a.last_name
FROM
	s_emp a
WHERE BINARY
	a.last_name LIKE '%N';
#查看员工名字第三个字母是a员工的信息
SELECT
	a.id,
	a.last_name
FROM
	s_emp a
WHERE BINARY
	a.last_name LIKE '__a%';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值