MySQL——基础查询(进阶二)

语法
SELECT 查询语句 FROM 表名 WHERE 筛选条件

查询顺序
1、表名,查询来自哪张表
2、筛选条件,在选定表中按条件来筛选
3、查询语句,查询筛选后的字段
分类
一、按条件表达式筛选
条件运算符:
> 、< 、 = 、!=、<>、>=、<=
二、按逻辑表达式筛选
逻辑运算符:
&& =and、||=or、!=not
三、模糊查询
like、between、 and、in、is null

一、按条件表达式筛选
案例1:查询工资>15000的员工信息

SELECT 
  * 
FROM
  employees 
WHERE salary > 15000;

在这里插入图片描述
案例2:查询部门编号不等于90号的员工名和部门
方式1: !=

select 
  last_name,
  department_id
from
  employees 
where department_id != 90;

方式2: <>(数据库一般用<>)

select 
  last_name,
  department_id 
from
  employees 
where department_id <> 90 ;

在这里插入图片描述
二、按逻辑表达式筛选
案例1:查询工资在15000到20000之间的员工表、工资以及奖金

select 
  last_name,
  salary,
  commission_pct 
from
  employees 
where salary >= 15000 
  and salary <= 20000 ;

在这里插入图片描述
案例2:查询部门编号不是在90到110之间,或者工资高于15000的员工信息

SELECT
      *
FROM
      employees
WHERE
      (department_id>=90 AND department_id<=99) OR salary<1000

在这里插入图片描述
案例3:查询部门编号是在90到99之间,或者工资高于1000的员工信息

select
      *
from
      employees
where
      (department_id>=90 and department_id<=100) or salary<1000;

在这里插入图片描述
三、模糊查询
1)、like
特点:一般和通配符搭配使用
通配符:
%: 任意多个字符包括零个字符
_ : 任意单个字符
案例1:查询员工中包含字符z的员工信息

SELECT 
       *
FROM   
      employees
WHERE 
      last_name LIKE '%z%';

在这里插入图片描述
案例2:查询员工名中第三个字符为n,第五个字符为l的员工名和工资

SELECT 
	  last_name,
	  salary 
FROM
	  employees 
WHERE last_name LIKE '__n_l%' ;

在这里插入图片描述
案例3:查询员工名中第二个字符为 _的员工名
方式1:在第二个 '_'字符前要加上转义字符

SELECT 
	  last_name
FROM
	  employees 
WHERE last_name LIKE '_\_%' ;

方式2:在第二个 '_'字符前加上任意字符/字母,用escape表明,该字符/字母是一个转义字符。

SELECT 
	  last_name 
FROM
	  employees 
WHERE last_name LIKE '_$_%' ESCAPE '$' ;

在这里插入图片描述
2)、between and
注意:
1、使用between and可以提高语句的简洁度
2、包含临近值
3、两个临界值不要调换顺序
案例:查询员工编号在100在105之间的员工信息
方式1:可用比较运算符

SELECT 
  * 
FROM
	  employees 
WHERE employee_id >= 100 
  AND employee_id <= 105 ;

方式2:between and

SELECT 
	  * 
FROM
	  employees 
WHERE employee_id BETWEEN 100 
	  AND 105 ;

在这里插入图片描述
3)、in
含义:判断某字段的值是否属于in列表中的某一项
1)、使用in提高语句的简洁度
2)、in列表的值类型必须一致或兼容
案例:查询员工的工种编号IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号

方式1:用or语句较为繁琐

select 
  last_name,
  job_id 
from
  employees 
where 
job_id = 'IT_PROT' 
  or job_id = 'AD_VP' 
  or job_id = 'AD_PRES';

方式2:in语句较为简洁

select 
  'last_name',
  'job_id' 
from
  employees 
where job_id in (
    'IT_PROT',
    'AD_VP',
    'AD_PRES'
  ) ;

在这里插入图片描述
4)、is null

= 或 <> 不能判断null值
IS NULL 和 IS NOT NULL 可以判断null值
案例1:查询没有奖金的员工名和奖金率

SELECT 
  last_name,
  commission_pct 
FROM
  employees 
WHERE commission_pct IS NULL ;

在这里插入图片描述
案例2:查询有奖金的员工名和奖金率

SELECT 
  last_name,
  commission_pct 
FROM
  employees 
WHERE commission_pct IS NOT NULL ;

在这里插入图片描述

安全等于 ( <=>)
案例:查询没有奖金的员工名和奖金率

SELECT
	'last_name',
	'commission_pct'
FROM
	'employees'
WHERE
	'commission_pct' <=> NULL;

在这里插入图片描述
案例二:工资为12000的员工信息

SELECT 
  last_name,
  salary,
  commission_pct 
FROM
  employees 
WHERE salary <=> 12000 ;

在这里插入图片描述
is null PK <==>

IS NULL:仅仅可以判断NULL 可读性较高,建议使用
<=>:既可以判断NULL值也可以判断普通数值,可读性较低

练习题

1、查询没有奖金且工资小于2500的salary,last_name

SELECT 
  salary,
  last_name 
FROM
  employees 
WHERE commission_pct IS NULL 
  AND salary < 2500 ;

在这里插入图片描述
2、查询employees表中,job_id不为‘ST_CLERK’或者工资为25000的员工信息

SELECT 
  * 
FROM
  employees 
WHERE job_id <> 'ST_CLERK' 
  OR salary = 25000 ;

在这里插入图片描述
3、查看部门departments表的结构

DESC departments;

在这里插入图片描述
4、查询部门departments表中设计到了那些位置编号

SELECT DISTINCT 
  location_id 
FROM
  departments ;

在这里插入图片描述
5、经典面试题目,试问:

SELECT * FROM employees 

SELECT 
	* 
FROM 
	employees 
WHERE 
	commission_pct LIKE '%%' AND last_name LIKE '%%';

结果是否一样,说明以下原因?
答:不一样,如果判断的字段有null值,结果不一样,没有null,结果一样。
查出来的结果分别如下:
在这里插入图片描述

在这里插入图片描述
若将and改为or

SELECT * FROM employees 

SELECT 
  * 
FROM
  employees 
WHERE commission_pct LIKE '%%' 
  OR last_name LIKE '%%' 
  OR employee_id LIKE '%%' ;

结果一样,or连接的字段只要有一方不为空均可。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值