广告
返回顶部
首页 > 资讯 > 数据库 >MySQL基础篇 | 简单的查询、条件查询、排序查询
  • 425
分享到

MySQL基础篇 | 简单的查询、条件查询、排序查询

mysql数据库sql 2023-09-01 18:09:09 425人浏览 薄情痞子
摘要

✅作者简介:大家好我是@每天都要敲代码,希望一起努力,一起进步! 📃个人主页:@每天都要敲代码的个人主页 🔥系列专栏:MySQL专栏 目录 一:简单的查询 1. 查询一个字段 2. 查询多个字段  3

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

🔥系列专栏:MySQL专栏

目录

一:简单的查询

1. 查询一个字段

2. 查询多个字段 

3. 查询全部字段

4. 计算员工的年薪

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

二:条件查询

1. = 操作符 

2. <> != 操作符

3. between … and …操作符

4. is null

5. and

6. or

7. and 和 or 联合使用

8. in

9. not

10. like

11.  算术运算符

12. 安全等于<=> 

 13. least & greatest

14. 逻辑运算符

15. 位运算符(了解)

三:排序查询

1. 单一字段排序

2. 手动指定排序顺序

3. 多个字段排序

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

5. 使用别名进行排序 


一:简单的查询

语法格式:  

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 * from emp;

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

4. 计算员工的年薪

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

在select语句中可以使用运算符!但不会更改数据库中原始的数据!

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';

(3)“=”只能看作是比较大小,不能字符串拼接!

如果是数字与字符串进行比较,会存在隐式转换(把字符串转换为数字)。若此字符串是数字型的字符串,例如:’1‘,那么会把它转换为整数1;若此字符串不是数字型的字符串,例如:’a‘,并不会转换成ASCII码值来进行比较,会把它转换为整数0来看待!

select 1 = '1'; -- 1select 1 = 'a'; -- 0select 0 = 'a'; -- 1

 

如果比较的两侧都不是数字型的字符串,例如:’a‘,'b'等,此时会转换成ASCII值后在进行比较

select 'a' = 'b';select 'a' < 'b';

只要有NULL参与判断结果就为NULL

1 = NULL; -- NULLNULL = NULL; -- NULL

 

2. <> != 操作符

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

注意:对于数值也可以采用单引号或者双引号引起来的,例如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'; --包括A,不包括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

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

②Like中%和下划线的差别?

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

_下划线只匹配一个字符;

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) 查询既含有a的又含有e的last_name

方法一:写两个模糊查询,然后使用and进行连接

select last_name from employees where last_name like '%a%' and last_name like'%e%';

方法二:放在一起写

 select last_name from employees where last_name like '%a%e%';

 此时发现只有16条记录,与前面的方法相比少了4条,这是因为顺序的问题;还有可能是e在前面a在后面:“%e%a%”

最终写法

select last_name from employees where last_name like '%a%e%' or last_name like '%e%a%';

 

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

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

常用函数补充:

①distinct:去重,去除重复的字段,只保留一个!

②ifnull(字段,0):如果当前字段是null当做0处理,因为null与其它数进行运算,最终的结果还是null!

③着重号``:如果当前字段或者表名是一个MySQL的关键字,那么就是用``来进行区分!

11.  算术运算符

算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加 (+)、减(-)、乘(*)、除(/)和取模(%)运算。

 加法与减法:

①一个整数类型的值对整数进行加法和减法操作,结果还是一个整数;

②一个整数类型的值对浮点数进行加法和减法操作,结果是一个浮点数;

③加法和减法的优先级相同,进行先加后减操作与进行先减后加操作的结果是一样的;

④在Java中,+的左右两边如果有字符串,那么表示字符串的拼接。但是在MySQL中+只表示数 值相加。如果遇到非数值类型,先尝试转成数值,如果转失败,就按0计算。

补充:①MySQL中字符串拼接要使用字符串函数CONCAT()实现 

②字符串存在隐式转换,如果转换不成功,就当做0来处理!

select 1+'1'; -- 整数+整数型的字符串结果还是一个整数,会把整数型的字符串转换成数字(隐式转型)select 1+'a'; -- 无法识别,会把字符串当成0进行处理select 1+null -- 和null进行运算,最终结果也还是null;可以使用ifnull函数进行处理

 

 

乘法与除法:

①一个数乘以整数1和除以整数1后仍得原数;

②一个数乘以浮点数1和除以浮点数1后变成浮点数,数值与原数相等;

一个数除以整数后,不管是否能除尽,结果都为一个浮点数; 一个数除以另一个数,除不尽时,结果为一个浮点数,并保留到小数点后4位

④乘法和除法的优先级相同,进行先乘后除操作与先除后乘操作,得出的结果相同。 在数学运算中,0不能用作除数,在MySQL中,一个数除以0为NULL

select 10 / 2;select 10 / 3; -- 无论是否除尽,最终都是一个浮点型数据,保留小数点后四位select 10 / 0; -- 除以0不会报错,最终结果是一个null

求模(求余)运算符:

结果的符号与被模数的符号保持一致,与模数的符号无关!

select 12 % -5; -- 2select -12 % 5; -- -2select -12 % -5; -- -2

12. 安全等于<=> 

安全等于运算符(<=>)与等于运算符(=)的作用是相似的, 唯一的区别 是‘’可 以用来对NULL进行判断。在两个操作数均为NULL时,其返回值为1,而不为NULL;当一个操作数为NULL时,其返回值为0,而不为NULL。

-- 使用=,只要有NULL参与运算,结果就是NULLselect 1 = NULL; #NULLselect NULL = NULL; #NULL-- 使用安全等于<=>,专门用来比较有NULL参与的运算,结果是0或者1,而不是NULLselect 1 <=> NULL; #0select NULL <=> NULL; #1

:获取emp表中津贴comm为null的数据

首先我们知道不能使用 “等于=” ,只要有NULL参与,使用“等于=”结果就是NULL,没有任何数据

第一种方式:使用is null 前面已经讲过

select * from emp where comm is null;

第二种:使用isnull(),连在一起写,相当于一个函数

select * from emp where isnull(comm);

 

 

第三种:不能使用“等于=”,但可以使用 “安全等于<=>” 参与NULL的运算

select * from emp where comm <=> null;

 

 13. least & greatest

①least:最小值运算符,在多个值中返回最小值!

②greatest:最大值运算符,在多个值中返回最大值!

select lest('e','c','a','f','b');select greatest('e','c','a','f','b');

 

14. 逻辑运算符

逻辑运算符主要用来判断表达式的真假,在MySQL中,逻辑运算符的返回结果为1、0或者NULL。 MySQL中支持4种逻辑运算符如下:

not、and、or前面已经讲过了,这里重点讲解XOR(逻辑异或)---》相同为0相异为1

逻辑异或(XOR)运算符是当给定的值中任意一个值为NULL时,则返回NULL;如果两个非NULL的值都是0或者都不等于0时,则返回0;如果一个值为0,另一个值不为0时,则返回1

-- 相异为1,相同为0select 1 XOR 0; -- 1select 1 XOR 1; -- 0select 0 XOR 0; -- 0

 

15. 位运算符(了解)

位运算符是在二进制数上进行计算的运算符。位运算符会先将操作数变成二进制数,然后进行位运算, 最后将计算结果从二进制变回十进制数。 MySQL支持的位运算符如下:

 

三:排序查询

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; -- 先执行from,然后执行where,再执行selelct,最后才执行order by按照sal进行排序输出

(3)按照多个字段排序,如:首先按照job排序,再按照sal排序;多个字段排序只有前面个字段相等时才会按照后面一个字段进行排序。

select * from emp order by job,sal;-- 先按照job字段排序,当job相等才会按照sal排序

2. 手动指定排序顺序

(1)手动指定按照薪水由小到大排序:asc;默认也是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; --下标从1开始

5. 使用别名进行排序 

例:先获取年薪,然后起别名进行排序

 select empno,ename,(sal+ifnull(comm,0))*12 as year_sal from emp order by year_sal;

例:获取年薪大于30000的

select empno,ename,(sal+ifnull(comm,0))*12 as year_sal from emp where year_sal > 30000;

无法查询 

总结:列的别名只能在order by中使用,不能在where中使用!为什么会这样?这与执行顺序有关!首先先执行from根据表名进行查找,然后执行where执行过滤条件,再执行select语句输出要确定的内容,最后才会执行order by进行排序!而重命名是在select中,select是在where之后,order by之前!所以where中不能使用重命名进行操作,order by中可以使用重命名进行操作!

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

select 
        字段                     3
from
        表名                     1
where
        条件                     2
order by
        ....                        4
    
order by是最后执行的!

来源地址:https://blog.csdn.net/m0_61933976/article/details/126259962

您可能感兴趣的文档:

--结束END--

本文标题: MySQL基础篇 | 简单的查询、条件查询、排序查询

本文链接: https://www.lsjlt.com/news/389259.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL基础篇 | 简单的查询、条件查询、排序查询
    ✅作者简介:大家好我是@每天都要敲代码,希望一起努力,一起进步! 📃个人主页:@每天都要敲代码的个人主页 🔥系列专栏:MySQL专栏 目录 一:简单的查询 1. 查询一个字段 2. 查询多个字段  3...
    99+
    2023-09-01
    mysql 数据库 sql
  • MySQL基础篇 | 连接查询、子查询(嵌套)
    ✅作者简介:大家好我是@每天都要敲代码,希望一起努力,一起进步! 📃个人主页:@每天都要敲代码的个人主页 🔥系列专栏:MySQL专栏 目录 一:连接查询 1. 连接查询原理以及笛卡尔积现象 2. 内连接...
    99+
    2023-10-23
    数据库 sql
  • 【MySQL】查询操作(基础篇)
    目录 1、查询操作(Retrieve) 1.1 全列查询 1.2 指定列查询 1.3 查询字段为表达式 1.4 别名 1.5 去重:DISTINCT 1.6 排序:ORDER BY 1.7 条件查询:WHERE  1.8 分页查...
    99+
    2023-09-01
    mysql 数据库
  • mysql 基础篇-数据查询(1)
    一、查询数据的概念:查询数据、筛选数据、确定数据的以什么样的格式输出。二、数据查询的基本语句   1、基本语句格式 :select 字段列表  FROM 表或者视图 ...
    99+
    2022-10-18
  • 零基础学MySQL(四)-- 数据库最常用的操作【查询基础篇 -- 单表查询】
    目录 📔一、最简单的 select 语句1️⃣基本语法2️⃣基本练习3️⃣补充说明(1) 使用表达式对查询的列进行运算(2) 在 select 语句中可使用 as 语句取别名 📕...
    99+
    2023-08-21
    数据库 mysql sql
  • Mysql---子查询的三种查询方式( 表子查询,条件子查询,列中子查询)
    mysql子查询 子查询分为: 列中子查询 单列单行表子查询 必须有别名条件子查询 单行单列 多行单列 下列示例表结构: grade表: result表: student表: subject表:...
    99+
    2023-09-04
    mysql sql 数据库
  • oralce简单条件查询练习
    第1章  简单查询与条件查询 01. 使用 SQL PLUS 工具登陆,用户名用 scott 。 02. 在 emp 表中查询出所...
    99+
    2022-10-18
  • JpaRepository 实现简单条件查询
    目录JpaRepository 简单条件查询创建持久化类定义数据访问层接口定义业务层类定义控制器类测试应用JpaRepository 查询规范1.JpaRepository支持接口规...
    99+
    2022-11-12
  • 详解MongoDB的条件查询和排序
    目录find 方法 条件组合 比较操作符 IN 查询 限制返回结果条数和跳过数据 排序 总结 find 方法 查询的基本格式是db.collection.find({条件}),其中...
    99+
    2022-11-12
  • MybatisPlus中的多表条件排序查询
    目录1.pom文件2.自定义返回对象3.mapper方法4.xml自定义sql5.service方法6.QueryUtil自定义的查询工具7.常量配置8.controller方法9....
    99+
    2022-11-13
  • Mysql数据库入门基础篇--mysql 多表查询
    【Mysql数据库入门基础篇--mysql 多表查询 🔻一、mysql 多表查询1.1 🍃 7种sql joins 的实现1.2 🍃 错误写法-...
    99+
    2023-09-05
    数据库 mysql sql mysql多表查询 select linux 运维
  • ORACLE多条件统计查询的简单方法
    前几天要做一个统计查询的功能,因为涉及多张表,多种条件的统计分析。一开始便想到了UNION和IF语句,然后写了1000多行代码,就为了查30条数据觉得不应该。 然后就开始百度,多种条件下的统计。然...
    99+
    2022-10-18
  • Mysql数据库理论基础之五--SELECT单多表查询、子查询、别名
    一、简介由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点:1、是一种数据库管理系统2、是一种关联数据库管理系统3、是一种开放源码软件,且有大量可用的共享MySQL软件4、MySQ...
    99+
    2022-10-18
  • MySQL 查询的排序、分页相关
    概述 数据库中的数据直接呈现出来一般不是我们想要的,所以我们上两节演示了如何对数据进行过滤的方法。除了对数据进行过滤, 我们可能还需要对数据进行排序,比如想从列表中了解消费最高的项,就可能需要对金额字段做降序排序,想...
    99+
    2022-05-16
    MySQL 查询排序 MySQL 查询分页
  • mysql连接查询的简单操作
    下文主要给大家带来mysql连接查询的简单操作,希望这些内容能够带给大家实际用处,这也是我编辑mysql连接查询的简单操作这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。1.innerjoin(内连...
    99+
    2022-10-18
  • mysql根据拼音字母查询(简单易懂的字段拼音查询)
    目录使用 Collation 实现拼音查询使用拼音索引实现拼音查询总结在开发中,我们经常需要根据字段拼音查询数据库中的数据。例如,我们可能需要根据拼音首字母查询某个人的信息,或者根据拼音排序查询某个表中的数据。在 mys...
    99+
    2023-10-07
    mysql 拼音字母
  • MySQL实现单表查询的简单方法
    本文主要给大家简单讲讲MySQL实现单表查询的简单方法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望MySQL实现单表查询的简单方法这篇文章可以给大家带来一...
    99+
    2022-10-18
  • mysql 带多个条件的查询方式
    mysql 带多个条件的查询 环境:mysql 5.7 当一个where语句中同时出现多个and 或者or时,需要将多个OR用小括号括起来再和AND进行“与”,或者将多个A...
    99+
    2022-11-12
  • mysql子条件查询的案例分析
    这篇文章将为大家详细讲解有关mysql子条件查询的案例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql中,在一个表表达中可以调用另一个表表达式,这个被调用的表...
    99+
    2022-10-18
  • mysql instr条件查询的实现方法
    这篇文章主要介绍“mysql instr条件查询的实现方法”,在日常操作中,相信很多人在mysql instr条件查询的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql instr条件查询的实...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作