Java面试第六山!《MySQL基础知识点》

news/2025/2/22 18:32:23

一、引言

MySQL 作为一款广泛使用的开源关系型数据库管理系统,在软件开发领域占据着重要地位。无论是小型项目还是大型企业级应用,都能看到 MySQL 的身影。今天就来和大家分享 MySQL 的相关知识,帮助大家更好地应对日常开发和面试

二、MySQL 基础概念

(一)数据库与表

  • 数据库:数据库就像是一个大仓库,用于存储和管理数据。可以在一个 MySQL 服务器上创建多个数据库,每个数据库相互独立。例如,一个电商项目可能有一个专门存储商品信息的数据库。
  • :表是数据库中实际存储数据的结构,由行和列组成,类似于 Excel 表格。每一行代表一条记录,每一列代表一个字段。比如商品表中,每一行记录一个商品的信息,列可能包括商品 ID、商品名称、价格等。

(二)数据类型

MySQL 支持多种数据类型,常见的有:

  • 数值类型:如INT(整数)、DOUBLE(双精度浮点数),用于存储数字。例如,商品价格可以用DOUBLE类型存储。
  • 字符串类型:VARCHAR(可变长度字符串)、CHAR(固定长度字符串)。商品名称可以用VARCHAR类型存储,因为不同商品名称长度不同。
  • 日期和时间类型:DATE(日期)、DATETIME(日期和时间)。记录商品上架时间可以用DATETIME类型。

三、常用 SQL 操作

(一)数据定义语言(DDL)

  • 创建数据库
CREATE DATABASE mydatabase;
  • 创建表
CREATE TABLE products (

product_id INT PRIMARY KEY AUTO_INCREMENT,

product_name VARCHAR(255),

price DOUBLE,

create_time DATETIME

);
  • 修改表结构:添加字段
ALTER TABLE products ADD COLUMN description VARCHAR(500);
  • 删除表
DROP TABLE products;

(二)数据操作语言(DML)

  • 插入数据
INSERT INTO products (product_name, price, create_time) VALUES ('iPhone 15', 7999.0, NOW());
  • 更新数据
UPDATE products SET price = 8499.0 WHERE product_id = 1;
  • 删除数据
DELETE FROM products WHERE product_id = 1;

(三)数据查询语言(DQL)

  • 简单查询
SELECT * FROM products;
  • 条件查询:查询价格大于 8000 的商品
SELECT * FROM products WHERE price > 8000;
  • 排序查询:按价格升序排序
SELECT * FROM products ORDER BY price ASC;
  • 聚合查询:统计商品数量
SELECT COUNT(*) FROM products;

四、索引

(一)索引的作用

索引就像一本书的目录,能加快数据的查询速度。在数据库中,当执行查询语句时,如果没有索引,数据库需要全表扫描来查找数据;有了索引,数据库可以快速定位到符合条件的数据行。

(二)索引类型

  • 主键索引:每个表只能有一个主键索引,用于唯一标识表中的每一行记录,如product_id。
  • 唯一索引:保证索引列的值唯一,但可以为 NULL,例如商品的唯一编号。
  • 普通索引:最基本的索引类型,没有唯一性限制,用于提高查询速度。

(三)创建索引

-- 创建普通索引

CREATE INDEX idx_product_name ON products (product_name);

-- 创建唯一索引

CREATE UNIQUE INDEX idx_unique_product_code ON products (product_code);

五、存储引擎

MySQL 支持多种存储引擎,常见的有:

  • InnoDB:支持事务、行级锁、外键约束,是 MySQL 5.5 之后的默认存储引擎,适合处理大量并发事务的场景,如电商订单系统。
  • MyISAM:不支持事务和行级锁,适合读多写少的场景,如数据仓库。

六、MySQL事务四大特性ACID

  • 原子性:原子性意味着一个事务中的所有操作要么全部成功,要么全部失败。
  • 一致性:一致性确保数据库在事务执行前后保持一致状态。
  • 隔离性:隔离性保证并发执行的事务不会互相干扰。
  • 持久性:持久性确保一旦事务被提交,其修改就会被永久保存。就像你在白纸上写字,只要不擦掉,字迹就会一直在那里。

七、四种事务隔离级别

  • 读未提交:是最低的级别,只允许读取未提交的数据,可能导致脏读、幻读或不可重复读。
  • 读已提交:较低级别,只允许读取已提交的数据,可以避免脏读,但仍可能出现幻读或不可重复读
  • 可重复读:较高级别,确保在一个事务内多次读取同一数据时结果一致,避免了不可重复读,但仍可能出现幻读。
  • 串行化:最高级别,完全避免脏读、不可重复读和幻读,但执行效率最低。

八、MySQL中的锁

  • 表级锁(Table-level lock):锁定整个表,防止其他事务对表进行写操作。
  • 行级锁(Record Locks):只锁定需要操作的行,允许其他事务访问未被锁定的行。 锁的是完整的数据 是索引树 
  • 页级锁:锁定数据页,介于表级锁和行级锁之间。
  • 乐观锁(Optimistic Lock):假设冲突不会发生,只在提交时检查是否有冲突。
  • 悲观锁(Pessimistic Lock):假设冲突总会发生,因此在操作开始时就上锁。

结语:以上都是我在面试过程中被问到过的内容,后续还会继续补充,

下期预告《MySQL中的索引》

翻过这座山,他们就会听到你的故事!


http://www.niftyadmin.cn/n/5862625.html

相关文章

【详细讲解在STM32的UART通信中使用DMA机制】

详细讲解在STM32的UART通信中使用DMA机制 目录 详细讲解在STM32的UART通信中使用DMA机制一、DMA机制概述二、DMA在UART中的作用三、DMA的配置步骤四、UART初始化与DMA结合五、DMA传输的中断处理六、DMA与中断的结合使用七、注意事项与常见问题八、代码示例九、总结 一、DMA机制…

NetLogon 权限提升漏洞

参考文章:CVE-2020-1472NetLogon权限提升漏洞_cve-2020-1472复现 谢公子-CSDN博客 域控机器账户:WIN-0V0GAORDC17 域控 ip:192.168.72.163 域内攻击者机器 ip:192.168.72.158,host:WIN10-01 攻击者 kali…

Javascript网页设计案例:通过PDFLib实现一款PDF分割工具,分割方式自定义-完整源代码,开箱即用

功能预览 一、工具简介 PDF 分割工具支持以下核心功能: 拖放或上传 PDF 文件:用户可以通过拖放或点击上传 PDF 文件。两种分割模式: 指定范围:用户可以指定起始页和结束页,提取特定范围的内容。固定间距:用户可以设置间隔页数(例如每 5 页分割一次),工具会自动完成分…

Rust编程语言入门教程(八)所有权 Stack vs Heap

Rust 系列 🎀Rust编程语言入门教程(一)安装Rust🚪 🎀Rust编程语言入门教程(二)hello_world🚪 🎀Rust编程语言入门教程(三) Hello Cargo&#x1f…

智能硬件解决方案

概述 陆盛科技主要面向三大方向提供智能硬件服务,智能硬件主要为了赋能陆盛科技提供的软件提供更好的硬件软件的整体服务场景,做到软件行业应用最专业、硬件行业软件最专业: 射频采集设备:包括手持 PDA、RFID、条码标签、打印机、赋码设备等…

MQTT实现智能家居------1、网络基础知识

1、为什么引入服务器? 局域网:手机App与WiFi模块短距离通信。 互联网:如果手机出门去了,想在任何地方控制,则需要一个服务器。 2、网络基础知识 1)怎么表示自己、对方? 自己(IP,…

ChatGPT超级AI对话模型 黑客十问十答

完了完了,ChatGPT超级AI对话模型回答有关黑客的经典问题,简直行云流水,对答如流,并且逻辑十分清晰,看了一遍答案,已经忘记了这些是AI给出的回答,有了AI加持,黑客百问百答&#xff0c…

Graspness Discovery in Clutters for Fast and Accurate Grasp Detection 解读

研究背景 研究问题 :这篇文章要解决的问题是如何在杂乱的环境中快速且准确地检测抓取姿态。传统的 6自由度抓取方法将场景中的所有点视为平等,并采用均匀采样来选择抓取候选点,但忽略了抓取位置的重要性,这极大地影响了抓取姿态检…