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

[Mysql-函数、索引]

目录

函数:

日期函数

 字符串函数

数学函数

聚合函数 

索引: 

索引分类 

慢查询

创建索引


函数:

MySQL函数,是一种控制流程函数,属于数据库用语言。

MySQL常见的函数有:

数学函数 用作常规的数学运算

字符串函数 对于字符串类型的字段处理

聚合函数 常用于GROUP BY从句的 SELECT查询中

日期时间函数 对于日期和时间类型的字段进行 处理

自定义函数 根据实际需求自定义函数

这里主要写一些比较常用的函数的应用:

日期函数

curdate() --返回当前日期
curtimu() --返回当前时间
now() -- 返回当前日期和时间


date_format(date,fmt) --依照指定的fmt格式格式化日期date值


month(date) --返回date的月份值
day(date) --返回date的日
year(date) --返回日期date的年份

select datediff(now(),'2024-6-24') -- 只能算天数差
select timestampdiff(second,'2002-9-25',now()); -- 秒差

-- 时间间隔算时间
select now() + interval 5 year;
select now() - interval 5 year;
select date_add(now(),interval 10 year);                   

 字符串函数

-- 字符串拼接
select concat('hello','world')
select concat_ws('#','hello','world')

数学函数

ceiling(3.5) --向上取整
floor(3.5) --向下取整
round(3.556,2) --返回参数x的四舍五入的有y位小数的值
select truncate(3.555,1) -- 截断 

聚合函数 

-- sum()

-- count()

-- avg()

-- max()

-- min()

以上五个在之前的文章中经常使用,这里就不重复

-- gruop_concat

 gruop_concat
select ssex,group_concat(sname) from student group by ssex;

索引: 

索引是一个比较重要的知识点!

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

优点:高效性:利用索引可以提高数据库的查询效率

           完整性:用户可以加速表和表之间的连接,实现表与表之间的参照完整性

           唯一性:索引可以确保所查的数据的唯一性

           特殊能力:通过使用索引,可以在查询过程中,用优化隐藏器,提高系统性能。

缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、 UPDATE和DELETE。

因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。建立索引会占用磁盘 空间的索引文件。

如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快。

索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立 最优秀的索引,或优化查询语句。

索引分类 

 主键索引 :在数据库关系图中为表定义一个主键将自动 创建主键索引。 
唯一索引 :不允许具有索引值相同的行,从而禁止重复 的索引或键值。 
常规索引 :最基本的索引类型,没有 唯一性之类的限制。 
全文索引 :搜索引擎的关键技术,用于检索文本信息,可以是词语或者段落。

为什么要使用索引呢?

这里先说一个知识点,慢查询。

慢查询

什么是慢查询 ?

MySQL默认10秒内没有响应SQL结果,则为慢查询

 Mysql对慢查询的操作:
extra列返回的描述的意义

-- 显示到mysql数据库的连接数 
show status like 'connections'; 

-- 查看慢查询的状态 
Show variables like '%slow_query%'; 

-- 设置慢查询的到表 
mysql.slow_log set global log_output='TABLE'; 

-- 设置慢查询的时间 
set global long_query_time=3; 

-- 开启慢查询 
set global slow_query_log='ON'; 

-- 慢查询的次数 
show status like 'slow_queries'; 

-- 慢查询记录 
select * From mysql.slow_log ; 

-- 慢查询sql语句 
select convert(sql_text using utf8) sql_text from mysql.slow_log 

-- 关闭慢查询 
set global slow_query_log='OFF'; 

那么当使用索引时就可以提高查询效率。 

创建索引

-- 基本格式

-- 主键索引
CREATE TABLE `表名` (
`字段1` INT(11) AUTO_INCREMENT PRIMARY KEY,
#或 PRIMARY KEY(`字段1`)
)


-- 唯一索引
CREATE TABLE `表名` (
`字段1` INT(11) NOT NULL UNIQUE,
#或 UNIQUE KEY(`字段1`)
)


-- 常规索引
CREATE TABLE `表名` (
`字段1` INT(11) NOT NULL,
INDEX/KEY(`字段1`)
)

-- 全文索引
CREATE TABLE `表名` (
`字段1` VARCHAR(32) NOT NULL,,
fulltext key (字段名,字段名,字段名) with parser ngram
)ENGINE=innodb
-- 用法
SELECT <字段表> FROM <表名> 
WHERE MATCH(字段) 
AGAINST (‘要搜索的关键词’);

-- 应用举例,全文索引
create table wenzhang(
    wid int PRIMARY KEY auto_increment,
    title varchar(20),  
    content text, 
    zuozhe varchar(20), 
    FULLTEXT(title,content,zuozhe) with parser ngram -- 中日韩
);

insert into wenzhang(title,content,zuozhe) 
values
('西安往事','这是一个古老的城市,在这个城市中有很多的人,工厂,建筑物','小杨'),
('山西往事','这是一个古老的城市,这里有很多的人,工厂,建筑','老陶'),
('地球往事','这是一个古老的星球,这里有很多的人','老刘在西安'),
('银河往事','这是一个系,打算在这个系之外造一个西安','小彭');

select * from wenzhang where match(title,content,zuozhe) AGAINST('西安');

select * from wenzhang where match(title,zuozhe) AGAINST('西安');

alter table wenzhang add fulltext(title,zuozhe)with parser ngram;

附一些索引常见面试题:

索引按照物理实现⽅式,索引可以分为 2 种:聚簇(聚集)和⾮聚簇(⾮聚集)索引。我们也把⾮聚集 索引称为⼆级索引或者辅助索引。

        聚簇索引:

                特点: 1. 使⽤记录主键值的⼤⼩进⾏记录和⻚的排序,这包括三个⽅⾯的含义: ⻚内 的记录是按照主键的⼤⼩顺序排成⼀个 单向链表 。 各个存放⽤户记录的⻚也是根据⻚中⽤户记录的主键⼤⼩顺序排成⼀个双向链表 。 存放⽬录项记录的⻚分为不同的层次,在同⼀层次中的⻚也是根据⻚中⽬录项记录的主键⼤⼩顺序排成⼀个双向链表 。

                             2. B+树的 叶⼦节点 存储的是完整的⽤户记录。 所谓完整的⽤户记录,就是指这个记录中存储了所有列的值(包括隐藏列)。

                优点: 数据访问更快 ,因为聚簇索引将索引和数据保存在同⼀个B+树中,因此从聚簇索引中获取数据⽐ ⾮ 聚簇索引更快 聚簇索引对于主键的 排序查找 和 范围查找 速度⾮常快 按照聚簇索引排列顺序,查询显示⼀定范围数据的时候,由于数据都是紧密相连,数据库不⽤从多 个数据块中提取数据,所以 节省了⼤量的io操作 。

                缺点: 插⼊速度严重依赖于插⼊顺序 ,按照主键的顺序插⼊是最快的⽅式,否则将会出现⻚分裂,严重 影 响性能。因此,对于InnoDB表,我们⼀般都会定义⼀个⾃增的ID列为主键 更新主键的代价很⾼ ,因为将会导致被更新的⾏移动。因此,对于InnoDB表,我们⼀般定义主键 为 不可更新。

        ⼆级索引(辅助索引、⾮聚簇索引) : 概念:回表 以某列⼤⼩排序的B+树只能确定我们要查找记录的主键值,所以如果我们想根 某列的值查 找到完整的⽤户记录的话,仍然需要到 聚簇索引 中再查⼀遍,这个过程称为 回表 。也就是根据某列的值查询⼀条完整的⽤户记录需要使⽤到 2 棵B+树!  ⼆级索引访问需要两次索引查找 ,第⼀次找到主键值,第⼆次根据主键值找到⾏数据

B-Tree和B+Tree:

B-Tree结构的数据可以让系统⾼效的找到数据所在的磁盘块。

        为了描述B-Tree,⾸先定义⼀条记录为⼀ 个⼆元组(key,data],key为记录的键值,对应表中的主键值,data为⼀⾏记录中除主键外的教据。对于 不同的记录,key值互不相同。 

B+Tree 所有的叶⼦结点中包含了全部关键字的信息,⾮叶⼦节点只存储键值信息,及指向含有这些关键字 记录的指针,且叶⼦结点本身依关键字的⼤⼩⾃⼩⽽⼤的顺序链接,所有的⾮终端结点可以看成是 索引部分,结点中仅含有其⼦树根结点中最⼤(或最⼩)关键字。(⽽B树的⾮终节点也包含需要查找的 有效信息)

        所有叶⼦节点之间都有⼀个链指针。

        数据记录都存放在叶⼦节点中。

相关文章:

[Mysql-函数、索引]

目录 函数&#xff1a; 日期函数 字符串函数 数学函数 聚合函数 索引&#xff1a; 索引分类 慢查询 创建索引 函数&#xff1a; MySQL函数&#xff0c;是一种控制流程函数&#xff0c;属于数据库用语言。 MySQL常见的函数有&#xff1a; 数学函数 用作常规的数学运…...

org.eclipse.jgit 简单总结

org.eclipse.jgit 是一个用于处理 Git 版本控制系统的纯 Java 库。它允许你读取和写入 Git 仓库&#xff0c;执行如克隆、拉取、推送、提交等操作。下面我将通过几个例子来展示如何使用 org.eclipse.jgit 进行一些常见的 Git 操作。 1. 克隆仓库 克隆一个远程 Git 仓库到本地目…...

Fork软件笔记:一键拉取仓库所有模块

Fork是一个好用的git工具&#xff0c;只是没有中文而已&#xff08;不过不用翻译也能看使用&#xff09;。 工具下载地址&#xff1a;https://fork.dev/ 界面展示&#xff1a; 当项目中仓库模块比较多时&#xff0c;可以看到每个模块都是一个分页&#xff0c;每一个都要手动切换…...

常见的锂电保护芯片 单节锂电保护/双节锂电保护芯片

目前外出贸易的要求不断增多&#xff0c;出口的产品基本上都需要带上锂电保护芯片 以下是常见的单节锂电保护芯片的选型 包括了市面上大部分的可用型号。 锂电保护芯片的脚位上面基本都是通用&#xff0c;可以直接替代 双节的锂电保护使用情况较少&#xff0c;需要外置MOS管调节…...

初识Java(六)

一、String类 1、类中有操作字符串的方法 查找&#xff1a;找到某个字符是字符串内的第几个&#xff1a;charAt&#xff1b;找到某个字符在字符串内第一次出现的下标&#xff1a;index 替换&#xff1a;替换所有&#xff1a;replaceAll&#xff1b;替换首个&#xff1a;repla…...

Spring-原理篇-DispatcherServlet 初始化 怎么和IOC进行了打通?

委托模式的体现&#xff0c;在初始化醒目的时候Spring MVC为我们提供了一个DispatcherServlet&#xff0c;映射了所有的路径&#xff0c;所有的请求都会先到达这里然后被转发到具体的Controller 进行处理&#xff0c;此文来探索一下&#xff0c;DispatcherServlet 初始化的时候…...

关于swift- OC混编使用Pod遇到的2个错误

错误1 Cannot find interface declaration for UITableViewCell, superclass of "DEFUITalbleViewCell" Cannot find interface declaration for UIView, superclass of "DefUIView" Cannot find interface declaration for 系统类, superclass of "自…...

Golang | Leetcode Golang题解之第290题单词规律

题目&#xff1a; 题解&#xff1a; func wordPattern(pattern string, s string) bool {word2ch : map[string]byte{}ch2word : map[byte]string{}words : strings.Split(s, " ")if len(pattern) ! len(words) {return false}for i, word : range words {ch : patt…...

【Django5】模型定义与使用

系列文章目录 第一章 Django使用的基础知识 第二章 setting.py文件的配置 第三章 路由的定义与使用 第四章 视图的定义与使用 第五章 二进制文件下载响应 第六章 Http请求&HttpRequest请求类 第七章 会话管理&#xff08;Cookies&Session&#xff09; 第八章 文件上传…...

HTML--JavaScript操作DOM对象

目录 本章目标 一.DOM对象概念 ​编辑 二.节点访问方法 常用方法&#xff1a; 层次关系访问节点 三.节点信息 四.节点的操作方法 操作节点的属性 创建节点 删除替换节点 五.节点操作样式 style属性 class-name属性 六.获取元素位置 总结 本章目标 了解DOM的分类和节…...

Redis 缓存

安装 安装 Redis 下载&#xff1a; Releases tporadowski/redis (github.com) winr ----services.msc-----将redis 设置为手动(只是学习&#xff0c;如果经常用可以设置为自动) 安装 redis-py 库 pip install redis-py Redis 和 StrictRedis redis-py 提供 Redis 和 Str…...

Prozyme糖样本检测平台--GlykoPrep® Rapid N-Glycan Preparation with APTS

单克隆抗体已成为生物制药行业具有潜力的新兴蛋白候选药物。其药物研发流程包括一系列精细的控制和评估步骤&#xff0c;需要仔细、严格地监测目标化合物的治疗稳定性及有效性。因此&#xff0c;在商业化前的每个阶段对单克隆抗体进行全面表征是极其有益的。在大量研究成熟的蛋…...

力扣面试题(一)

1、给你两个字符串 word1 和 word2 。请你从 word1 开始&#xff0c;通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长&#xff0c;就将多出来的字母追加到合并后字符串的末尾。 char * mergeAlternately(char * word1, char * word2){int len1 strlen(word1);i…...

Python 输入输出

重点内容&#xff1a; 1、梳理掌握输入和输出函数的应用。 2、熟练使用int() float() str()等函数进行数据转换 3、常用转义字符在数据输入、输出中的应用 4、熟练使用ljust()、center()、rjust()等方法对字符位置进行控制。 5、灵活应用ASCII码、字母、数字及特殊字符解决…...

国服最强文字转音频?Fish Speech

官网文档与示例 Fish Speech V1.2 是一款领先的文本到语音 (TTS) 模型&#xff0c;使用 30 万小时的英语、中文和日语音频数据进行训练。我尝试用1066运行&#xff0c;但是质量不尽如人意&#xff0c;建议使用RTX系列的显卡进行推理。 使用结果展示 text """20…...

数据结构(6):图

1 图的基本概念 1.1 基本概念 1.1.1 定义【多对多的关系】 一个图不可能是空图&#xff01;&#xff01;&#xff01;一个图的顶点集一定是非空集&#xff0c;但是边集可以为空集&#xff01; 1.1.2 应用 1.2 无向图和有向图 弧头是有箭头的那一边&#xff0c;弧尾是没有箭头…...

kaggle使用api下载数据集

背景 kaggle通过api并配置代理下载数据集datasets 步骤 获取api key 登录kaggle&#xff0c;点个人资料&#xff0c;获取到自己的api key 创建好的key会自动下载 将key放至家目录下的kaggle.json文件中 我这里是windows的administrator用户。 装包 我用了虚拟环境 pip …...

前缀表达式(波兰式)和后缀表达式(逆波兰式)的计算方式

缀是指操作符。 1. 前缀表达式&#xff08;波兰式&#xff09; &#xff08;1&#xff09;不需用括号&#xff1b; &#xff08;2&#xff09;不用考虑运算符的优先级&#xff1b; &#xff08;3&#xff09;操作符置于操作数的前面。&#xff08;如 3 2 &#xff09; 1.1 中…...

智能井盖管理系统:城市窨井的井下“保镖”

随着城市化进程的加速&#xff0c;城市的生命线基础设施面临着越来越多的挑战。其中&#xff0c;旭华智能智能井盖传感器技术的发展为提升城市基础设施的安全性和管理效率提供了新的解决方案。它专门用于监控市政窨井、燃气井、供水井内的积水状况以及井盖状态&#xff0c;以增…...

vue3-环境变量-JavaScript-axio-基础使用-lzstring-字符串压缩-python

文章目录 1.Vue3环境变量1.1.简介1.2.全局变量的引用1.3.package.json文件 2.axio2.1.promise2.2.安装2.3.配置2.3.1.全局 axios 默认值2.3.2.响应信息格式 2.4.Axios的拦截器2.4.1.请求拦截器2.4.2.响应拦截器2.4.3.移除拦截器2.4.4.自定义实例添加拦截器 3.lz-string3.1.java…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

Python爬虫(四):PyQuery 框架

PyQuery 框架详解与对比 BeautifulSoup 第一部分&#xff1a;PyQuery 框架介绍 1. PyQuery 是什么&#xff1f; PyQuery 是一个 Python 的 HTML/XML 解析库&#xff0c;它采用了 jQuery 的语法风格&#xff0c;让开发者能够用类似前端 jQuery 的方式处理文档解析。它的核心特…...