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

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 运算符等。

相关文章:

  • MFC学习笔记-1
  • 利用开源小智AI制作桌宠机器狗
  • Word(2010)排版技巧
  • 人工智能之不同数据类型及其特点梳理
  • Kafka面试题----Kafka是如何保证顺序消费的
  • WordPress ABF Freight Edition sql注入漏洞复现(CVE-2024-13485)(附脚本)
  • JMeter 中实现 100 个用户在 3 秒内并发登录
  • vue3学习4-pinia+组件通信
  • elementPlus 中表单验证方法(手机号、正整数、邮箱)
  • 【大模型实战篇】Mac本地部署RAGFlow的踩坑史
  • 开源项目austin学习day01
  • GEE中的JavaScript语法基础
  • Vue.js 学习笔记:TodoList 待办事项小案例
  • 50周学习go语言:第2周 基础语法与温度转换程序
  • Redis速成(1)
  • MySQL的三种并发问题和四种隔离级别
  • 机器学习数学基础:34.二列相关教程
  • 学习笔记--电磁兼容性EMC
  • 用AI玩游戏1——狼人杀六人局
  • 大白话Vue2和Vue3双向数据绑定的原理
  • 商务部:长和集团出售港口交易各方不得规避审查
  • 李强会见巴西总统卢拉
  • “水运江苏”“航运浙江”,江浙两省为何都在发力内河航运?
  • 河南信阳拟发文严控预售许可条件:新出让土地开发的商品房一律现房销售
  • 深圳中院回应“退休夫妻月入1.2万负债1.2亿”:其自述因经营不善负债
  • 中国潜水救捞行业协会发布《呵护潜水员职业健康安全宣言》