MySQL 必知必会---数据检索

第10章 Linux通配符与特殊符号知识应用实践 第10章 Linux通配符与特殊符号知识应用实践 10.1 Linux通配符与特殊符号简介 Linux系统的功能非常强大且丰富,几乎键盘上的每个符号在Linux里都有很重要的作用和意义,今天笔者就和大家一起来梳理Linux学习里常见的通配符和特殊字符知识。 10.2 Linux通配符知识与实践 通配符简单地说就是,键盘上的一些特殊字符,可以实现某些特殊的功能,例如,用来模糊搜索系统中的文件。当查找文件时,可以使用通配符中的“*”或“?”字符来代替一个或多个真正的字符,从而更快地找到所需的文件。利用通配 阅读详情

目录

1. 查询结果去重 distinct

2. 限定数据的数量   limit

3. 对数据进行排序   order by 子句

4. 数据过滤    where 子句


主要记录基本sql语法

1. 查询结果去重 distinct

select distinct name,age from user;

distinct必须放在所有的被选中字段的前面

distinct 作用于所有被选字段(例子中指name和age字段),保证返回的数据没有重复的(所有选中的字段为一个整体,进行比对)

 

2. 限定数据的数量   limit

select * from user limit 5;

select * from user limit 5 offset 1;

select * from user limit 0,5;

将limit至于语句的最后,后面跟要返回的数据的最大数量(可能返回的数量小于设定值)。

也可以使用offset设定从第几行开始返回,需要注意的是offset是0的时候,从第一行开始返回。

也可以使用简化语法 limit  offset, count

limit不是子句

 

3. 对数据进行排序   order by 子句

select name,age,sex from people order by name;

select name,age from people order by sex;

select name,age,sex from people order by sex limit 3

order by必须是最后一个子句,第三个例子中的limit不是子句

排序的字段,不一定非得是要显示的字段,例如第二个例子

 

select name,age,sex from people order by name, age;

可以按照多列进行排序,但是要注意,以上面的例子为例,只有当name值相同时,才会使用age进行排序。

 

还有一种简化方法,select name,age,sex from people order by 1, 2;   它的效果与上例相同, 1就是代表name,2代表age。这种方式写法简单,但是依赖字段清单的顺序,容易在更新脚本时出问题。

 

order by子句排序默认是升序排列,1--100, a----z。 

我们可以指定是升序还是降序, 升序使用关键字 ASC  降序使用 DESC,因为升序是默认值,所以ASC我们很少用。

select name,age,sex from people order by name desc, age desc;

select name,age,sex from people order by name desc, age;

需要注意的是desc仅对它前面的一个字段起作用,其他未用desc的字段依然使用升序

 

4. 数据过滤    where 子句

where子句位于from子句之后,用来过滤出符合条件的数据集

where子句又叫做条件子句,所以肯定需要一些比较操作符来测试数据是否符合要求:

操作符含义
=等于
>大于
>=大于等于
<小于
<=小于等于
<> 或 !=不等于
<=>mysql特有的等于操作符:当两个值相等或者当两者都等于空值时返回true,否则返回false
between...and...在一个取值范围之内
in(set)匹配值列表中的任意一个值
like匹配一个字符串
is null测试值是否为空值
regexp测试值是否满足正则表达式

这些操作符的含义和我们平常在各种编程语言中见到的大部分是相同的,我们只对特殊的地方进行说明:

#假如我们有一个people表,如下
+----------+-----+------+----+
| name     | age | sex  | id |
+----------+-----+------+----+
| zhangsan |  10 | NULL |  1 |
| zhangsan |  10 |    0 |  2 |
| zhangsan |   8 |    1 |  3 |
| wang1    |   1 |    1 |  4 |
| wang2    |   2 |    1 |  5 |
| wang3    |   3 |    2 |  6 |
+----------+-----+------+----+


# 当与字符串进行相等比较时,需要使用单引号,而与数值比较时不需要
select * from people where name='zhangsan';
select * from people where age=10;

# 与空值比较必须使用is null, 而不能使用=, 或者可以使用<=>
select * from people where sex is null;   -- 可以返回正确的结果集
select * from people where sex<=>null;    -- 可以返回正确的结果集
select * from people where sex=null;      -- 返回的结果集为空


#between N and M
select * from people where age between 1 and 3;   -- age>=1 并且 age<=3
select * from people where age between 3 and 1;   -- 返回空数据集


#当被过滤列包含值为NULL的时候, NULL代表未知,不管是匹配过滤还是不匹配过滤,都不会返回包含NULL的行
select * from people where sex!=2;


#进行列值的成对比较 要慎用
select * from people where (age,sex)=(8,1);    -- 相对于 age=8 and sex=1
#要注意使用不同操作符进行成对比较时,转换成标量表达式的方式是不同的
select * from people where (age,sex)>(8,1);    -- 相当于 age > 8 or (age=8 and sex>1)


#验证列的值是否在给定的列表内,列表内可以是字面量,列,标量子查询
select * from people where age in (8,1);  -- age是8或者1的行
select * from people where 1 in (age,sex);  -- age或sex为1的行
select * from people where (age,sex) in ((8,1),(10,0));  -- (age=8 and sex=1) or (age=10 and sex=0)
select * from people where age not in (1,8);  -- age!=1 and age!=8
#在mysql中,in 被转换为or, not in被转换为and


#使用like进行字符串模糊匹配
#有2个通配符可以使用: %表示0或任意多个字符   _表示一个任意字符
select * from people where name like 'z%';     -- 以z开头
select * from people where name like '%3';     -- 以3结尾
select * from people where name like '_a%';    -- 以任意字符开头,第二个字符为a
select * from people where name like 'wang_';  -- 以wang开头,之后是任意一个字符

当使用like时,我们可以使用通配符,但是当字符串中包含统配符以及\时,我们要进行特殊的处理

+-----------+-----+------+----+
| name      | age | sex  | id |
+-----------+-----+------+----+
| zhang%san |  10 | NULL |  1 |
| zhang_san |  10 |    0 |  2 |
| zhang\san |   8 |    1 |  3 |
+-----------+-----+------+----+

select * from people where name like "zhang\%%";
select * from people where name like "zhang\_%";
select * from people where name like "zhang\\\%";   -- 此处需要3个哦

#对于字符串中% _ \, 当我要匹配他们时,需要进行转义,转义使用\

 

还剩一个操作符没有说到,那就是无比强大的 ---- 正则

正则模式描述
^匹配输入字符串的开始位置
$匹配输入字符串的结束位置
.匹配除\n之外的任何单个字符。如果连\n也要匹配,请用[.\n]
[...]字符集合。匹配所包含的任意一个字符
[^...]字符集合。匹配所不包含的任意一个字符
p1|p2|p3匹配p1或p2或p3
*匹配前面的子表达式零次或多次
+匹配前面的子表达式1次或多次
{n}n是个非负数,匹配前面子表达式n次
{n,m}n和m都是非负数,n<=m, 最少匹配n次,最多匹配m次
#正则太灵活了,此处随便举几个例子
+-----------+-----+------+----+
| name      | age | sex  | id |
+-----------+-----+------+----+
| zhang%san |  10 | NULL |  1 |
| zhang_san |  10 |    0 |  2 |
| zhang\san |   8 |    1 |  3 |
| wang1     |   1 |    1 |  4 |
| wang2     |   2 |    1 |  5 |
| wang3     |   3 |    2 |  6 |
+-----------+-----+------+----+

select * from people where name regexp '.*n$'; -- 以n结尾
select * from people where name regexp 'wang[123]'; -- 匹配包含 wang1 或 wang2 或 wang3

 

注意:虽然正则和like很强大,但是他们都无法匹配到值为NULL的情况

select * from people where name like '%';

select * from people where name regexp '.*';

他们都无法匹配到值为空的name

 

 

上面我们介绍的都是单个条件过滤数据,如果有多个条件呢,那就得用逻辑运算符进行连接了。

and逻辑与
or逻辑或
not逻辑非
xor逻辑异或,左右都为true或false时,结果为false

and优先级高于or,可以用小括号改变运算顺序

select * from people where name like 'zhang%' or name regexp 'wang[123]';

 

 

 

 

 

order by排序的用法 一、order by 1 其实1表示第一个栏位,2表示第二栏位; 依此类推,当表中只有2个栏位时,oder by 3就会出错,这个跟order by 列名没有什么区别,不过在特殊情况下还是很有用的. select owner,table_name,tablespace_name,blocks,last_analyzed from all_tables order by ... 阅读详情

相关推荐

手把手教你用GEM-2多频电磁仪找地下管道(附真实数据图)

本文详细解析了使用GEM-2多频电磁仪精准定位地下管线的全流程,包括设备调试、频率选择、现场扫描技巧及数据解读。通过真实案例展示了如何应对复杂干扰环境,提升管线检测效率与准确性,特别适合市政工程和地下管线普查。

weixin_42565652的博客 396

group by和order by的用法和区别

一、order by的用法 使用order by,一般是用来,依照查询结果的某一列(或多列)属性,进行排序(升序:ASC;降序:DESC;默认为升序)。 当排序列含空值时: ASC:排序列为空值的元组最后显示。 DESC:排序列为空值的元组最先显示。 为了好记忆,我的理解是,可以把null值看做无穷大,因为不知道具体为多少。然后去考虑排序,asc升序null肯定在最后,而desc降序,n...

留下你的观点 6万+

自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO

下面是一个关于自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO)的博客,希望可以帮助您。提示:以下是本篇文章正文内容,下面案例可供参考在上面的代码中,表示粒子的数量,表示解空间的维度,表示迭代次数,表示优化的目标函数。在__init__方法中,我们初始化了粒子群的位置和速度,并将每个粒子的位置作为其最优解,将其适应度值初始化为正无穷。我们还初始化了学习因子和惯性权重的参数。在run方法中,我们迭代了次,计算每个粒子的适应度值和最优解。

weixin_52026057的博客 9914

order by 排序原则

order by 排序原则 order by 默认不是根据拼音排序的 ,是根据ascii码排序的 如果按照拼音排序的话这边“大”应该是num=4中最大的,由此可以看到order by 是靠ascii码排序的。 所以一般是数字-&gt;字母-&gt;中文 按拼音排序 ORDER BY nlssort(name,'NLSSORT=SCHINESE_PINYIN_M') 但是当u...

zhoumimi_comeon123的博客 6301

Springboot + vue 实现导出word

Springboot + vue 实现导出word 后端代码 使用word先创建好已知的模板 使用word工具另存为.xml格式的文件 使用freemarker ftl模板 将修改后的xml文件复制到开发工具中,将文件后缀修改为ftl文件,并且将里面的动态值使用${}包裹例如:${zyjn} word工具类 /*** * * Project Name:maventest * <p>生成word工具类<br> * * @ClassName: WordUtil *

qq_45542373的博客 2895

LaTeX伪代码字体大小调整全攻略:从algorithm到algorithm2e的实战技巧

本文详细介绍了在LaTeX中调整伪代码字体大小的全面技巧,涵盖algorithm、algorithmicx和algorithm2e等主流算法包的使用方法。从基础命令到高级配置,帮助用户解决学术论文和技术文档中的伪代码排版问题,提升算法展示的专业性和可读性。特别针对不同期刊格式要求,提供了实用的字体调整方案。

weixin_29297127的博客 436

SQL order by的用法

首先,order by是用来写在where之后,给多个字段来排序的一个DQL查询语句。 其次,order by写法: 1. select 字段列表/* from 表名 where 条件 order by 字段名1 asc/desc, 字段名2 asc/desc,....... 2. select 字段列表/* from 表名 where 条件 order ...

weixin_30394633的博客 2739

Uncertainty-Aware Mean Teacher(UA-MT)

本文提出了一种新的基于不确定性的半监督学习框架(UA-MT),通过额外利用未标记的数据从3D MR图像中分割左心房。具体地说,本文建立了一个教师模型和一个学生模型,学生模型通过最小化标注数据上的分割监督损失和所有输入数据上的与教师模型预测输出的一致性损失进行优化。如果没有未标记输入中的注释,教师模型的预测目标可能不可靠且有噪声。:在估计不确定性 U 的指导下,我们过滤掉相对不可靠**(高不确定性),整个体积** U 的不确定性**是 {u} ∈ RH×W ×D。过滤掉高不确定性的,也就是熵大于某个值的。

Alexa_的博客 1869

MySQL必知必会(3)数据检索

使用SELECT语句进行检索 SQL SELECT: 输入:SELECT prod_name FROM products 利用SELECT语句从products表中检索一个名为prod_name的列 输出列的信息 未排序数据: 在自己做上述语句的时候可能顺序不同 如果没有明确排序查询结果,那查询后的顺序没有任何意义 对上面的操作会返回列中的所有行,没有过滤和排序操作 结束SQL语句:要求以分号结束,DBMS中部分允许不加分号,但特定的情况下需要,所以加个分号几乎总是好的,尤

qq_45772415的博客 927

KiCad自动布线实战:FreeRouting插件安装与使用指南

在PCB设计流程中,布线环节往往占据大量重复性工作,尤其对于中小型双面板,成百上千条飞线的手动连接既繁琐又易出错。自动布线技术通过算法在给定设计规则和元件布局的基础上自动规划走线路径,能显著提升布线效率。FreeRouting作为一款开源自动布线器,与KiCad通过DSN/SES标准中间格式无缝配合,让工程师将精力集中于关键信号和布局优化,而将常规网络交给工具处理。本文从自动布线的原理与边界出发,讲解了FreeRouting的安装、DSN导出、参数设置、自动布线及结果回传的完整流程,并结合实际案例展示了在S

weixin_32025789的博客 277

彻底讲透 SAP 中的 client-safe:从 CDS、AMDP 到 ABAP Cloud 的客户端隔离设计

SAP系统中的client-safe概念定义了技术边界:访问client-dependent数据的对象必须确保只看到单个client数据,而访问client-independent数据的对象则天然满足条件。这一原则直接影响CDS视图、AMDP等核心组件,并与ABAP Cloud开发模型紧密集成。在业务系统中,client isolation要求用户只能看到当前登录client的数据。SAP通过语言版本、对象规则和静态检查强制执行这一约束,特别是在ABAP Cloud开发中,AMDP方法和发布的API必须满足

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3261

mysql必知必会_雍正荐书第六期 | MySQL 必知必会

关于【雍正荐书】奉天承运,雍正诏曰:每个月5号(遇到周末或节假日延期),爱可生开源社区都将以抽奖或者。其他活动方式送出精心挑选的图书,好机会不容错过。关于图灵公司介绍本月的好书之前,再三感谢图灵公司友情图书赞助!图灵公司成立于2005年6月,由人民邮电出版社投资控股,以策划出版高质量的科技书籍为核心业务,主要出版领域包括计算机、电子电气、数学统计、科普等,通过引进国际高水平的教材...

weixin_39787089的博客 220

基于灰度区域生长算法的红外目标检测算法matlab仿真

基于灰度区域生长算法的红外目标检测算法是一种常用的红外目标检测技术。它通过对红外图像进行灰度区域生长,找到具有相似灰度值的像素区域来检测目标。在本文中,我们将详细介绍基于灰度区域生长算法的红外目标检测算法的原理、步骤和应用。一、原理灰度区域生长算法是一种基于像素相似性的区域分割算法。它通过对图像中具有相似灰度值的像素进行聚类,将它们组合成更大的区域。灰度区域生长算法通常包括以下步骤:1.初始化:选择一个种子点作为起始点,将其作为第一个区域的中心点。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 251

MySQL必知必会 -- 数据检索

SELECT语句 MariaDB [test]> select * from linux; /检索所有列 +-------+--------+------+ | user | passwd | sex | +-------+--------+------+ | user1 | 111 | boy | | user2 | 222 | girl | +-------+--------+------+ 2 rows in set (0.00 sec) MariaDB [test]&

thermal_life的博客 247

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

《MySQL必知必会》笔记一 数据库入门及数据检索

数据库是保存表和其他SQL结构的容器 客户机--服务器软件,服务器部分负责所有的数据访问和处理,运行在数据库服务器上;关于数据的增删、更新等的请求都由服务器软件完成,这些请求来自运行客户机的计算机;客户机是与用户打交道的软件; 表由行和列组成,行包含了某个对象的所有信息,列是某个分类的所有信息,也就是所有对象在这个分类的所有信息;

iOS_Manguoge的博客 548

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

《MySQL必知必会》学习笔记(1)—数据检索

检索数据 SELECT语句 简单查询 --检索多列 SELECT id,name,price FROM product; --检索所有列 SELECT * FROM product; 注意:多条SQL语句必须以分号(;)分隔;SQL语句不区分大小写,因此 SELECT与select是相同的。但为了使代码更易于阅读和调试,习惯将所有SQL关键字使用大写,而对所有列和表名使用小写。 ...

Nibaby 1810

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

mysql数据检索和输出_MySql必知必会实战练习(二)数据检索

在上篇博客1. Select子句使用顺序select--->DISTINCT--->from--->where--->GROUP BY--->HAVING--->ORDER BY--->LIMIT(1)DISTINCTselect verd_id from products;使用DISTINCT检索出不同值的列表select DISTINCT verd_i...

weixin_29923451的博客 292

mysql select drop_MySQL必知必会(2):数据检索(SELECT)

本文介绍Mysql开发中使用最频繁的功能,SELECT数据检索简介检索数据是从数据库中使用特定语句获取页面需要的数据。每天你上网浏览的网页,绝大部分数据都是从数据库中检索出来,所以它也是mysql最常用的功能之一。从Mysql检索数据至少需要提供两个信息:你需要查找什么你需要从哪个表中查询检索数据单列检索我们有了上面两个两个信息,我们就可以组合成为一个最基本的查询语句:SELECT name FR...

weixin_33983809的博客 472

MySql必知必会实战练习(二)数据检索

  在上篇博客MySql必知必会实战练习(一)表创建和数据添加中完成了各表的创建和数据添加,下面进行数据检索和过滤操作。 1. Select子句使用顺序   select--->DISTINCT--->from--->where--->GROUP BY--->HAVING--->ORDER BY--->LIMIT (1)DISTINCT ...

weixin_30662539的博客 250

mysql 数据检索_MySQL必知必会---检索数据

select 语句检索单个列检索多个列检索所有列检索不同的行限制结果使用完全限定的表名1.select语句使用select检索表数据,必须至少给出两条信息-----想选择什么以及从什么地方选择。2.检索单个列MariaDB [test]> select age from user;+------+| age |+------+| 22 || 25 || 56 || 14 |...

weixin_35554771的博客 202

MySQL必知必会pdf网盘下载+每章总结

目录MySQL必知必会第二章 连接mysql第三章 连接数据库第四章 检索数据SELECT,DISTINCT,LIMIT语句第五章 排序数据ORDER BY语句第六章 过滤数据WHERE语句第七章 数据过滤AND, OR, IN, NOT操作符第八章 用通配符进行过滤LIKE 操作符第九章 用正则表达式进行搜索REGEXP MySQL必知必会 第二章 连接mysql 在terminal中连接mys...

EPFL_Panda的博客 5万+

MySQL必知必会(2):数据检索(SELECT)

本文介绍Mysql开发中使用最频繁的功能,SELECT数据检索 简介 检索数据是从数据库中使用特定语句获取页面需要的数据。每天你上网浏览的网页,绝大部分数据都是从数据库中检索出来,所以它也是mysql最常用的功能之一。 从Mysql检索数据至少需要提供两个信息: 你需要查找什么 你需要从哪个表中查询 检索数据 单列检索 我们有了上面两...

weixin_33982670的博客 793

MySql必知必会笔记

《MySQL必知必会》的学习笔记

weixin_44542899的博客 3486

mysql列出前25 的记录_MySQL必知必会(2):数据检索(SELECT)

本文介绍Mysql开发中使用最频繁的功能,SELECT数据检索简介检索数据是从数据库中使用特定语句获取页面需要的数据。每天你上网浏览的网页,绝大部分数据都是从数据库中检索出来,所以它也是mysql最常用的功能之一。从Mysql检索数据至少需要提供两个信息:你需要查找什么你需要从哪个表中查询检索数据单列检索我们有了上面两个两个信息,我们就可以组合成为一个最基本的查询语句:SELECT name FR...

weixin_36082987的博客 688

《MySQL必知必会》代码总结

本文主要总结了Ben Forta著的《MySQL必知必会》的代码,可以用作初学者快速查找代码。 检索列中数据的种类数 # 假设products表中列vend_id存在很多重复的数据 select vend_id from products; /*输出 * vend_id * 1001 * 1001 * 1001 * 1002 * 1002 * 1003 * 1003 * 1004 * 1004 */ # 使用DISTINCT关键字,返回该列数据的集合 select distinct vend_id f

造出高达般的人工智能机器人 598

快速入门 MySQL

这篇MySQL学习笔记是我浓缩了我这几天学到的MySQL知识写出来的

m0_66472815的博客 1402
上一篇: MySQL 必知必会--基础概念
下一篇: python中的map和reduce
guothree2003
博客等级 码龄19年 29粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值