MySQL基础关键_002_DQL(一)

目  录

一、初始化

二、简单查询

1.部分语法规则

2.查询一个字段

(1)查询员工编号

(2)查询员工姓名

3.查询多个字段

(1)查询员工编号、姓名

(2)查询部门编号、名称、位置 

4.查询全部字段

(1)查询薪资等级全部字段

 5.查询时进行数学运算

(1)查询员工姓名、年薪

6.查询时起别名 

(1)查询员工姓名、年薪

(2)查询员工全部信息

三、条件查询 

1.过滤条件

2.语法格式

3.等于/不等于

(1)查询姓名为“JONES”的员工信息

(2) 查询位置不在“NEW YORK”的部门信息

4.大于等于/小于等于/大于/小于

(1)查询月薪 2000 以上的员工姓名和薪资

(2)查询最低薪资低于 1400 的薪资等级信息

5.and/between…and…/or

(1)查询薪资在 1600~2500 之间的员工信息

(2)查询职位是“CLERK”或“SALESMAN”的员工信息

(3)and 和 or 优先级

 6.is null/is not null

(1)查询没有津贴的员工信息

7.in/not in

(1)查询职位是“ANALYST”、“PRESIDENT”、“MANAGER”的员工信息

(2)是否忽略 null

8.模糊查询

(1)查询姓名以 S 开头的员工信息 

(2)查询姓名以 T 结尾的员工信息

(3)查询姓名第二个字母是 A 的员工信息


一、初始化

        查询语句属于 SQL 语句中的 DQL(数据查询语言),用于从数据库中检索数据,并将结果返回。由 SELECT(查询内容)、FROM(查询对象)、WHERE(查询条件)、ORDER BY(排序方式)、GROUP BY(分组方式)等组成。

         那么,在开始前,先准备一个 sql 脚本来初始化数据库信息,代码如下:

DROP TABLE IF EXISTS employees;
DROP TABLE IF EXISTS departments;
DROP TABLE IF EXISTS salary_grades;-- 部门表
CREATE TABLE departments (dept_no INT NOT NULL,dept_name VARCHAR(14),location VARCHAR(13),PRIMARY KEY (dept_no)
);-- 员工表
CREATE TABLE employees (emp_no INT NOT NULL,emp_name VARCHAR(10),job_title VARCHAR(9),manager_id INT,hire_date DATE DEFAULT NULL,salary DECIMAL(7,2),commission DECIMAL(7,2),PRIMARY KEY (emp_no),dept_no INT,FOREIGN KEY (dept_no) REFERENCES departments(dept_no)
);-- 薪资等级表
CREATE TABLE salary_grades (grade INT,min_salary INT,max_salary INT
);-- 插入部门数据
INSERT INTO departments (dept_no, dept_name, location) VALUES
(10, 'ACCOUNTING', 'NEW YORK'),
(20, 'RESEARCH', 'DALLAS'),
(30, 'SALES', 'CHICAGO'),
(40, 'OPERATIONS', 'BOSTON');-- 插入员工数据
INSERT INTO employees (emp_no, emp_name, job_title, manager_id, hire_date, salary, commission, dept_no) VALUES
(7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800.00, NULL, 20),
(7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600.00, 300.00, 30),
(7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250.00, 500.00, 30),
(7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975.00, NULL, 20),
(7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250.00, 1400.00, 30),
(7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850.00, NULL, 30),
(7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450.00, NULL, 10),
(7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000.00, NULL, 20),
(7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000.00, NULL, 10),
(7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500.00, 0.00, 30),
(7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100.00, NULL, 20),
(7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950.00, NULL, 30),
(7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000.00, NULL, 20),
(7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300.00, NULL, 10);-- 插入薪资等级数据
INSERT INTO salary_grades (grade, min_salary, max_salary) VALUES
(1, 700, 1200),
(2, 1200, 1400),
(3, 1400, 2000),
(4, 2000, 3000),
(5, 3000, 9999);COMMIT;


二、简单查询

1.部分语法规则

  1. 一条 SQL 语句 必须以【;】结尾;
  2. SQL 语句没有大小写限制;
  3. 可以使用【desc + 表名】来查看表结构;
  4. 使用【\c】终止当前语句。

2.查询一个字段

        一个表有多列,查询一个字段就是查询其中的一列。

(1)查询员工编号

select emp_no from employees;


(2)查询员工姓名

select emp_name from employees;


3.查询多个字段

        查询多个字段只需要在字段名之间添加【,】。

(1)查询员工编号、姓名

select emp_no, emp_name from employees;


(2)查询部门编号、名称、位置 

select dept_no, dept_name, location from departments;


4.查询全部字段

        可以使用【*】代表所有字段。

        但是使用【*】效率低、可读性差。

(1)查询薪资等级全部字段

select * from salary_grades;


 5.查询时进行数学运算

(1)查询员工姓名、年薪

select emp_name, salary * 12 from employees;


6.查询时起别名 

(1)查询员工姓名、年薪

select emp_name, salary * 12 as year_salary from employees;


(2)查询员工全部信息

        别名可以省略 as ,也可以是中文,但是低版本 MySQL 会报错,需要添加单引号或双引号,推荐使用单引号。

        别名词组间想要添加空格,也需要使用引号。

 select emp_no as ID, emp_name as 姓名, job_title 职位, manager_id '领导ID', hire_date "入职日期", salary as 薪资, commission 津贴, dept_no '部门ID' from employees;


三、条件查询 

1.过滤条件

条件说明
=等于
<> 或 !=不等于
>=大于等于
<=小于等于
>大于
<小于
between…and…等同于 >= and <=
is null为空
is not null不为空
<=>安全等于(较少使用)
and 或 &&
or 或 ||
in在指定值当中
not in不在指定值当中
like模糊查询

2.语法格式

  1. select …… from …… where [过滤条件]; ;
  2. 执行顺序:
    1. 先执行 from;
    2. 再执行 where;
    3. 最后执行 select。

3.等于/不等于

(1)查询姓名为“JONES”的员工信息

select * from employees where emp_name = 'JONES';


(2) 查询位置不在“NEW YORK”的部门信息

# 方式1
select * from departments where location != 'NEW YORK';# 方式2
select * from departments where location <> 'NEW YORK';


4.大于等于/小于等于/大于/小于

(1)查询月薪 2000 以上的员工姓名和薪资

select emp_name, salary from employees where salary >= 2000;


(2)查询最低薪资低于 1400 的薪资等级信息

select * from salary_grades where min_salary <= 1400;


5.and/between…and…/or

(1)查询薪资在 1600~2500 之间的员工信息

# 方式1
select * from employees where salary >= 1600 and salary <= 2500;# 方式2
select * from employees where salary between 1600 and 2500;


(2)查询职位是“CLERK”或“SALESMAN”的员工信息

select * from employees where job_title = 'CLERK' or job_title = 'SALESMAN';


(3)and 和 or 优先级

        and 和 or 同时出现时,and 优先级更高。若希望先执行 or,需要给 or 条件添加小括号。

        此外,无论是 Java 还是 SQL 中,遇到优先级不确定的情况,都可以添加小括号解决。

        下面给出一个实例:

        查询薪资低于 1500,且部门编号是 20 或 30 的员工信息。

select * from employees where salary <= 1500 and (dept_no = 20 or dept_no =30);


 6.is null/is not null

        判断某个数据是否为 null,不可以使用【=】,只能使用【is null】。因为在数据库中, null 不是一个值,只是代表没有值/数据。

(1)查询没有津贴的员工信息

select * from employees where commission is null;


7.in/not in

        in 和 not in 后边有一个小括号,括号内有多个值,值与值之间用【,】分割,其并不代表区间。

(1)查询职位是“ANALYST”、“PRESIDENT”、“MANAGER”的员工信息

select * from employees where job_title in('ANALYST', 'PRESIDENT', 'MANAGER');


(2)是否忽略 null

  1. in 自动忽略 null;
  2. not in 不会自动忽略 null。

        上述两条语句与下方两条语句等价 ,所以可知其是否会忽略 null。


8.模糊查询

  1. 语法格式:【select… from… where 字段 like '通配符表达式';】;
  2. 通配符:
    1. %:任意多个字符;
    2. _:任意一个字符。
  3. 如遇到模糊查询的内容中也出现上述通配符的情况,需要使用【\】转义。

(1)查询姓名以 S 开头的员工信息 

select * from employees where emp_name like 'S%';


(2)查询姓名以 T 结尾的员工信息

select * from employees where emp_name like '%T';


(3)查询姓名第二个字母是 A 的员工信息

select * from employees where emp_name like '_A%';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/77980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云服务迁移实战: 04-IP 迁移

普通过户 如资料过户按量付费EIP所述&#xff0c;如果原账号是个人账号&#xff0c;则目标账号无限制&#xff0c;如果原账号是企业账号&#xff0c;则目标账号必须为相同认证主体的企业账号。 其主要操作就是&#xff0c;在原账号发起过户&#xff0c;在新账号接收过户。具体…

安恒安全培训实习生,CTF方向面试题!

目均模拟真实CTF赛题&#xff0c;需结合动态调试与工具链&#xff08;pwntools/ROPgadget/one_gadget&#xff09;完成利用。 覆盖栈、堆、格式化字符串、高级堆利用、沙箱逃逸五大方向&#xff0c;从基础ROP到House of Apple&#xff0c;逐步提升对抗防护的能力。 题目1&…

【C++QT】Combo Box 组合框控件详解

文章目录 一、QComboBox&#xff08;Combo Box&#xff09;1. 基本用法2. 特性3. 信号与槽函数 二、QFontComboBox&#xff08;Font Combo Box&#xff09;1. 基本用法2. 特性3. 信号与槽函数 三、总结如果这篇文章对你有所帮助&#xff0c;渴望获得你的一个点赞&#xff01; 在…

Best Video下载器——全能高清无水印视频下载工具

在当今短视频和流媒体盛行的时代&#xff0c;用户经常遇到想要下载视频却受限于平台限制的情况。无论是收藏喜欢的影视片段、保存有价值的教程&#xff0c;还是进行二次创作&#xff0c;一款高效、免费且支持多平台的视频下载工具显得尤为重要。Best Video下载器正是为此而生&a…

AI音频核爆!Kimi开源“六边形战士”Kimi-Audio,ChatGPT语音版?

音频处理领域的天花板被撕开了。 刚刚&#xff0c;kimi 发布全新通用音频基础模型 Kimi-Audio&#xff0c;这款由月之暗面&#xff08;Moonshot AI&#xff09;推出的开源模型&#xff0c;在 24 小时内收获 3.2 万星标&#xff0c;不仅以 1.28% 词错率刷新语音识别纪录&#xf…

安装VMware虚拟机时出现报错:

如果已在 BIOS/固件设置中禁用 Intel VT-x&#xff0c;或主机自更改此设置后从未重新启动&#xff0c;则 Intel VT-x 可能被禁用。 1.解决的方法&#xff1a; BIOS 设置要求 为了使 VMware Workstation 支持用户级别的监控并允许模块 MonitorMode 成功启动&#xff0c;需确保…

基于ESP32 S3 + PVDF采集呼吸心率

压电薄膜可以采集到微动特征&#xff0c;压阻传感器可以采集到是否有大重量压力&#xff0c;利用这个特性实现类似于床带采集呼吸心率&#xff0c;实现生命体征检测功能 ESP32 S3 PVDF实现生命体征检测带 硬件&#xff1a; ESP32 S3PVDF压敏压阻涂鸦传感器&#xff08;可选支…

多模态大语言模型arxiv论文略读(五十)

Pensieve: Retrospect-then-Compare Mitigates Visual Hallucination ➡️ 论文标题&#xff1a;Pensieve: Retrospect-then-Compare Mitigates Visual Hallucination ➡️ 论文作者&#xff1a;Dingchen Yang, Bowen Cao, Guang Chen, Changjun Jiang ➡️ 研究机构: 同济大学…

智能驾驶新时代:NVIDIA高级辅助驾驶引领未来出行安全

智能驾驶新时代&#xff1a;NVIDIA高级辅助驾驶引领未来出行安全 在全球汽车产业数字化转型的时代潮流中&#xff0c;高级辅助驾驶技术已逐渐成为推动产业革新的核心动力。作为这一领域的领导者之一&#xff0c;NVIDIA通过其先进的技术解决方案&#xff0c;正在积极塑造未来的…

总结小程序的坑

小程序中的wxss中 background不能使用本地图片 解决方法&#xff1a; 使用 Base64 编码&#xff08;适合小图片&#xff09;使用网络图片&#xff0c; 网络图片需要用https用 image 标签替代 分包的图片主包不能使用&#xff0c;这是分包中的图片资源默认不能被主包或其他分包直…

供应链管理-国际结算:本币互换 / 数字货币桥 / 我国在沙特发行美债

一、本币互换 本币互换&#xff08;Local Currency Swap&#xff09;是指两国&#xff08;或地区&#xff09;的央行&#xff08;货币当局&#xff09;签订协议&#xff0c;约定在一定条件下&#xff0c;任何一方可以一定数量的本币交换等值的对方货币&#xff0c;用于双边贸易…

湖北理元理律师事务所:从法律视角看债务优化的合规实践

在债务纠纷高发的社会背景下&#xff0c;法律服务机构如何通过合规手段帮助债务人实现债务优化&#xff0c;成为公众关注的议题。湖北理元理律师事务所作为经国家司法局注册登记的债事服务机构&#xff0c;其服务模式与成果为行业提供了可参考的样本。 服务框架&#xff1a;法…

免费在Colab运行Qwen3-0.6B——轻量高性能实战

Qwen一直在默默地接连推出新模型。 每个模型都配备了如此强大的功能和高度量化的规模,让人无法忽视。 继今年的QvQ、Qwen2.5-VL和Qwen2.5-Omni之后,Qwen团队现在发布了他们最新的模型系列——Qwen3。 这次他们不是发布一个而是发布了八个不同的模型——参数范围从6亿到235…

【Java】打印运行环境中某个类引用的jar版本路径

背景 正式环境出现jar版本不匹配问题&#xff0c;不知道正式环境用的哪个jar版本。通过一下可以打印出类调用的jar // 获取 POIFSFileSystem 类的加载器并打印其来源路径 ClassLoader classloaderPOIFS org.apache.poi.poifs.filesystem.POIFSFileSystem.class.getClassLoade…

Python生活手册-元组:保险柜与瑞士军刀

一、元组的本质&#xff1a;数据世界的保险柜 Python元组就像银行金库里的​​智能保险箱​​&#xff0c;一旦存放物品就会自动焊死箱门。当你把结婚戒指和房产证放进保险箱后&#xff0c;任何人都无法替换或破坏这些物品&#xff0c;只能通过特定窗口查看内容。 # 创建家庭…

dameng-mcp-server达梦MCP服务

达梦数据库手写MCP服务 文件名称 server.py 源代码 参考mysql-mcp-server写的dameng数据库版本的 点击访问mysql-mcp-server的github仓库 mcp服务端 import asyncio import logging import os import sys from dmPython import connect from mcp.server import Server from mc…

IntelliJ IDEA 内存优化

优化插件使用 1&#xff09;卸载不必要插件&#xff1a;进入 “设置”→“插件”→“已安装”&#xff0c;查看并卸载不常用的插件&#xff0c;如代码分析、代码覆盖率等不常用的插件&#xff0c;只保留必要的插件。2&#xff09;定期清理与更新插件&#xff1a;定期检查插件更…

TCL中环深化全球布局,技术迭代应对行业调整

在全球能源转型加速与光伏行业深度调整的双重背景下,TCL中环凭借前瞻性的全球化布局与核心技术突破,持续巩固行业领先地位。2024年年报显示,报告期内实现营业收入284.19亿元,净利润为-108.06亿元。面对行业周期性亏损与产业链价格非理性竞争带来的业绩压力,公司自2024年下半年起…

dubbo 异步化实践

DubboService public class AsyncOrderFacadeImpl implements AsyncOrderFacade {private Logger logger LoggerFactory.getLogger(AsyncOrderFacadeImpl.class);// 构建线程池ThreadPoolExecutor threadPoolExecutor new ThreadPoolExecutor(1000, 1000, 10, TimeUnit.SECOND…

CSS3布局方式介绍

CSS3布局方式介绍 CSS3布局(Layout)系统是现代网页设计中用于构建页面结构和控制元素排列的一组强大工具。CSS3提供了多种布局方式,每种方式都有其适用场景,其中最常用的是Flexbox和CSS Grid。 先看传统上几种布局方式,再较详细的介绍现代布局方式Flexbox和CSS Grid。 传…