当前位置: 首页 > 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…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

stm32wle5 lpuart DMA数据不接收

配置波特率9600时&#xff0c;需要使用外部低速晶振...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...

Matlab实现任意伪彩色图像可视化显示

Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中&#xff0c;如何展示好看的实验结果图像非常重要&#xff01;&#xff01;&#xff01; 1、灰度原始图像 灰度图像每个像素点只有一个数值&#xff0c;代表该点的​​亮度&#xff08;或…...

轻量级Docker管理工具Docker Switchboard

简介 什么是 Docker Switchboard &#xff1f; Docker Switchboard 是一个轻量级的 Web 应用程序&#xff0c;用于管理 Docker 容器。它提供了一个干净、用户友好的界面来启动、停止和监控主机上运行的容器&#xff0c;使其成为本地开发、家庭实验室或小型服务器设置的理想选择…...