(1-7-3)数据库的基本查询

目录

[1. 数据库的基本查询](#1. 数据库的基本查询)

[1.1 简单的记录查询](#1.1 简单的记录查询)

[1.2 使用列别名](#1.2 使用列别名)

[2. 数据分页查询](#2. 数据分页查询)

(1)查询前五行数据

[(2)查询 11 ~ 15 行数据](#(2)查询 11 ~ 15 行数据)

[3. 结果集排序](#3. 结果集排序)

[3.1 单关键字排序](#3.1 单关键字排序)

(1)升序排列

(2)降序排列

(3)按照名字降序排列

[3.2 多关键字排序](#3.2 多关键字排序)

[(1)按照 薪资降序 + 入职日期升序 查询](#(1)按照 薪资降序 + 入职日期升序 查询)

[(2)部门升序 + 薪资降序 查询](#(2)部门升序 + 薪资降序 查询)

[3.3 排序 + 分页](#3.3 排序 + 分页)

[(1)薪资 默认升序排列 1 ~ 5 行数据](#(1)薪资 默认升序排列 1 ~ 5 行数据)

[4. 去除重复记录](#4. 去除重复记录)

[4.1 去除 job 的相同行数据](#4.1 去除 job 的相同行数据)

[4.2 去除 job与其他关键字联合 的相同行数据](#4.2 去除 job与其他关键字联合 的相同行数据)

[5. 条件查询](#5. 条件查询)

[(1)查询部门编号为20 且薪资大于1500 的员工信息](#(1)查询部门编号为20 且薪资大于1500 的员工信息)

[(2)查询部门编号为20 或 30, 且薪资大于 1300 的员工信息](#(2)查询部门编号为20 或 30, 且薪资大于 1300 的员工信息)

[(3)查询部门编号为 10 或 30,且年收入大于17000, 且工龄超过20年](#(3)查询部门编号为 10 或 30,且年收入大于17000, 且工龄超过20年)

[(4)查询部门编号为 10、20、30, 且 工作不是(salesman 或 president),且入职年月早于"1995-01-01"](#(4)查询部门编号为 10、20、30, 且 工作不是(salesman 或 president),且入职年月早于“1995-01-01”)

[(5) 查询奖金(comm)为空 的员工信息(带小节)](#(5) 查询奖金(comm)为空 的员工信息(带小节))

[(6)查询奖金(comm)不为空 的员工信息](#(6)查询奖金(comm)不为空 的员工信息)

[(7)查询奖金(comm)不为空 薪资在1500与2500之前 的员工信息](#(7)查询奖金(comm)不为空 薪资在1500与2500之前 的员工信息)

[(8) 查询奖金(comm)不为空 且薪资在1500与3000之前 姓名中包含A 的员工信息](#(8) 查询奖金(comm)不为空 且薪资在1500与3000之前 姓名中包含A 的员工信息)

(9)查询姓名为"__RD"的员工

[(10)通过正则表达式查询 长度为2~4个字的汉字字符](#(10)通过正则表达式查询 长度为2~4个字的汉字字符)

[(11) 逻辑运算符](#(11) 逻辑运算符)

[(12)查询 员工编号不为10、20 的员工信息](#(12)查询 员工编号不为10、20 的员工信息)

[(13)查询 (员工编号不为10、20) 异或 (薪资大于1800) 的员工信息](#(13)查询 (员工编号不为10、20) 异或 (薪资大于1800) 的员工信息)

[(14) 按位运算符](#(14) 按位运算符)

[(15) where 子句的注意事项](#(15) where 子句的注意事项)

[6. 各种子句的执行顺序](#6. 各种子句的执行顺序)


前置知识总结:


示例数据库文件:

通过网盘分享的文件:demo.sql

链接: https://pan.baidu.com/s/1iUKSMScC1PXtbOFFaKm-vQ 提取码: i5hb 复制这段内容后打开百度网盘手机App,操作更方便哦


1. 数据库的基本查询

1.1 简单的记录查询

sql 复制代码
select * from t_emp;
sql 复制代码
select empno, ename, sal, deptno from t_emp;

1.2 使用列别名

sql 复制代码
select empno, ename, sal*14 as "year-income" from t_emp;

2. 数据分页查询

(1)查询前五行数据

方式一:

sql 复制代码
# 查询 1 ~ 5 行数据
select empno, ename, sal, deptno from t_emp limit 0,5;

方式二:

sql 复制代码
# 查询 1 ~ 5 行数据
select empno, ename, sal, deptno from t_emp limit 5;
(2)查询 11 ~ 15 行数据
sql 复制代码
# 查询 11 ~ 15 行数据
select empno, ename, sal, deptno from t_emp limit 10,5;

3. 结果集排序

3.1 单关键字排序

(1)升序排列
sql 复制代码
select empno, ename, sal from t_emp order by sal;

select empno, ename, sal from t_emp order by sal asc;
(2)降序排列
sql 复制代码
# 按照薪资 降序排列
select empno, ename, sal from t_emp order by sal desc;
(3)按照名字降序排列

3.2 多关键字排序

(1)按照 薪资降序 + 入职日期升序 查询
sql 复制代码
# 按照 薪资降序 + 入职日期升序  查询
select 
  empno, ename, sal, hiredate 
from t_emp 
order by sal desc, hiredate asc;
(2)部门升序 + 薪资降序 查询
sql 复制代码
# 按照 部门升序 + 薪资降序 查询
select 
  empno, ename, sal, deptno
from t_emp 
order by deptno asc, sal desc;

3.3 排序 + 分页

(1)薪资 默认升序排列 1 ~ 5 行数据
sql 复制代码
# 按照薪资 默认升序排列 1 ~ 5 行数据
select empno, ename, sal from t_emp order by sal limit 5;

4. 去除重复记录

4.1 去除 job 的相同行数据
sql 复制代码
select job from t_emp;
# 去除 job 的相同行数据
select distinct job from t_emp;
4.2 去除 job与其他关键字联合 的相同行数据
sql 复制代码
select job, sal from t_emp;
# 去除 job与其他关键字联合 的相同行数据
select distinct job, sal from t_emp;

5. 条件查询

(1)查询部门编号为20 且薪资大于1500 的员工信息
sql 复制代码
# 查询部门编号为20  且薪资大于1500 的员工信息
select empno, ename, sal, job 
  from t_emp
where deptno = 20 and sal >= 1500;
(2)查询部门编号为20 或 30, 且薪资大于 1300 的员工信息
sql 复制代码
# 查询部门编号为20 或 30, 且薪资大于 1300 的员工信息
select empno, ename, sal, job
  from t_emp 
where (deptno = 20 or deptno = 30) and sal >= 1300;
(3)查询部门编号为 10 或 30,且年收入大于17000, 且工龄超过20年
sql 复制代码
# 查询部门编号为 10 或 30,且年收入大于17000, 且工龄超过20年
select empno, ename, sal, job
  from t_emp 
where (deptno = 10 or deptno = 30) 
and (sal + ifnull(comm, 0)) * 12 >= 17000
and datediff(now(), hiredate)/365 >= 20;
(4)查询部门编号为 10、20、30, 且 工作不是(salesman 或 president),且入职年月早于"1995-01-01"
sql 复制代码
# 查询部门编号为 10、20、30, 且 工作不是(salesman 或 president),且入职年月早于"1995-01-01"
select *
 from t_emp
where deptno in(10, 20, 30) 
and (job != "SALESMAN" and job != "PRESIDENT" )
and hiredate < "1982-01-01";
(5) 查询奖金(comm)为空 的员工信息(带小节)
sql 复制代码
# 查询奖金(comm)为空 的员工信息
select *
  from t_emp 
where comm is null;
(6)查询奖金(comm)不为空 的员工信息
sql 复制代码
# 查询奖金(comm)不为空 的员工信息
select *
  from t_emp 
where comm is not null;
(7)查询奖金(comm)不为空 薪资在1500与2500之前 的员工信息
sql 复制代码
# 查询奖金(comm)不为空 薪资在1500与2500之前 的员工信息
select *
  from t_emp 
where comm is not null
and sal between 1500 and 2500;
(8) 查询奖金(comm)不为空 且薪资在1500与3000之前 姓名中包含A 的员工信息
sql 复制代码
# 查询奖金(comm)不为空 且薪资在1500与3000之前 姓名中包含A 的员工信息
select *
  from t_emp 
where comm is not null
and sal between 1500 and 3000
and ename like "%A%";
(9)查询姓名为"__RD"的员工
sql 复制代码
# 查询姓名为"__RD"的员工
select *
  from t_emp 
where ename like "__RD"
(10)通过正则表达式查询 长度为2~4个字的汉字字符
sql 复制代码
# 通过正则表达式查询  长度为2~4个字的汉字字符
select *
  from t_emp 
where ename 
regexp "^[\\u4e00-\\u9fa5]{2,4}$";
(11) 逻辑运算符
(12)查询 员工编号不为10、20 的员工信息
sql 复制代码
# 查询 员工编号不为10、20 的员工信息
select *
from t_emp 
where not deptno in(10, 20);
(13)查询 (员工编号不为10、20) 异或 (薪资大于1800) 的员工信息
sql 复制代码
# 查询 (员工编号不为10、20) 异或 (薪资大于1800) 的员工信息  
select empno, ename, deptno, sal
from t_emp
where not deptno in(10, 20) 
xor sal >= 1800;
(14) 按位运算符

14.1 3&7

14.2 3|7

14.3 ~10

14.4 3^7

14.5 10 << 1

15.6 10>>1

(15) where 子句的注意事项

6. 各种子句的执行顺序

相关推荐
ManageEngineITSM2 小时前
技术的秩序:IT资产与配置管理的现代重构
大数据·运维·数据库·重构·工单系统
档案宝档案管理5 小时前
档案宝:企业合同档案管理的“安全保险箱”与“效率加速器”
大数据·数据库·人工智能·安全·档案·档案管理
wangjialelele5 小时前
mysql库操作二
数据库·mysql
Chloeis Syntax5 小时前
MySQL初阶学习日记(1)--- 数据库的基本操作
数据库·学习·mysql
workflower6 小时前
FDD(Feature Driven Development)特征驱动开发
大数据·数据库·驱动开发·需求分析·个人开发
韩立学长7 小时前
基于Springboot的旧物公益捐赠管理系统3726v22v(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
苦学编程的谢7 小时前
Redis_4_常见命令(完)+认识数据类型和编码方式
数据库·redis·缓存
小光学长7 小时前
基于Vue的儿童手工创意店管理系统as8celp7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
睡前要喝豆奶粉7 小时前
.NET Core Web API开发需引入的三个基本依赖配置说明
oracle·c#·.netcore