本文详细介绍了 MySQL 数据库的基础知识,涵盖为何需要数据库、主流数据库对比、安装连接、CRUD 操作、架构设计、SQL 分类及存储引擎特性。内容从文件存储痛点出发,解析 MySQL 核心优势,提供多平台安装指南及连接指令,深入讲解数据库、表、数据的创建与管理。同时剖析 MySQL 四层架构,区分 DDL、DML、DQL、DCL 四种 SQL 语言,对比 InnoDB 与 MyISAM 等存储引擎特性,帮助读者构建完整的 MySQL 知识体系,适用于零基础入门及进阶学习。
RustyLab0 浏览
MySQL 数据库基础
作为后端开发、数据开发的必备技能,掌握 MySQL 数据库直接决定了程序员的开发效率和项目稳定性。日常开发中用文件存储数据会遇到安全性低、查询困难、海量数据处理乏力等诸多问题,而 MySQL 凭借出色的并发性、轻量性和易用性,成为电商、SNS、论坛等场景的首选数据库。
为什么需要数据库?
在接触 MySQL 之前,很多初学者会有一个疑问:用 TXT、Excel 这类文件保存数据就够了,为什么还要专门用数据库? 其实在小体量数据、单人开发的场景下,文件存储看似便捷,但在实际的项目开发中,会暴露诸多致命缺点:
安装完成后,需要通过终端 / 命令行连接 MySQL 服务器,核心 bash 指令如下,这是操作 MySQL 的第一步,必须牢记:
mysql -h 127.0.0.1 -P 3306 -u root -p
指令参数详解
-h:指定要连接的 MySQL 服务器 IP 地址,127.0.0.1表示本地服务器;
-P:指定 MySQL 服务器的端口号,MySQL 默认端口为 3306(注意 P 是大写);
-u:指定连接使用的数据库用户名,root是 MySQL 的超级管理员账户,拥有最高权限;
-p:表示需要输入密码,输入指令后按回车,会提示 Enter password:,此时输入数据库密码即可(密码输入时无明文显示,属于正常现象)。
简化连接方式
如果是连接本地的 MySQL 服务器,且使用默认的 3306 端口,可省略 -h 和 -P 参数,简化为:
mysql -u root -p
连接成功的反馈
输入正确密码后,会出现如下提示,代表连接成功,进入 MySQL 的交互命令行(以 MySQL 5.7 为例):
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection idis2 Server version: 5.7.21-log MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Type'help;'or'\h'forhelp. Type'\c' to clear the current input statement.
mysql>
-- 创建数据库(DDL)create database helloworld;
-- 创建表(DDL)create table student(id int, name varchar(32));
-- 修改表:为 student 表添加 age 字段(整型)(DDL)alter table student addcolumn age int;
-- 删除表(DDL)droptable student;
DML:数据操纵语言(Data Manipulation Language)
核心作用:对表中的数据进行增、删、改操作,是实际开发中使用频率最高的 SQL 类型之一。
代表指令:insert(插入)、delete(删除)、update(修改)
常用场景:用户注册时插入用户数据、用户修改信息时更新数据、删除无用的业务数据。
示例语句:
-- 插入数据(DML)insert into student (id, name) values (1, '张三');
-- 修改数据:将 id=1 的学生姓名改为'张三丰'(DML)update student set name ='张三丰'where id =1;
-- 删除数据:删除 id=1 的学生数据(DML)deletefrom student where id =1;
重要提示:使用 update 和 delete 时,务必添加 where 条件,否则会修改/删除表中的所有数据,造成不可逆的损失!
-- 授予权限:给用户 test 分配 helloworld 数据库的所有表的查询、插入权限,允许从本地访问grantselect, inserton helloworld.*to'test'@'localhost' identified by'123456';
-- 回收权限:回收 test 用户的插入权限revokeinserton helloworld.*from'test'@'localhost';
-- 提交事务:确认事务中的所有操作commit;
-- 回滚事务:撤销事务中的所有操作,恢复到事务开始前的状态rollback;
MySQL 存储引擎,核心特性与查看方式
存储引擎是 MySQL 的核心特性,插件式的设计让 MySQL 能适应不同的业务场景,本节讲解存储引擎的基础概念、查看方式,以及主流存储引擎的核心对比。
存储引擎的核心概念
存储引擎是 MySQL 中特有的概念,不同的存储引擎对应不同的数据存储机制,简单来说,存储引擎决定了表的存储方式、索引方式、事务支持、锁机制等。对于 MySQL 来说,不同的表可以使用不同的存储引擎,这意味着我们可以为一张高频查询的表选择适合查询的存储引擎,为一张需要保证数据一致性的表选择支持事务的存储引擎,灵活性拉满。
查看 MySQL 支持的存储引擎
通过简单的 SQL 语句,即可查看当前 MySQL 服务器支持的所有存储引擎,以及默认存储引擎:
-- 查看所有存储引擎show engines;
执行该语句后,会显示存储引擎的名称、是否支持事务、是否支持索引、是否支持行级锁等核心特性,其中 Support 列的值为 DEFAULT 的即为当前 MySQL 的默认存储引擎。
主流存储引擎核心对比
MySQL 支持的存储引擎众多,其中 InnoDB 和 MyISAM 是最常用的两个,也是面试中的高频考点,这里对两者的核心特性做详细对比,同时补充其他常用存储引擎的适用场景: