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

MySql 知识大汇总

数据库索引

数据库索引是一种数据结构,用于提高数据库查询的速度和效率。索引可以看作是表中一列或多列的值的快速查找方式,类似于书籍的目录。通过创建索引,可以减少数据库的扫描量,加快数据的检索速度。

常见的索引类型

常见的索引类型包括:

  1. B-Tree索引:B-Tree(平衡树)是一种常见的索引结构,适用于范围查询和精确查找。它能够快速定位到满足条件的数据块,然后在块内进行查找。B-Tree索引适用于大部分查询场景,是最常用的索引类型。

  2. 哈希索引:哈希索引使用哈希函数将索引值映射到一个哈希表中的槽位,然后在槽位中查找数据。哈希索引适用于等值查询,但不适用于范围查询和排序操作。

  3. 全文索引:全文索引用于在文本数据中进行全文搜索。它可以快速定位到包含指定关键词的文档或记录。

  4. 空间索引:空间索引用于存储和查询空间数据,如地理位置信息。它可以支持空间关系查询,如距离查询、相交查询等。

创建索引时,需要选择合适的列作为索引列,并根据实际情况选择合适的索引类型。一般来说,主键列和经常用于查询的列是常见的索引列选择。但是,过多或不合理的索引可能会导致性能下降,因此需要根据实际情况进行性能测试和调优。

在使用索引时,可以在查询语句中使用关键字来优化查询性能,如WHERE子句中使用等值条件、前缀匹配条件,ORDER BY子句中使用索引列等。

需要注意的是,索引并非万能的,对于小型表或者频繁更新的表,索引的维护成本可能大于查询的性能提升。因此,在创建索引时需要谨慎选择索引列,并根据实际情况进行性能测试和调优。

索引的分类

  1. 唯一索引(UNIQUE INDEX):索引列的值必须唯一,用于加速对唯一值的查询。可以用于主键和唯一约束。
CREATE UNIQUE INDEX index_name ON table_name (column_name);
  1. 主键索引(PRIMARY KEY):主键是一种特殊的唯一索引,用于唯一标识表中的每一行。一个表只能有一个主键。
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
  1. 外键索引(FOREIGN KEY):外键是关联两个表的字段,可以用于加速关联查询。
ALTER TABLE table_name ADD FOREIGN KEY (column_name) REFERENCES other_table (other_column);
  1. 聚簇索引(CLUSTERED INDEX):聚簇索引按照索引列的顺序对表中的数据进行物理排序。一个表只能有一个聚簇索引。
CREATE CLUSTERED INDEX index_name ON table_name (column_name);
  1. 非聚簇索引(NONCLUSTERED INDEX):非聚簇索引在索引列上创建一个独立的数据结构,用于加速对索引列的查询。
CREATE NONCLUSTERED INDEX index_name ON table_name (column_name);
  1. 全文索引(FULLTEXT INDEX):全文索引用于在文本数据中进行全文搜索。
CREATE FULLTEXT INDEX index_name ON table_name (column_name);
  1. 空间索引(SPATIAL INDEX):空间索引用于存储和查询空间数据,如地理位置信息。
CREATE SPATIAL INDEX index_name ON table_name (column_name);

需要根据实际需求选择合适的索引类型,并根据查询场景进行性能测试和调优。请注意,在创建索引时,需要考虑索引的维护成本和对写操作的影响。

mysql 常用的一些函数

以下是一些常用的MySQL函数及其对应的SQL语句示例:

  1. 字符串函数:
  • CONCAT():将多个字符串连接在一起。
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;
  • SUBSTRING():截取字符串的一部分。
SELECT SUBSTRING(description, 1, 10) AS short_desc FROM products;
  • LENGTH():返回字符串的长度。
SELECT LENGTH(email) AS email_length FROM customers;
  • UPPER():将字符串转换为大写。
SELECT UPPER(last_name) AS last_name_upper FROM employees;
  • LOWER():将字符串转换为小写。
SELECT LOWER(first_name) AS first_name_lower FROM employees;
  • REPLACE():替换字符串中的某个子串。
SELECT REPLACE(description, 'old_value', 'new_value') AS new_description FROM products;
  1. 数值函数:
  • ROUND():对数值进行四舍五入。
SELECT ROUND(price, 2) AS rounded_price FROM products;
  • CEIL():向上取整。
SELECT CEIL(quantity) AS rounded_quantity FROM inventory;
  • FLOOR():向下取整。
SELECT FLOOR(total_amount) AS rounded_amount FROM orders;
  • ABS():返回数值的绝对值。
SELECT ABS(balance) AS absolute_balance FROM accounts;
  • MOD():返回两个数值相除的余数。
SELECT MOD(quantity, 2) AS remainder FROM inventory;
  1. 日期和时间函数:
  • NOW():返回当前日期和时间。
SELECT NOW() AS current_datetime;
  • CURDATE():返回当前日期。
SELECT CURDATE() AS current_date;
  • CURTIME():返回当前时间。
SELECT CURTIME() AS current_time;
  • DATE_FORMAT():将日期格式化为指定的格式。
SELECT DATE_FORMAT(order_date, '%Y-%m-%d') AS formatted_date FROM orders;
  • DATE_ADD():在日期上添加指定的时间间隔。
SELECT DATE_ADD(order_date, INTERVAL 7 DAY) AS new_date FROM orders;
  1. 聚合函数:
  • COUNT():计算行数。
SELECT COUNT(*) AS total_rows FROM customers;
  • SUM():计算总和。
SELECT SUM(quantity) AS total_quantity FROM orders;
  • AVG():计算平均值。
SELECT AVG(price) AS average_price FROM products;
  • MAX():找出最大值。
SELECT MAX(salary) AS max_salary FROM employees;
  • MIN():找出最小值。
SELECT MIN(age) AS min_age FROM employees;
  1. 条件函数:
  • IF():根据条件返回不同的值。
SELECT IF(quantity > 0, 'In Stock', 'Out of Stock') AS stock_status FROM products;
  • CASE WHEN…THEN…ELSE…END:多条件判断。
SELECTCASEWHEN grade >= 90 THEN 'A'WHEN grade >= 80 THEN 'B'WHEN grade >= 70 THEN 'C'ELSE 'F'END AS letter_grade
FROM students;

这些示例SQL语句演示了如何使用常用的MySQL函数来处理和操作数据。您可以根据自己的需求进行调整和扩展。

相关文章:

MySql 知识大汇总

数据库索引 数据库索引是一种数据结构,用于提高数据库查询的速度和效率。索引可以看作是表中一列或多列的值的快速查找方式,类似于书籍的目录。通过创建索引,可以减少数据库的扫描量,加快数据的检索速度。 常见的索引类型 常见…...

深入浅出Pytorch函数——torch.sum

分类目录:《深入浅出Pytorch函数》总目录 相关文章: 深入浅出Pytorch函数——torch.Tensor 函数torch.sum有两种形式: torch.sum(input, *, dtypeNone):返回输入张量input所有元素的和。torch.sum(input, dim, keepdimFalse, *,…...

Git克隆文件不显示绿色勾、红色感叹号等图标

1、问题 Git和TorToiseGit安装后,Git克隆的文件不会显示绿色勾、红色感叹号等图标。 2、检查注册表 2.1、打开注册表 (1)WinR打开运行窗口,输入regedit,点击确定,打开注册表编辑器。 2.2、找如下路径 (1)找到路径 计算机\HKEY_…...

SOC FPGA之HPS模型设计(一)

目录 一、建立HPS硬件系统模型 1.1 GHRD 1.2 从0开始搭建HPS 1.2.1 FPGA Interfaces 1.2.1.1 General 1.2.1.2 AXI Bridge 1.2.1.3 FPGA-to-HPS SDRAM Interface 1.2.1.4 DMA Peripheral Request 1.2.1.5 Interrupts 1.2.1.6 EMAC ptp interface 1.2.2 Peripheral P…...

解决openstack重启swift服务后报错

swift重启报错 问题描述解决办法 问题描述 swift服务正常状态如下 [rootcontroller ~]# swift statAccount: AUTH_8bde12ff804e42498661b7454994c446Containers: 0Objects: 0Bytes: 0X-Put-Timestamp: 1690507907.67931X-Timestamp: 1690507907.67931X-Trans-Id: tx56d22fa13…...

[Linux]进程控制详解!!(创建、终止、等待、替换)

hello,大家好,这里是bang___bang_,在上两篇中我们讲解了进程的概念、状态和进程地址空间,本篇讲解进程的控制!!包含内容有进程创建、进程等待、进程替换、进程终止!! 附上前2篇文章…...

全面适配 | 走近openGauss数据库+鲲鹏欧拉操作系统

引入 全面适配 | openEuler操作系统 openGauss数据库 开篇 1、openEuler欧拉操作系统 百度百科:openEuler是覆盖全场景的创新平台,在引领内核创新,夯实云化基座的基础上,面向计算架构互联总线、存储介质发展新趋势,…...

2023Robocom CAIP省赛 第四题 相对论大师

原题链接: PTA | 程序设计类实验辅助教学平台 题面: 在某个直播间里,观众常常会发送类似这样的弹幕: 鱼越大,鱼刺越大;鱼刺越大,肉越少;肉越少,鱼越小;所以鱼…...

【TypeScript】TS入门级基础学习(一)

【TypeScript】TS入门级基础学习(一) 一、前言 TypeScript 是一种用于应用程序规模的 JavaScript 语言。 TypeScript 向 JavaScript 添加了可选类型,支持用于任何浏览器、任何主机、任何操作系统的大规模 JavaScript 应用程序的工具。 Type…...

jenkins执行jmeter时,报Begin size 1 is not equal to fixed size 5

jenkins执行jmeter脚本的时候一直提示如下错误: Tidying up ... Fri Jul 28 17:03:53 CST 2023 (1690535033178) Error generating the report: org.apache.jmeter.report.dashboard.GenerationException: Error while processing samples: Consumer failed wi…...

在 “小小容器” WasmEdge 里运行小小羊驼 llama 2

昨天,特斯拉前 AI 总监、OpenAI 联合创始人 Andrej Karpathy 开源了 llama2.c 。 只用 500 行纯 C 语言就能训练和推理 llama 2 模型的框架,没有任何繁杂的 python 依赖。这个项目一推出就受到大家的追捧,24 小时内 GitHub 收获 4000 颗星&am…...

【C#】async和await 续

前言 在文章《async和await》中,我们观察到了一下客观的规律,但是没有讲到本质,而且还遗留了一个问题: 这篇文章中,我们继续看看这个问题如何解决! 我们再看看之前写的代码: static public void TestWait2() {var t…...

【Matlab】基于粒子群优化算法优化BP神经网络的数据回归预测(Excel可直接替换数据)

【Matlab】基于粒子群优化算法优化 BP 神经网络的数据回归预测(Excel可直接替换数据) 1.模型原理2.数学公式3.文件结构4.Excel数据5.分块代码5.1 fun.m5.2 main.m6.完整代码6.1 fun.m6.2 main.m7.运行结果1.模型原理 基于粒子群优化算法(Particle Swarm Optimization, PSO)…...

QPainter绘制雷达界面

文章目录 功能实现定义的结构体定义的函数效果图gitee源码链接 功能实现 相较于上一版,这一版添加的功能有: 1、自适应窗口 2、扫描方式(圆周扫描、扇形扫描(指定起始角度和结束角度)) 3、扫描方向&#x…...

flutter:BottomNavigationBar和TabBar

区别 BottomNavigationBarr和TabBar都是用于创建导航栏的组件,但它们有一些区别。 位置不同:BottomNavigationBar通常位于屏幕底部,用于主要导航;而TabBar通常位于屏幕顶部或底部,用于切换不同的视图或页面。 样式不…...

【图论】Prim算法

一.介绍 Prim算法是一种用于解决最小生成树问题的贪心算法。最小生成树问题是指在一个连通无向图中找到一个生成树,使得树中所有边的权重之和最小。 Prim算法的基本思想是从一个起始顶点开始,逐步扩展生成树,直到覆盖所有顶点。具体步骤如下…...

第九十二回 在Flutter中解析JSON数据

文章目录 概念介绍解析方法convert库插件工具 示例代码经验总结 我们在上一章回中介绍了"对dio库进行封装"相关的内容,本章回中将介绍 如何在Flutter中解析JSON数据.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在前面章回中介绍了通…...

银河麒麟安装mysql数据库(mariadb)-银河麒麟安装JDK-银河麒麟安装nginx(附安装包)

银河麒麟离线全套安装教程(手把手教程) 1.银河麒麟服务器系统安装mysql数据库(mariadb) 2.银河麒麟桌面系统安装mysql数据库(mariadb) 3.银河麒麟服务器系统安装JDK 4.银河麒麟桌面系统安装JDK 5.银河麒麟…...

文件上传

js绕过 打开网页尝试上传一句话木马,发现只能上传图片文件 审计源代码,发现使用一个checkfile函数js对文件类型进行了屏蔽 于是我们修改网页代码,去除返回值的检查函数 checkFile() 上传成功,使用蚁剑连接 连接成功 .htaccess绕…...

tinkerCAD案例:22. Backpack Zipper Pull 背包拉链头

tinkerCAD案例:21. Custom Stamp 定制印章 原文 tinkerCAD案例:22. Backpack Zipper Pull 背包拉链头 Lesson Overview: 课程概述: Now we’re going to make a zipper pull! 现在我们要做一个拉链头! Your backpack, howev…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

C++ 基础特性深度解析

目录 引言 一、命名空间(namespace) C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用(reference)​ C 中的引用​ 与 C 语言的对比​ 四、inline(内联函数…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析,分为​​已启动​​和​​未启动​​两种场景: 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​:当其他组件(如Activity、Service)通过ContentR…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

leetcode_69.x的平方根

题目如下 &#xff1a; 看到题 &#xff0c;我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历&#xff0c;我们是整数的平方根&#xff0c;所以我们分两…...