【MySQL数据库】SQL语法基础--DQL(入门级)

在学习数据库的数据操作之前,我们应该先学习查询操作,只有学会了查询,后面操作我们才能看到操作后的反馈。


基础查询

sql 复制代码
select fieldlist from tablename;

解释:从from表tablename中查询,将字段列表fieldlist挑选select出来展示

例如:

sql 复制代码
select * from emp;

其中【*】星号 表示 表中的所有字段(empno、ename、job、mgr、hiredate、sal、comm、deptno)。如果选择特定字段显示,那么就是:

sql 复制代码
select empno,ename,sal from emp;

条件查询

直接查询

单纯的基础查询并不能解决所有问题,现在,我想找员工名叫smith的员工并获取他的信息:

语法:

sql 复制代码
select field_list from table_name where condition_list;
等于: =
大于: >
小于: <
不等于: != ; <>
是否为空: is NULL; is not NULL

范围查询

现在我的需求是找出sal薪资大于3000的员工,展示他们的信息:

如果需求是查询薪水在1000至4000的员工信息:那么有两种写法:

sql 复制代码
select * from emp where sal >=1000 and sal <=4000;
select * from emp where sal between 1000 and 4000;

更多示例:

sql 复制代码
select * from emp where sal between 2000 and 4000;
select * from emp where sal >= 2000 and sal <= 4000;
select * from emp where sal >= 2000 && sal <= 4000;

知识点提炼:

与: and &&

或: or ||

非: not

在范围内: between num_a and num_b num_a,num_b-左右都是闭区间

(不)在列表中: (not) in

模糊查询

now!我想查询名字里包含S的员工信息:

sql 复制代码
select * from emp where ename like "%S%";

更多应用:

sql 复制代码
select * from emp where job like "s%"; #job字段中首字母为s的所有数据行
select * from emp where job like "%.cpp"; #job字段中以.cpp结尾的所有数据行
select * from emp where job like "%hello%"; #job字段中包含hello的所有数据行
select * from emp where job like "_s%"; #job字段中第二个字符为s的所有数据行

知识点提炼:

(' * ''表示字段列表中所有字段的通配写法)

(" _ "表示记录中数据的占位符-一个占一个)

(" % "表示记录中数据的通配符-一个当多个)

进阶查询1

排序查询

sql 复制代码
select * from mytb order by field[asc],field2 desc;
#查找mytb表,查询结果按照字段1升序(asc),如果字段1结果一样那就按照字段2降序(desc)排序显示
select * from mytb order by num;
#查找mytb表,查询结果按照第二列字段的数据进行升序(默认asc)排序

tips:asc 和 desc 只修饰单个字段

去重查询

sql 复制代码
select distinct job from emp;    #job不一样的结果
select distinct job,ename from emp;    #job或ename不一样的结果(同时相同才叫重)

select ename, distinct job from emp; #error,错误,无法在限制一条字段的基础上查询非限制字段
select distinct ename, distinct job from emp; #error,错误,无法"分别"限制多条字段,只能"同时"限制

select distinct * from emp;#查询记录完全不一样

组合查询

sql 复制代码
#默认去重
select id,name from student
union
select id,name from teacher

#不去重
select id,name from student
union all
select id,name from teacher

tips:组合查询时,要求列的数量相同、列的数据类型类似

进阶查询2

分页查询

sql 复制代码
select * from mytb order by field desc limit 10;
#根据字段field降序排序显示,查询结果记录数限制在前10条
select * from mytb order by field desc limit 5,5;
#从第五条数据开始往后取五条【第一个索引为0,索引为5代表第六条】

分组查询

sql 复制代码
select 字段 
from 表名 
where 条件 
group by 字段;#where 分组前过滤-不可以使用分组函数

select 字段 
from 表名 
group by 字段 having 条件;#having 分组后过滤-可以使用分组函数

执行顺序

sql 复制代码
select distinct 字段 
from 表名 
where 条件 
group by 字段 having 条件 
order by 字段 limit 数字;


#执行顺序
1.from 加载表
2.where 过滤后生成临时表
3.group by having 分组再过滤
4.select distinct 取出字段
5.order by limit 排序、限制

本章只做笔记记录目的,没有详细讲解。但是基础的语法可以用来参考。感谢大家支持!

相关推荐
TheRouter14 分钟前
AI Agent 记忆体系建设实战:短期、长期与工作记忆的工程实现
数据库·人工智能·oracle
Omics Pro22 分钟前
首个!外源天然产物综合性代谢图谱
数据库·人工智能·算法·机器学习·r语言
唐青枫28 分钟前
MySQL EXISTS 详解:存在性判断、NOT EXISTS 与实战示例
sql·mysql
JAVA面经实录9171 小时前
Hibernate面试题库
数据库·oracle·hibernate
2301_773643622 小时前
华为云存储实验
网络·mysql·华为云
迷枫7122 小时前
DM8 目录结构与常用排查入口梳理
服务器·数据库
Mr.Daozhi3 小时前
RAG 进阶实战:跑通 Demo 后我连续翻了 6 次车,逐一修复才真正可用(含 Gradio Web 版)
前端·数据库·langchain·大模型·gradio·rag·科研工具
小程故事多_803 小时前
Claude Code自定义workflow skills用法
数据库·人工智能·智能体
大鹏说大话3 小时前
SQL 排序与分组实战:解决“分组后取最新数据“
android·java·数据库
quan26313 小时前
20260529,日常开发-数据库主从问题
java·mysql·主从·延迟