Java面试第六山!《MySQL基础知识点》
- 开源代码
- 2025-08-24 15:00:01

一、引言
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中的索引》 翻过这座山,他们就会听到你的故事!Java面试第六山!《MySQL基础知识点》由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Java面试第六山!《MySQL基础知识点》”
上一篇
详解TCP协议多种机制