mysql常用数据操作之查
将数据库查询单独开来是因为使用最多,也是技巧最多,同时面试最容易问的部分
简单查询
select * from table_name;
select name,age from table_name;
模糊查询%和_
%表示0个或多个未知字符
_表示单个未知字符
select name,age from table_name where name='王%';查询姓王的人
select name,age from table_name where name='%天%';查询姓名中包含天的人
select name,age from table_name where name='王_';查询姓王且名字是两个字的人
配合比较运算符 > < >= <= = != 和 <>
select name,age from table_name where age>18;
select name,age from table_name where age<18;
select name,age from table_name where age>=18;
select name,age from table_name where age<=18;
select name,age from table_name where age=18;(数据库语句中=就是=,而不是程序语言中的==)
select name,age from table_name where age!=18;或select name,age from table_name where age<>18;(比较运算符中!=,<>都代表排除,因此有两种写法)
数值计算 + - * / %
(太简单了不举例了)
去除重复 distinct
select distinct job from emp;
配合and 和 or
select name,age,sal from table_name where age>30 and sal>2000;(and表示条件必须同时满足)
select name,age,sal from table_name where age>30 or sal>2000;(or表示条件满足其中之一即可)
包含一个条件到另一个条件之间 between x and y
select name,age,sal from table_name where sal between 2000 and 3000;查询工资在2000-3000之间的人
与select name,age,sal from table_name where sal>=2000 and sal<=3000;相同
满足哪些条件 in
select name,age,sal from table_name where sal in(2000,3000,4000);查询工资在哪些人的工资是2000或3000或4000
与select name,age,sal from table_name where sal=2000 or sal=3000 or sal=4000;相同
is null和is not null
select name,age,sal from table_name where age is null;哪些人的年龄为空
select name,age,sal from table_name where age is not null;哪些人的年龄不为空
别名
select ename name,age 年龄 from table_name;
排序 order by 字段名
order by 字段名 asc(升序)/desc(降序)
mysql默认是升序
select ename,age from table_name order by age desc;
分页查询 limit
limit 跳过条数,请求条数
select ename,age,sal from table_name limit 4,2;跳过1,2,3,4条记录,请求5,6条记录
聚合函数 avg max min sum count
select avg(sal) from table_name;查询员工平均工资
select max(sal) from table_name;查询最高工资
select min(sal) from table_name;查询最低工资
select avg(sal) from table_name;查询员工平均工资
select sum(sal) from table_name;查询工资总和
select count(*) from table_name where deptno=30;查询30号部门共有多少员工
分组查询 group by
select avg(sal) from table_name group by deptno;查询每个部门的平均工资
select avg(sal) from table_name where sal>100 group by deptno;查询每个部门的平均工资,要求员工工资高于1000
分组查询支持多字段分组
select deptno,job,avg(sal) from table_name group by deptno,job;查询每个部门下,每种职位的平均工资
聚合函数的条件having
select avg(sal) from table_name group by deptno having avg(sal)>2000;查询每个部门的平均工资,要求只显示平均工资高于2000的部门
子查询(嵌套查询)
即使用一个查询语句的查询结果作为另一个查询语句的条件判断
select * from emp where sal=(select max(sal) from emp);查询表中工资最高的员工信息
关联查询(同时查询多张表的查询方式)
select e.ename,d.dname from emp e,dept d where e.deptno=d.deptno;
等值链接、内连接和外连接
等值链接 select * from A,B where A.x=B.x and A.age>20;
内连接 select * from A join B on A.x=B.x where A.age>20;
select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno;查询每一个员工的姓名对应的部门名
外连接 select * from A left/right join B on A.x=B.x where A.age=20; 外连接就是查询一张表的全部数据和另一张表的交集数据
select e.ename,d.dname from emp e right join dept d on e.deptno=d.deptno;查询所有的部门名和对应的员工名
如果查询的数据是两张表的交集数据用内连接,如果查询的数据是一张表的全部数据和另外一张表的交集数据使用外连接
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」