本文涵盖 MySQL 数据库基础入门至核心实战。首先解析文件存储痛点与数据库必要性,对比主流数据库特性明确 MySQL 定位。接着详述多平台安装、连接指令解析及服务管理,重点演示数据库与表的 CRUD 操作,包括建库建表、增删改查及删除保护。随后深入剖析 MySQL 四层架构设计,解释客户端、服务层、存储引擎及文件系统的作用。最后系统分类 SQL 语句(DDL/DML/DQL/DCL)并提供典型示例,对比 InnoDB 与 MyISAM 等主流存储引擎特性,帮助读者构建完整的 MySQL 知识体系。
指针猎手31 浏览
MySQL 数据库基础:从安装到核心 CRUD 操作实战
前言
掌握 MySQL 是后端与数据开发人员的必备技能。日常开发中,文件存储存在安全性低、查询困难、海量数据处理乏力等问题,而 MySQL 凭借出色的并发性、轻量性和易用性,成为电商、SNS、论坛等场景的首选数据库。本文将从数据库基础认知出发,讲解 MySQL 的主流应用、安装连接、核心操作、架构设计、SQL 分类和存储引擎。
一、为什么需要数据库?文件存储的痛点全解析
在接触 MySQL 之前,很多初学者会有一个疑问:用 TXT、Excel 这类文件保存数据就够了,为什么还要专门用数据库? 其实在小体量数据、单人开发的场景下,文件存储看似便捷,但在实际的项目开发中,会暴露诸多致命缺点:
掌握 MySQL 的基础操作是入门的关键,本节将讲解 MySQL 的安装方式、服务器连接、服务管理,以及最核心的数据库、表、数据的 CRUD 操作,所有操作均提供可直接运行的代码和指令。
3.1 MySQL 的多平台安装方式
MySQL 支持多种操作系统,不同系统的安装方式略有差异,本文整理了企业开发中最常用的几种安装方案,覆盖 Linux(CentOS)和 Windows 平台:
CentOS 6.5:采用编译安装方式,适合需要自定义安装路径、配置的场景,安装版本为 MySQL 5.6.14;
CentOS 7:通过yum 包管理器安装 MariaDB(MySQL 的分支,完全兼容 MySQL 语法,是 CentOS 7 的默认数据库),安装步骤简单,适合快速部署;
Windows:直接安装 MySQL 安装包,主流版本为 MySQL 5.7,图形化安装界面,新手也能轻松操作。
安装完成后,需要通过终端 / 命令行连接 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 endwith ; or \g. Your MySQL connection id is2 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'for help. Type '\c'to clear the current input statement. mysql>
在 Windows 平台下,MySQL 以服务的形式运行,可通过图形化界面进行启动、停止、重启等管理操作,步骤如下:
按下Win+R组合键,打开'运行'窗口;输入services.msc,点击回车,打开 Windows服务管理器;在服务列表中找到 MySQL 相关服务(如 MySQL57,名称与安装版本一致);右键点击服务,可选择启动、停止、暂停、重新启动,也可设置启动类型(自动/手动/禁用)。
Linux 平台下可通过s**ystemctl start mysqld****、systemctl stop mysqld****、systemctl restart mysqld**指令管理 MySQL 服务,后续会单独讲解 Linux 下的数据库运维技巧。
3.4 服务器、数据库、表的层级关系
很多新手会混淆服务器、数据库、表的概念,这里用一句话讲清核心关系:安装 MySQL 服务器,本质是在机器上安装了一个数据库管理系统程序,该程序可以管理多个数据库;为了存储应用中不同实体的数据,每个数据库中又可以创建多个表。
简单来说,层级关系为:MySQL 服务器 > 数据库(DB) > 表(Table)。
**一个服务器对应多个数据库:**比如一个 MySQL 服务器中,可创建电商项目的数据库ecommerce、博客项目的数据库blog;
**一个数据库对应多个表:**比如ecommerce数据库中,可创建用户表user、商品表goods、订单表order;
**表是存储数据的基本单位:**表由行(记录)和列(字段)组成,每一行代表一条数据,每一列代表数据的一个属性。
3.5 MySQL 核心 CRUD 操作,SQL 语句直接运行
掌握了连接和管理后,接下来就是 MySQL 的核心操作:对数据库、表、数据进行创建、查询、修改、删除,以下所有 SQL 语句均可在 MySQL 交互命令行中直接运行,我们以创建helloworld数据库和student表为例,手把手教学。
-- 创建数据库(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;
5.2 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;
-- 回滚事务:撤销事务中的所有操作,恢复到事务开始前的状态
六、MySQL 存储引擎,核心特性与查看方式
存储引擎是 MySQL 的核心特性,插件式的设计让 MySQL 能适应不同的业务场景,本节讲解存储引擎的基础概念、查看方式,以及主流存储引擎的核心对比。
6.1 存储引擎的核心概念
存储引擎是 MySQL 中特有的概念,不同的存储引擎对应不同的数据存储机制,简单来说,存储引擎决定了表的存储方式、索引方式、事务支持、锁机制等。对于 MySQL 来说,不同的表可以使用不同的存储引擎,这意味着我们可以为一张高频查询的表选择适合查询的存储引擎,为一张需要保证数据一致性的表选择支持事务的存储引擎,灵活性拉满。
6.2 查看 MySQL 支持的存储引擎
通过简单的 SQL 语句,即可查看当前 MySQL 服务器支持的所有存储引擎,以及默认存储引擎:
-- 查看所有存储引擎show engines;
执行该语句后,会显示存储引擎的名称、是否支持事务、是否支持索引、是否支持行级锁等核心特性,其中Support列的值为DEFAULT的即为当前 MySQL 的默认存储引擎。
6.3 主流存储引擎核心对比
MySQL 支持的存储引擎众多,其中InnoDB和MyISAM是最常用的两个,也是面试中的高频考点,这里对两者的核心特性做详细对比,同时补充其他常用存储引擎的适用场景: