当前位置: 首页 > news >正文

【MySQL】必知必会知识点

文章目录

    • LIMIT含义
    • 排序数据
      • 按多个列排序
      • 降序
    • 通配符
      • 百分号 % 通配符
      • 下划线 _ 通配符
    • 正则表达式
      • OR匹配
      • 查询几个字符之一
      • 匹配范围查询
      • 匹配特殊字符
      • 匹配字符类
      • 匹配多个实例
      • 定位符

LIMIT含义

SELECT category FROM "books" LIMIT 4 ;

上面代码意为:返回不多于4行

SELECT category FROM "books" LIMIT 4 , 3;

或者

SELECT category FROM "books" LIMIT 4 OFFSET 3;

意为从行3开始取4行(数值都是从0开始)

排序数据

按多个列排序

SELECT prod_id, prod_price,prod_name
FROM products
ORDER BY prod_price, prod_name;

首先按价格排序,然后按名字排序,仅在价格相同的情况下,才再按名字排序,如果价格中的值都是唯一的,则不会按名字排序。

降序

SELECT prod_id,prod_price, prod_name
FROM products
ORDER BY prod_price DESC, prod_name ;

DESC关键字只应用到直接位于其前面的列名。
上面代码只对 prod_price 降序排列,prod_name仍按升序排列。

通配符

百分号 % 通配符

  1. % 可在搜索模式中任意位置使用,可以使用多个通配符
  2. 可以放在开头、结尾、开头和结尾、中间。
  3. % 代表搜索模式中给定位置的0个、 1个或多个字符
  4. 不能匹配用值NULL作为产品名的行

下划线 _ 通配符

  1. 只匹配单个字符而不是多个字符
  2. 总是匹配一个字符,不能多也不能少

正则表达式

OR匹配

| 功能上相当于 OR
查询字段 prod_name 的值中包含 1000或2000:

SELECT * FROM `products` WHERE prod_name REGEXP '1000|2000';

查询几个字符之一

SELECT
	* 
FROM
	`products` 
WHERE
	prod_name REGEXP '[124]000';

这里使用了 [124]000 相当于上面的 1000|2000|4000

匹配范围查询

SELECT
	* 
FROM
	`products` 
WHERE
	prod_name REGEXP '[1-4]000';

[1-4]000 意为 1000|2000|3000|4000
注意:此外,范围不一定只是数值的, 也可以[a-z]匹配任意字母字符

匹配特殊字符

特殊字符比如:. [] | 和 - 等。
查询的时候需要加上转义 \ 作为前导

SELECT
	* 
FROM
	`products` 
WHERE
	prod_name REGEXP '\\.';

匹配字符类

查询数字、所有字母字符或所有数字字母字符等的匹配,如下表:

说 明
[:alnum:]任意字母和数字(同[a-zA-Z0-9])
[:alpha:]任意字符(同[a-zA-Z])
[:blank:]空格和制表(同[\t])
[:cntrl:]ASCII控制字符( ASCII 0到31和127)
[:digit:]任意数字(同[0-9])
[:graph:]与[:print:]相同,但不包括空格
[:lower:]任意小写字母(同[a-z])
[:print:]任意可打印字符
[:punct:]既不在[:alnum:]又不在[:cntrl:]中的任意字符
[:space:]包括空格在内的任意空白字符(同[\f\n\r\t\v])
[:upper:]任意大写字母(同[A-Z])
[:xdigit:]任意十六进制数字(同[a-fA-F0-9])

匹配多个实例

重复元字符
元 字 符 说 明
* 0个或多个匹配
+ 1个或多个匹配(等于{1,})
? 0个或1个匹配(等于{0,1})
{n} 指定数目的匹配
{n,} 不少于指定数目的匹配
{n,m} 匹配数目的范围( m不超过255)

举例:查找一个单词并且还能够适应一个尾随的s(如果存在),

SELECT
	* 
FROM
	`products` 
WHERE
	prod_name REGEXP '\\([0-9] toms?\\)';

结果:

语句中的 [0-9] 表示范围有数字0-9的,后面的toms?表示匹配和它前面的字符次数为0或1(即s可选可不选)

定位符

定位元字符
元 字 符 说 明
^ 文本的开始
$ 文本的结尾
[[:<:]] 词的开始
[[:>:]] 词的结尾

上面查询的是一个字符串中的任意位置,如果想定位到某个位置,就需要定位符:

SELECT
	* 
FROM
	`products` 
WHERE
	prod_name REGEXP '^\\([0-9] toms?\\)';

相关文章:

  • 复盘模型总结
  • Spring5学习笔记03--Bean的生命周期
  • 在小熊派BearPi-HM_Micro_small开发板上安装HAP
  • 基数排序(学习)
  • hive窗口函数最全总结
  • Vulnhub靶场 ICA: 1
  • Tomcat部署
  • 大数据如何进行测试
  • python基础专栏13-python基础篇-控制结构
  • 3.4 创建共用模块-供其它模块使用
  • 通用Excel表格导出(Map类型数据导出为表格)
  • leetcode刷题 (9.1) 动态规划
  • 【C++】如何理解函数调用中的传值和传址
  • 糖尿病会隐身,这些信号一定要重视
  • 智能驾驶功能软件平台设计规范第五部分:定位功能服务接口
  • angular学习第一篇-----环境搭建
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • egg(89)--egg之redis的发布和订阅
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • PHP 的 SAPI 是个什么东西
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • v-if和v-for连用出现的问题
  • 给初学者:JavaScript 中数组操作注意点
  • 机器学习学习笔记一
  • 简单数学运算程序(不定期更新)
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 在Unity中实现一个简单的消息管理器
  • Java性能优化之JVM GC(垃圾回收机制)
  • postgresql行列转换函数
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (175)FPGA门控时钟技术
  • (3)(3.5) 遥测无线电区域条例
  • (vue)页面文件上传获取:action地址
  • (阿里云万网)-域名注册购买实名流程
  • (定时器/计数器)中断系统(详解与使用)
  • (转) RFS+AutoItLibrary测试web对话框
  • .NET 读取 JSON格式的数据
  • .NET 依赖注入和配置系统
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET处理HTTP请求
  • /var/spool/postfix/maildrop 下有大量文件
  • @Autowired和@Resource的区别
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • @Transactional 竟也能解决分布式事务?
  • [1127]图形打印 sdutOJ
  • [c++] 自写 MyString 类
  • [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大
  • [i.MX]飞思卡尔IMX6处理器的GPIO-IOMUX_PAD说明
  • [iOS]GCD(一)
  • [JavaScript] JavaScript事件注册,事件委托,冒泡,捕获,事件流
  • [uni-app] uni.showToast 一闪而过问题/设定时间无效/1秒即逝
  • [Unity Sentis] Unity Sentis 详细步骤工作流程
  • [VisualStudioCode]_[VSCODE]_[C/C++开发环境配置-问题解决和补充]