0


MySQL基础篇【第二篇】| 简单的查询、条件查询、排序查询

✅作者简介:大家好我是@每天都要敲代码,一位材料转码农的选手,希望一起努力,一起进步!
📃个人主页:@每天都要敲代码的个人主页

🔥系列专栏:MySQL专栏
💬推荐一款模拟面试、刷题神器,从基础到大厂面试题👉点击跳转刷题网站进行注册学习

一:简单的查询(DQL)

语法格式:

select 字段名1,字段名2,字段名3,.... from 表名;

注意:
(1)任何一条sql语句以 “;” 结尾
(2)sql语句不区分大小写

1. 查询一个字段

例如:查询员工的姓名

select ename from emp;

Select语句后面跟的是字段名称,select是关键字,select和字段名称之间采用空格隔开,from表示将要查询的表,它和字段之间采用空格隔开

2. 查询多个字段

例如:查询员工的编号和姓名

select empno, ename from emp;

查询多个字段,select中的字段采用逗号间隔即可,最后一个字段,也就是在from前面的字段不能使用逗号了。

3. 查询全部字段

例如:查询当前数据库中,emp表中的所有字段;在select语句中可以使用运算符!

select * from emp;

采用select * from emp,虽然简单,但是*号不是很明确,建议查询全部字段将相关字段写到select语句的后面;在以后java连接数据库的时候,是需要在java程序中编写SQL语句的这个时候编写的SQL语句不建议使用select * 这种形式,建议写明字段,这样可读性强!

4. 计算员工的年薪

例如:列出员工的编号,姓名和年薪

select empno,ename,sal*12 from emp;

sal*12看着很不舒服,我们可以用as给查询结果的列重命名,as可省略

5. 将查询出来的字段显示为中文

采用as关键字重命名表字段,并且这里的as 是可以省略的!

注意:字符串必须添加单引号 或者 双引号

       标准sql语句中要求字符串使用单引号括起来;虽然mysql支持双引号,尽量别用!
select empno as '员工编号',ename as '员工姓名',sal*12 as '年薪'from emp;
# 写成双引号的方式,只能在MySQL中运行,不通用;建议写成单引号的方式
select empno  "员工编号", ename  "员工姓名", sal*12  "年薪" from emp;

二:条件查询

条件查询需要用到where语句,where必须放到from语句表的后面

语法格式:
select
字段,字段...
from
表名
where
条件;

执行顺序:先from,然后where,最后select

支持如下运算符:

1. = 操作符

(1)查询薪水为5000的员工

select empno, ename, sal from emp where sal=5000;

(2)查询job为MANAGER的员工

注意:manager字符串,要用单引号或者双引号括起来!

select empno, ename from emp where job='manager';

2. <> != 操作符

(1)查询薪水不等于5000的员工

注意:对于数值也可以采用单引号或者双引号引起来的,写成'5000'或者“5000”都是可以的,但是不建议这样写!

select empno, ename, sal from emp where sal <> 5000;
select empno, ename, sal from emp where sal != 5000;

(2)查询工作岗位不等于MANAGER的员工

 select empno, ename, sal from emp where job<>'manager';

3. between … and …操作符

between and在使用的时候必须左小右大。

between and除了可以使用在数字方面(左闭右闭)之外,还可以使用在字符串方面(左闭右开)。

(1)查询薪水为1600到3000的员工

第一种方法:使用between...and...

select empno, ename, sal from emp where sal between 1600 and 3000;

between … and …,它是包含最大值和最小值的;就等价于>= and <=

第二种方式:使用>= and <=

select empno, ename, sal from emp where sal >=1600 and sal<=3000;

(2)查看员工首字母是A到C开头的名字

select ename from emp where ename between 'A' and 'C';

4. is null

null为空,但不是空串,为null可以设置这个字段不填值,空不是一个值,不能用等号衡量。如果查询为null的字段,采用is null;不能采用 =null !

(1)查询津贴为空null的员工

(1)首先先使用select * from emp; 查询到所有的comm信息,发现有很多是NULL

(2)如果直接只用 =null 是无法查询出符合条件的数据

(3)应该采用** is null **作为查询条件

select * from emp where comm is null;
select * from emp where comm is not null;

(2)找出那些员工没有津贴:这就包括为null的和0的

select * from emp where comm is null or comm=0;

5. and

and表示并且的含义,表示所有的条件必须满足

例如:查询工作岗位为MANAGER,薪水大于2500的员工

select * from emp where job='manager' and sal >= 2500;

6. or

or,只要满足条件即可,相当于包含;满足条件之一即可!

例如:查询出job为manager或者job为salesman的员工

select * from emp where job='manager' or job = 'salesman';

7. and 和 or 联合使用

找出薪资大于1000的并且部门编号是20或30部门的员工。

select ename,sal,deptno from emp where sal > 1000 and (deptno = 20 or deptno = 30);
-- and优先级比or高,要想让or先执行,必须加小括号

8. in

in表示包含的意思,完全可以采用or来表示,采用in会更简洁一些

(1)查询出job为manager或者job为salesman的员工

使用or:select * from emp where job='manager' or job = 'salesman'; 使用in是:

select * from emp where job in ('manager','salesman');

(2)查询出薪水包含1600和薪水包含3000的员工

select * from emp where sal in(1600,3000);

9. not

(1)查询出薪水不包含1600和薪水不包含3000的员工

第一种写法:使用不等<>

select * from emp where sal<>1600 and sal <>3000;

第二种写法: 使用等于= 和 not 联合使用

select * from emp where not(sal=1600 or sal=3000);

第三种写法:使用not in

select * from emp where sal not in(1600,3000);

(2)查询出津贴不为null的所有员工

select * from emp where comm is not null;

10. like

(1)Like可以实现模糊查询,like支持%和下划线匹配

(2)Like中%和下划线的差别?

    %匹配任意字符出现的个数

    下划线只匹配一个字符

(3)Like 中的表达式必须放到单引号中或者双引号中

(1)查询姓名以M开头所有的员工

select * from emp where ename like 'M%';

(2)查询姓名以N结尾的所有的员工

select * from emp where ename like '%N';

(3)查询姓名中包含O的所有的员工

select * from emp where ename like '%O%';

(4)查询姓名中第二个字符为A的所有员工

select * from emp where ename like '_A%';

(5)补充:找出名字中有下划线_的;利用转义字符!

select * from emp where ename like '%\_%';

三:排序查询

1 .单一字段排序

排序采用order by子句,order by后面跟上排序字段,排序字段可以放多个,多个采用逗号间隔,order by默认采用升序,如果存在where子句那么order by必须放到where语句的后面

(1)按照薪水由小到大排序

select * from emp order by sal;

(2)先取得job为MANAGER的员工,再按照薪水由小到大排序

select * from emp where job='manager' order by sal; 

(3)按照多个字段排序,如:首先按照job排序,再按照sal排序

select * from emp order by job,sal;

2. 手动指定排序顺序

(1)手动指定按照薪水由小到大排序:asc;默认也是从小到大的!

select * from emp order by sal asc;

(2)手动指定按照薪水由大到小排序:desc

select * from emp order by sal desc;

3. 多个字段排序

(1)按照job和薪水倒序

select * from emp order by job desc,sal desc;

(2)按照工资的降序排列,当工资相同的时候再按照名字的升序排列

注意:****越靠前的字段越能起到主导作用,只有当前面的字段无法完成排序的时候,才会启用后面的字段

select ename,sal from emp order by sal desc, ename asc;

4. 使用字段的位置(下标)来排序

也就是通过下标进行排序,从1开始,例如sal下标是6,那么按照薪水升序;不健壮,不建议使用

select * from emp order by 6;

总结:一定要注意执行的顺序

select
字段 3
from
表名 1
where
条件 2
order by
.... 4

order by是最后执行的!

结束语

今天的分享就到这里啦!快快通过下方链接注册加入刷题大军吧!各种大厂面试真题在等你哦!
💬刷题神器,从基础到大厂面试题👉点击跳转刷题网站进行注册学习

标签: mysql 数据库 sql

本文转载自: https://blog.csdn.net/m0_61933976/article/details/126259962
版权归原作者 @每天都要敲代码 所有, 如有侵权,请联系我们删除。

“MySQL基础篇【第二篇】| 简单的查询、条件查询、排序查询”的评论:

还没有评论