马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一、弁言
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);
复制代码
(二)数据利用语言(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 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中的索引》
翻过这座山,他们就会听到你的故事!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |