mysql基础知识

以下是MySQL数据库的一些基础知识:

数据库基本概念

  • 数据库:是按照一定数据结构组织、存储和管理数据的仓库,可将大量数据有条理地存储,便于查询和管理。

  • 表:数据库中存储数据的基本单元,由行和列组成,类似Excel工作表,每行为一条记录,每列为一个字段。

  • 数据类型:常见有整数类型(如INT、BIGINT)、浮点类型(如FLOAT、DOUBLE)、字符串类型(如CHAR、VARCHAR)、日期时间类型(如DATE、TIME、DATETIME)等,不同数据类型决定了数据的存储格式和取值范围。

数据库操作

  • 创建数据库:使用 CREATE DATABASE 语句,如 CREATE DATABASE mydb; 创建名为mydb的数据库。

  • 创建表:用 CREATE TABLE 语句,例如 CREATE TABLE students (id INT PRIMARY KEY, name VARCHAR(50), age INT); 在当前数据库创建students表。

  • 插入数据:通过 INSERT INTO 语句,如 INSERT INTO students (id, name, age) VALUES (1, ‘John’, 20); 向students表插入一条记录。

  • 查询数据:用 SELECT 语句,如 SELECT * FROM students; 查询students表所有数据,还可通过 WHERE 子句添加条件过滤。

  • 更新数据:使用 UPDATE 语句,如 UPDATE students SET age = 21 WHERE id = 1; 将id为1的学生年龄更新为21。

  • 删除数据:用 DELETE FROM 语句,如 DELETE FROM students WHERE id = 1; 删除id为1的学生记录。

索引

  • 索引作用:提高数据查询效率,类似书籍目录,能让数据库快速定位所需数据,减少数据检索时间。

  • 索引类型:常见有普通索引、唯一索引、主键索引、组合索引等。普通索引加速数据查询;唯一索引保证索引列值唯一;主键索引是特殊唯一索引,不允许为空;组合索引基于多个列创建,可提高多列联合查询效率。

事务

  • 事务定义:是数据库操作的逻辑单元,由一个或多个SQL语句组成,这些语句要么全部执行成功,要么全部回滚,保证数据一致性。

  • 事务特性:即ACID特性,包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

存储引擎

  • 常见存储引擎:如InnoDB和MyISAM。InnoDB支持事务、行级锁,提供更好的并发处理能力和数据完整性,是MySQL默认存储引擎,适用于对事务要求高的场景;MyISAM不支持事务和行级锁,表级锁效率高,空间利用率低,适用于以读操作和插入操作为主、并发相对低的场景。

以下是一些MySQL数据库常见的面试题:

基础概念类

  • 数据库的三大范式:第一范式(1NF)保证字段不可再分,保证原子性。第二范式(2NF)满足1NF前提下,表的每一列都必须和主键有关系,消除部分依赖关系。第三范式(3NF)满足2NF前提下,表的每一列必须和主键有直接关系,不能是间接关系,消除传递依赖。

  • char和varchar的区别:char是固定长度字符串,设置多少长度就是多少长度,空间利用率低但存取速度快,适用于身份证号、手机号等固定长度的字符串。varchar是可变长度字符串,空间利用率高但存取速度相对慢,适用于不固定长度的字符串。

索引类

  • B+树与B树、Hash索引的区别:B+树非叶子节点仅存储键值和指针,叶子节点通过链表连接,支持范围查询和顺序遍历,层数低,减少磁盘IO次数。B树非叶子节点存储数据,导致节点容量小,树高度更高,范围查询效率低。Hash索引仅支持等值查询,无法处理范围查询和排序,哈希冲突会影响性能。

  • 最左前缀原则:对于联合索引,以最左边为起点任何连续的索引都能匹配上,同时遇到范围查询(>、<、between and、like)就会停止匹配。

事务与锁类

  • ACID特性及实现原理:原子性通过Undo Log实现,记录事务前的数据状态,用于回滚。持久性通过Redo Log实现,记录事务提交后的数据状态,用于崩溃恢复。隔离性通过MVCC(多版本并发控制)和锁机制实现。一致性由原子性、持久性和隔离性共同保证。

  • 行锁与表锁的区别:表锁系统开销最小,会锁定整张表,MyISAM使用表锁。行锁最大程度支持并发处理,但也带来了最大的锁开销,InnoDB使用行锁。

查询优化类

  • 如何查看SQL执行计划:使用explain关键字,如 explain select * from 表名 where 条件 。结果中的key表示使用的索引,type字段可以看到索引是全表扫描还是索引扫描等,type字段内容性能从低到高一般为ALL < index < range ~ index_merge < ref < eq_ref < const < system。

  • 慢查询优化方法:开启慢查询,查看慢查询日志定位低效率SQL,使用explain查看SQL的执行计划看索引是否失效或者性能低,还可以进行SQL语句优化、索引优化和数据库结构优化等,如避免使用 SELECT * ,避免在 WHERE 子句中使用函数、 OR 运算符等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/23457.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

『obsidian』obsidian接入DeepSeek模型的完整说明

一、插件概览 &#x1f3c6;Copilot For Obsidian 开发者&#xff1a;loganc yang | 第 5 届 Ob 宝石奖 LLM 类冠军 核心功能&#xff1a;内置多模态大语言模型&#xff0c;支持自定义模型扩展&#xff0c;实现笔记智能交互预置模型&#xff1a;Claude、GPT-4、Gemini 系列特…

基于YOLO11深度学习的苹果叶片病害检测识别系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

基于 DeepSeek LLM 本地知识库搭建开源方案(AnythingLLM、Cherry、Ragflow、Dify)认知

写在前面 博文内容涉及 基于 Deepseek LLM 的本地知识库搭建使用 ollama 部署 Deepseek-R1 LLM知识库能力通过 Ragflow、Dify 、AnythingLLM、Cherry 提供理解不足小伙伴帮忙指正 &#x1f603;,生活加油 我站在人潮中央&#xff0c;思考这日日重复的生活。我突然想&#xff0c…

Redis分布式锁故障处理:当Redis不可用时的应对策略

Redis分布式锁故障处理&#xff1a;当Redis不可用时的应对策略 在分布式系统中&#xff0c;Redis因其高性能和丰富的特性常被用于实现分布式锁。但当加锁过程中Redis服务不可用时&#xff0c;系统将面临严重挑战。本文将深入探讨这一问题&#xff0c;并提供多维度解决方案。 目…

番外·卓伊凡参加 [2025年2月HDD·鸿蒙赋能交流会·成都站] 线下活动的心得体会-优雅草卓伊凡

番外卓伊凡参加 [2025年2月HDD鸿蒙赋能交流会成都站] 线下活动的心得体会-优雅草卓伊凡 背景 2025 年 2 月 22 日&#xff0c;HDD・鸿蒙赋能交流会将在北京、长沙、成都、南京、雄安同步开展。此次交流会由 HDG 组织者牵头&#xff0c;携手 HUAWEI DEVELOPER EXPERTS&#xf…

vue-fastapi-admin 部署心得

vue-fastapi-admin 部署心得 这两天需要搭建一个后台管理系统&#xff0c;找来找去 vue-fastapi-admin 这个开源后台管理框架刚好和我的技术栈所契合。于是就浅浅的研究了一下。 主要是记录如何基于原项目提供的Dockerfile进行调整&#xff0c;那项目文件放在容器外部&#xf…

永洪科技旗下BI产品,成功入选“金融信创优秀解决方案“

3月28日至29日&#xff0c;金融信创生态实验室在京举办金融信创解决方案研讨会&#xff0c;发布第三期金融信创优秀解决方案、实验室推荐解决方案&#xff0c;启动解决方案的分享活动。 永洪科技凭借旗下的敏捷BI数据分析平台&#xff0c;成功入选“金融信创优秀解决方案&…

Android之APP更新(通过接口更新)

文章目录 前言一、效果图二、实现步骤1.AndroidManifest权限申请2.activity实现3.有版本更新弹框UpdateappUtilDialog4.下载弹框DownloadAppUtils5.弹框背景图 总结 前言 对于做Android的朋友来说&#xff0c;APP更新功能再常见不过了&#xff0c;因为平台更新审核时间较长&am…

PHP课程预约小程序源码

&#x1f4f1; 课程预约小程序&#xff1a;为您专属定制的便捷预约新体验 在这个快节奏的时代&#xff0c;我们深知每一位瑜伽爱好者、普拉提追随者以及培训机构管理者对高效、便捷服务的迫切需求。因此&#xff0c;我们匠心独运&#xff0c;推出了一款基于PHPUniApp框架开发的…

WebXR教学 02 配置开发环境

默认操作系统为Windows 1.VS Code VS Code 是一款轻量级、功能强大的代码编辑器&#xff0c;适用于多种编程语言。 下载 步骤 1&#xff1a;访问 VS Code 官方网站 打开浏览器&#xff08;如 Chrome、Edge 等&#xff09;。 在地址栏输入以下网址&#xff1a; https://code.v…

unity学习51:所有UI的父物体:canvas画布

目录 1 下载资源 1.1 在window / Asset store下下载一套免费的UI资源 1.2 下载&#xff0c;导入import 1.3 导入后在 project / Asset下面可以看到 2 画布canvas&#xff0c;UI的父物体 2.1 创建canvas 2.1.1 画布的下面是 event system是UI相关的事件系统 2.2 canvas…

JavaWeb开发入门:从前端到后端的完整流程解析

一、JavaWeb简介 1、C/S 客户端/服务器结构 2、B/S&#xff08;Browser/Server&#xff0c;浏览器/服务器&#xff09;结构 二、开发环境搭建 1. 安装Tomcat--一个小型的web容器。 2. 在eclipse中配置tomcat创建项目 三、JavaWeb开发流程 1. 前端页面设计 2. 后端逻辑…

Linux 常见命令全解析

一、文件操作命令 1. ls ls是列出目录内容的命令。简单输入ls&#xff0c;会展示当前目录下的文件和目录列表。想要获取更详细的信息&#xff0c;比如文件权限、所有者、大小、修改时间等&#xff0c;使用ls -l。若要显示所有文件&#xff0c;包括以点&#xff08;.&#xff…

unordered_set和unordered_map的使用

Hello&#xff0c;今天我来为大家介绍一下前几年才刚刚新出的两个容器——unordered_map和unordered_set&#xff0c;这两个容器属于是map系列和set系列中的一种&#xff0c;和map/set不同的是它们的底层&#xff0c;map/set的底层是红黑树&#xff0c;而unordered_map/unorder…

【每日八股】计算机网络篇(一):概述

OSI 的 7 层网络模型&#xff1f; OSI&#xff08;Open Systems Interconnection&#xff0c;开放互联系统&#xff09;是由国际标准化组织&#xff08;ISO&#xff09;提出的一种网络通信模型。 自上而下&#xff0c;OSI 可以被分为七层&#xff0c;分别是&#xff1a;应用层…

DeepSeek 提示词:高效的提示词设计

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

HarmonyOS简

文章为官方教程以及自己的部分理解&#xff0c;用于上下班的查看学习。官方视频教程地址&#xff1a;HarmonyOS应用开发者基础认证-华为开发者学堂 (huawei.com) 应用发开的机遇、挑战和趋势 带来的问题 问题&#xff1a;万物互联&#xff0c;智能设备从几十亿手机拓展到数百…

conda 基本命令

1、查询当前所有的环境 conda env list 2、创建虚拟环境 conda create -n 环境名 [pythonpython版本号] 其中[pythonpython版本号]可以不写 conda create -n test python3.12 我们输入conda env list看到我们的环境创建成功了&#xff0c;但是发现他是创建在我们默认的C盘的…

PythonWeb开发框架—Django之DRF框架的使用详解

1.安装依赖包 pip install djangorestframework 2.配置应用 在settings.py中的INSTALLED_APPS中添加rest_framework应用 3.创建序列化器 序列化器是用来操作models的 第一步&#xff1a;定义models ##models.pyfrom django.db import models# Create your models here.cl…

硬件加速与技术创新双轮驱动:DeepSeek和ChatGPT性能进阶的未来蓝图

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux网络编程 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 ​ Linux网络编程笔记&#xff1a; https://blog.cs…