网站公司可以做英文网吗,网站漏洞扫描服务,四川省建设厅注册中心网站,网站月流量一、引言
MySQL 作为一款广泛使用的开源关系型数据库管理系统#xff0c;在软件开发领域占据着重要地位。无论是小型项目还是大型企业级应用#xff0c;都能看到 MySQL 的身影。今天就来和大家分享 MySQL 的相关知识#xff0c;帮助大家更好地应对日常开发和面试。
二、My…一、引言
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中的索引》
翻过这座山他们就会听到你的故事