首页 > 数据库 >【MySQL】MySQL基础03 — SQL学习 — DQL — 条件查询

【MySQL】MySQL基础03 — SQL学习 — DQL — 条件查询

时间:2023-04-04 22:01:18浏览次数:43  
标签:03 name employees MySQL 查询 SQL 员工 WHERE SELECT

SQL学习 — DQL — 条件查询

DQL语言学习

数据查询语言(Data Query Language),关键字 select

  • 使用DQL前,先输入USE 库名;

2.条件查询
  • 语法:

    select `查询列表`
    from 表名
    where 筛选条件;
    
  • 分类:

    /*
    分类:
    	一、按条件表达式筛选
    		条件运算符:>  <  =  !=(<>)   >=   <=
    	
    	二、按逻辑表达式筛选
    		作用:用于连接条件表达式
    		逻辑运算符:&&-and   ||-or   !-not
    	
    	三、模糊查询
                like
                between and 
                in
                is null
    */
    

2.1 条件表达式筛选
# 一、按条件表达式筛选
# 案例1:查询工资>12000的员工信息
SELECT * FROM employees 
WHERE salary > 12000;

# 案例2:查询部门编号不等于90号的员工名和部门编号
SELECT 
	CONCAT(last_name,first_name) AS "员工名",
	department_id
FROM 
	employees
WHERE
	department_id <> 90;

2.2 逻辑表达式筛选
# 二、按逻辑表达式筛选 
# 案例1:查询工资在10000到20000之间的员工名、工资以及奖金
SELECT
	CONCAT(last_name,first_name) AS "员工名",
	salary,
	commission_pct
FROM
	employees
WHERE
	salary >= 10000 AND salary <= 20000;
	
# 案例2:查询部门编号不是在90~110之间,或者工资高于15000的员工信息
SELECT
	*
FROM
	employees
WHERE
	department_id < 90 OR department_id > 110
	# not(department_id >= 90 AND department_id <= 110)
OR
	salary > 15000;

2.3 模糊查询
# 三、模糊查询总结
/*
like特点:
	1. 一般和通配符搭配使用
	   通配符: % 任意多个字符,包含0个字符
		       _ 任意单个字符

between and注意事项:
	1.使用between and 可以提高语句的简洁度
	2.包含临界值
	3.两个临界值不能颠倒

in含义:判断某字段的值是否属于in列表中的某一项
in特点:
	1.使用in提高语句简洁度
	2.in列表中的值类型必须一致或兼容
	3.in不支持模糊查询,必须实打实的内容

is null注意事项:
	1. != 或 <> 不能用于判断null值
	2. is null 或 is not null可以判断null值
	
*/
# like案例
# like案例1:查询员工名中包含字符a的员工信息
SELECT * FROM employees 
WHERE last_name LIKE '%a%';

# like案例2:查询员工名中第三个字符为n,第五个字符为l的员工名和工资
SELECT
	last_name, salary
FROM
	employees
WHERE
	last_name LIKE '__n_l%';
	
# like案例3:查询员工名中第二字符为_的员工名
/*
需要用到转义的知识,有两种方式
方式一常规转义字符\:\_
方式二MySQL转义语法:'_$_%' ESCAPE '$' ($可任意个字符)
*/
SELECT 
	last_name
FROM
	employees
WHERE
	last_name LIKE '_$_%' ESCAPE '$';
	

# between and案例
# between and案例1:查询员工编号在100到120之间的员工信息
SELECT * FROM employees
WHERE employee_id BETWEEN 100 AND 120;
# in案例
# in案例1:查阅员工的工种编号是 IT_PROT、AD_VP、AD_PRES中的一个员工名和工种编号
SELECT 
	last_name, job_id
FROM
	employees
WHERE
	job_id IN('IT_PROT', 'AD_VP', 'AD_PRES');
# is null案例
# is null案例1:查询没有奖金的员工名和奖金率
SELECT 
	last_name, commission_pct
FROM
	employees
WHERE
	commission_pct IS NULL;

2.4 安全等于
# 安全等于 <=>
# <=>案例1:查询没有奖金的员工名和奖金率
SELECT	
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct <=> NULL;
	
# <=>案例2:查询工资为12000的员工信息
SELECT *
FROM employees
WHERE salary <=> 12000;

# is null pk 安全等于<=>
/*

is null:仅仅可以判断null值,可读性强,建议使用
<=>    : 既可以判断Null值,又可以判断普通的数值,可读性差

*/

2.5 条件查询练习
# 将以下内容复制到sql图像化客户端界面进行思考
1. 查询工资大于 12000 的员工姓名和工资
2. 查询员工号为 176 的员工的姓名和部门号,奖金率和年薪
3. 选择工资不在 5000 到 12000 的员工的姓名和工资
4. 选择在 20 或 50 号部门工作的员工姓名和部门号
5. 选择公司中没有管理者的员工姓名及 job_id
6. 选择公司中有奖金的员工姓名,工资和奖金级别
7. 选择员工姓名的第三个字母是 a 的员工姓名
8. 选择姓名中有字母 a 和 e 的员工姓名
9. 显示出表 employees 表中 first_name 以 'e'结尾的员工信息
10. 显示出表 employees 部门编号在 80-100 之间 的姓名、职位
11. 显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、职位
12. 查询没有奖金,且工资不小于18000的员工名和工资
13. 查询employees表中,job_id不为'IT'或者工资为12000的员工信息
14. 查询部门departments表中涉及到了哪些位置编号
15. 经典面试题:试问
SELECT * FROM employees; 
和
SELECT * FROM employees 
WHERE commission_pct LIKE '%%' AND last_name LIKE '%%';
结果是否一样?并说明原因。
--------------------------------------------------------------
SELECT * FROM employees; 
那么和
SELECT * FROM employees 
WHERE commission_pct LIKE '%%' OR last_name LIKE '%%';
相比,结果是否一样?


2.6 条件查询练习答案

文件名:02SQL_conditionquery.sql
下载地址:链接:https://pan.baidu.com/s/1_slO9LaDORqLKIQtbLs3Ww?pwd=ccjz
提取码:ccjz

标签:03,name,employees,MySQL,查询,SQL,员工,WHERE,SELECT
From: https://www.cnblogs.com/blog-cjz/p/17288053.html

相关文章

  • 【MySQL】MySQL基础 — SQL学习 — DQL — 基础查询
    SQL学习—DQL—基础查询DQL语言学习数据查询语言(DataQueryLanguage),关键字select使用DQL前,先输入USE库名;1.基础查询1.1查询字段#基础查询/*语法:select`查询列表`from表名;#`查询列表`,`着重号表明是字段,可加可不加,当关键字和字段名重叠,用`着重号区......
  • SQL语句
    目录SQL语句一、基本SQL语句查看二、针对库的sql语句创建库查看库修改库删除库三、针对表的sql语句先切换操作库创建表查看表修改表删除表四、针对记录的sql语句添加记录/插入记录查询记录编辑记录删除记录SQL语句一、基本SQL语句1.查看所有的数据库名称(mysql的data下的文件夹......
  • Qt6编译MySQL驱动最简单方法
    最近qt发布最新lts版本qt6.5,就想下来试试新功能。qt版本6.5.0,安装目录E:\Qt\6.5.0mysql版本8.0,安装目录C:\MySQL_Server_8.0,或者直接下连接器解压也可以:MySQL::DownloadMySQLConnector/C(ArchivedVersions)需要额外安装qt的sources源组件,忘了也没关系,在cmd下进入包含Main......
  • Android 原生 SQLite 数据库的一次封装实践
    作者:LiBingyan本文主要讲述原生SQLite数据库的一次ORM封装实践,给使用原生数据库操作的业务场景(如:本身是一个SDK)带来一些启示和参考意义,以及跟随框架的实现思路对数据库操作、APT、泛型等概念更深一层的理解。实现思路:通过动态代理获取请求接口参数进行SQL拼凑,并以接口返回值(泛型)......
  • 解决适用EntityFramework生成时报错“无法解析依赖项。"EntityFramework 6.4.4" 与 '
    起因:通过vs2022创建mvc项目时,执行添加“包含视图的MVC5控制器(使用EntityFramework)时   点击添加,出现错误提示   解决方法:在您的解决方案资源管理器中,右键单击引用,管理nuget包,转到“已安装”选项卡并从EntityFramework.zh-Hans,卸载您的语言包,然后在重新添加......
  • Linux服务器部署前后端项目-SQL Father为例
    Linux服务器部署前后端项目-SQLFather为例项目介绍项目的Github地址:https://github.com/liyupi/sql-father-frontend-public1.下载前后端项目到本地我这里使用Gitclone,也可以直接下载压缩包。gitclonehttps://github.com/liyupi/sql-father-frontend-public.git2......
  • MYSQL-Explain详解
    --实际SQL,查找用户名为Jefabc的员工select*fromempwherename='Jefabc';--查看SQL是否使用索引,前面加上explain即可explainselect*fromempwherename='Jefabc';expain出来的信息有10列,分别是id、select_type、table、type、possible_keys、key、key_len、ref......
  • 基础_003_转义字符
       转义字符必须以“\”开头,常用的转义字符见下表。转义字符功能或输出结果\f换页,将当前位置移到下页的开头\v垂直制表符\a响铃\n换行,将当前位置移到下一行的开头\r回车,将当前位置移到本行开头\t水平制表符,将当前位置移到下一个tab位置\b退格,将当前位置后退一个字符\'输出一个......
  • mysql5.7 启用SSL
    服务器端启动配置查看默认数据目录#ls-ldata/total122944-rw-r-----1mysqlmysql56Apr417:21auto.cnf-rw-------1mysqlmysql1676Apr417:21ca-key.pem-rw-r--r--1mysqlmysql1112Apr417:21ca.pem-rw-r--r--1mysqlmysql1......
  • MySQL笔记
    MySQL概述数据库相关概念名称全称简称数据库存储数据的仓库,数据是有组织的进行存储DataBase(DB)数据库管理系统操纵和管理数据库的大型软件DataBaseManagementSystem(DBMS)SQL操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准Structured......