【MySQL基础】MySQL核心操作全解析

【MySQL基础】MySQL核心操作全解析

    • 前言
    • 一、数据库操作😶‍🌫️
          • [1.1 查看数据库🔍](#1.1 查看数据库🔍)
          • [1.2 创建数据库➕](#1.2 创建数据库➕)
          • [1.3 选择数据库📌](#1.3 选择数据库📌)
          • [1.4 删除数据库❌](#1.4 删除数据库❌)
    • 二、数据表操作📋
          • [2.1 创建数据表➕](#2.1 创建数据表➕)
          • [2.2 查看数据表🔍](#2.2 查看数据表🔍)
          • [2.3 查看表结构📊](#2.3 查看表结构📊)
          • [2.4 删除数据表❌](#2.4 删除数据表❌)
    • 三、数据操作🔄
          • [3.1 增加数据➕](#3.1 增加数据➕)
          • [3.2 查询数据🔍](#3.2 查询数据🔍)
          • [3.3 修改数据✏️](#3.3 修改数据✏️)
          • [3.4 删除数据❌](#3.4 删除数据❌)
    • 四、实用辅助操作🛠️
          • [4.1 查看MySQL安装目录📍](#4.1 查看MySQL安装目录📍)
          • [4.2 查看数据存储目录📍](#4.2 查看数据存储目录📍)
          • [4.3 查询错误日志目录📍](#4.3 查询错误日志目录📍)
    • 总结

前言

你可能没意识到,平时刷手机时看到的聊天记录、购物订单、游戏角色信息,背后都藏着 "数据库" 在帮忙管理。而 MySQL,就是最常用的数据库工具之一,它像个 "智能文件柜",能把杂乱的数据整理得井井有条,还能快速找到我们需要的信息。​

刚开始接触 MySQL 时,不少人会怕 "操作复杂""看不懂代码"。其实不用慌,这部分内容会避开难懂的专业术语,从最实用的基础操作讲起 ------ 比如怎么把数据存进 MySQL,怎么快速找出想要的信息,每一步都尽量简单明了。哪怕你是第一次碰数据库,跟着步骤慢慢试,也能很快上手,让你感受到 MySQL 管理数据的方便~

‼️没安装MySql请看👇👇👇
从下载到运行:MySQL 详细安装配置完整教程

一、数据库操作😶‍🌫️

我们先输入打开mysql

sql 复制代码
mysql -u root -p
1.1 查看数据库🔍

1)查看MySQL服务器中所有数据库

通过以下SQL语句可列出当前MySQL服务下已存在的所有数据库:

sql 复制代码
SHOW DATABASES;

具体实操效果如下:

其中4个默认系统数据库的作用需重点了解:

  • information_schema:MySQL的数据字典,记录所有数据库、表的结构及字段信息。
  • performance_schema:性能监控库,存储服务器运行时的性能参数与状态。
  • mysql:核心管理库,保存用户权限、系统配置等关键信息(如root用户密码)。
  • sys:辅助管理库,包含预定义的存储过程和函数,简化日常运维操作。

注意:这4个数据库是MySQL安装后自动生成的核心组件,切勿随意删除或修改,否则可能导致服务器无法正常运行。

2)查看指定数据库的创建信息

若需了解某数据库的创建语句(如字符集、校对集),可使用以下命令:

sql 复制代码
SHOW CREATE DATABASE 数据库名称;

以查看sys数据库为例,实操效果如下:

sql 复制代码
SHOW CREATE DATABASE sys;

该命令会显示数据库的创建SQL语句,以及默认字符集等配置,便于后续复现或修改数据库属性。

3)查看当前正在操作的数据库

若忘记当前处于哪个数据库上下文,可通过以下命令查询:

sql 复制代码
SELECT DATABASE();

具体实操效果如下:

注意 :执行该命令前必须先通过USE语句选择数据库,否则会返回NULL(未选中任何数据库)。

1.2 创建数据库➕

创建数据库的基本语法如下,其中可选参数可按需添加:

sql 复制代码
CREATE DATABASE [IF NOT EXISTS] 数据库名称 [库选项];

关键说明

  • IF NOT EXISTS:可选参数,意为"若数据库不存在则创建",避免因重复创建导致报错。
  • 数据库名称规则:仅允许包含字母、数字和下划线,且不能以数字开头(如db_test合法,123_db不合法)。
  • 库选项:常用CHARSET(指定字符集)和COLLATE(指定校对集),默认字符集为latin1(不支持中文),建议显式设置为utf8mb4(支持中文及emoji等4字节字符,比utf8更全面)。

具体实操效果如下:

1.3 选择数据库📌

在操作数据表或数据前,需先指定要操作的数据库,语法如下:

sql 复制代码
USE 数据库名称;

具体实操效果如下:

1.4 删除数据库❌

删除数据库的语法如下,执行后会彻底清除数据库及其中所有数据,需谨慎操作:

sql 复制代码
DROP DATABASE [IF EXISTS] 数据库名称;

关键说明

  • IF EXISTS:可选参数,若数据库不存在则忽略删除操作,避免报错。
  • 操作风险:删除数据库会永久删除其中所有数据表和数据,且无法恢复,建议操作前备份重要数据。

具体实操效果如下:

二、数据表操作📋

2.1 创建数据表➕

创建数据表需基于已选中的数据库,基本语法如下,可按需配置字段、属性及表选项:

sql 复制代码
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 表名( 
    字段1 字段1类型 [字段属性] [COMMENT 字段1注释], 
    字段2 字段2类型 [字段属性] [COMMENT 字段2注释], 
    ...... 
    字段n 字段n类型 [COMMENT 字段n注释] 
) [表属性] [COMMENT 表注释];

关键说明

  • TEMPORARY:创建临时表,仅在当前MySQL会话中可见,会话关闭后自动删除。
  • 字段类型:需根据数据特点选择(如INT存整数、VARCHAR存字符串、DATE存日期)。
  • 字段属性:常用NOT NULL(非空约束)、DEFAULT(默认值)、PRIMARY KEY(主键)等。
  • 表属性:常用ENGINE(存储引擎,推荐InnoDB,支持事务和外键)、DEFAULT CHARSET(字符集,建议设为utf8mb4),确保表支持中文及特殊字符。

具体实操效果如下:

首先创建一个数据库:CREATE DATABASE IF NOT EXISTS CompanyDB;

进入创建的数据库;USE CompanyDB;

sql 复制代码
CREATE TABLE IF NOT EXISTS Employee(
    emp_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '员工ID:自动生成,每个员工唯一',
    emp_name VARCHAR(50) NOT NULL COMMENT '员工姓名:比如"张三",必须填',
    emp_job VARCHAR(50) COMMENT '员工职位:比如"程序员",可填可不填',
    emp_hire_date DATE COMMENT '入职日期:比如"2024-01-15",可填可不填'
) COMMENT '最简单员工表:存员工核心信息';


👉显示ok即创建成功

2.2 查看数据表🔍

1)查看当前数据库中的所有数据表

语法如下,可选LIKE匹配模式筛选表名:

sql 复制代码
SHOW TABLES [LIKE 匹配模式];

匹配模式说明

  • %:匹配任意长度的字符(包括0个),如SHOW TABLES LIKE 'user%'匹配所有以user开头的表。
  • _:仅匹配1个字符,如SHOW TABLES LIKE 'user_'匹配user1userA等(仅后缀1个字符)。

具体实操效果如下:

2)查看数据表的详细信息

若需了解表的存储引擎、创建时间、字符集等信息,可使用以下命令:

sql 复制代码
SHOW TABLE STATUS [FROM 数据库名] [LIKE 匹配模式];

具体实操效果如下:

扩展技巧 :在命令末尾加\G可将结果纵向排列,便于查看字段较多的表信息(如大表的存储大小、行数)。

2.3 查看表结构📊

MySQL提供多种方式查看表结构,核心是了解字段名、类型、约束等信息:

1)简洁查看字段信息(DESC/DESCRIBE)

两种语法效果一致,前者为后者的简写:

sql 复制代码
# 语法1:查看所有字段
{DESCRIBE|DESC} 数据表名;

# 语法2:查看指定字段
{DESCRIBE|DESC} 数据表名 字段名;

查看所有字段的实操效果如下:desc employee;

查看指定字段的实操效果如下: desc employee emp_id;

2)查看数据表的创建语句

若需复现表结构或查看完整配置(如存储引擎、字符集),可使用:

sql 复制代码
SHOW CREATE TABLE 表名;

具体实操效果如下: SHOW CREATE TABLE employee/G;

3)详细查看字段属性(SHOW COLUMNS)

添加FULL参数可查看字段权限、校对集等额外信息:

sql 复制代码
# 语法1:基于当前数据库
SHOW FULL COLUMNS FROM 数据表名;

# 语法2:查看指定数据表完整结构
SHOW [FULL] COLUMNS FROM 数据库名.数据表名;

查看完整信息的实操效果如下: SHOW FULL COLUMNS FROM Employee;

查看指定数据表完整结构:SHOW FULL COLUMNS FROM CompanyDB.Employee;

2.4 删除数据表❌

删除数据表会彻底清除表结构及所有数据,语法如下:

sql 复制代码
# 单表删除(永久表)
DROP TABLE [IF EXISTS] 数据表名;

单表删除(永久表)的实操效果如下: deop table if exists employee;

三、数据操作🔄

3.1 增加数据➕

MySQL提供多种数据插入方式,可按需选择单条、多条或指定字段插入:

1)为部分字段插入数据

适用于仅需赋值部分字段(未赋值字段需允许为空或有默认值),两种语法如下:

sql 复制代码
# 语法1:字段列表+VALUES
INSERT [INTO] 数据表名(字段1, 字段2, ...) {VALUES|VALUE} (值1, 值2, ...);

# 语法2:SET关键字赋值(灵活性更高)
INSERT [INTO] 数据表名 SET 字段1=值1, 字段2=值2, ...;

字段列表+VALUES的实操效果如下:

sql 复制代码
 INSERT INTO Employee(emp_name, emp_job, emp_hire_date)
    -> VALUES('李四', NULL, NULL);
sql 复制代码
SELECT * FROM Employee;

SET关键字赋值的实操效果如下:

sql 复制代码
INSERT INTO Employee ​
SET emp_name='王五', emp_job='销售', emp_hire_date='2024-03-15';
sql 复制代码
SELECT * FROM Employee;

注意 :字段顺序与值顺序必须一一对应,字符串类型的值需用单引号包裹(如'李四')。

2)为所有字段插入数据

可省略字段列表,但值的顺序必须与表结构字段顺序完全一致:

sql 复制代码
INSERT [INTO] 数据表名 {VALUES|VALUE} (值1, 值2, ..., 值n);

具体实操效果如下:

sql 复制代码
INSERT INTO Employee VALUES(NULL, '周二', NULL, NULL);
sql 复制代码
  SELECT * FROM Employee;

3)批量插入多行数据

通过逗号分隔多个值列表,大幅提升插入效率(避免多次执行单条插入):

sql 复制代码
INSERT [INTO] 数据表名 [字段列表] VALUES (值列表1), (值列表2), ..., (值列表n);

具体实操效果如下:

sql 复制代码
INSERT INTO Employee (emp_name, emp_job, emp_hire_date)
VALUES 
  ('吴九', '产品经理', '2024-05-01'),  -- 第一条:填全3个字段
  ('郑十', '设计师', NULL),             -- 第二条:不填入职日期(用NULL)
  ('钱十一', NULL, '2024-05-10');      -- 第三条:不填职位(用NULL)
sql 复制代码
SELECT * FROM Employee;
3.2 查询数据🔍

查询是数据操作的核心,支持查询所有字段、指定字段及带条件筛选:

1)查询表中所有数据

使用*通配符表示所有字段,适用于需查看完整数据的场景:

sql 复制代码
SELECT * FROM 数据表名;

具体实操效果如下:

2)查询指定字段数据

仅查询所需字段,减少数据传输量,提升效率:

sql 复制代码
SELECT 字段1, 字段2, ... FROM 数据表名;

具体实操效果如下:

sql 复制代码
SELECT emp_name, emp_job, emp_hire_date FROM Employee WHERE emp_job='产品经理';

3)带条件查询数据

通过WHERE子句筛选符合条件的记录,常用条件运算符(=><!=等):

sql 复制代码
# 语法1:查询所有字段(带条件)
SELECT * FROM 数据表名 WHERE 条件表达式;

# 语法2:查询指定字段(带条件)
SELECT 字段1, 字段2 FROM 数据表名 WHERE 字段名=值;

带条件查询所有字段的实操效果如下:

sql 复制代码
SELECT * FROM Employee WHERE emp_job='产品经理';

带条件查询指定字段的实操效果如下:

sql 复制代码
SELECT emp_name, emp_hire_date FROM Employee WHERE emp_job='设计师';
3.3 修改数据✏️

通过UPDATE语句修改已有数据,必须加WHERE条件(否则会修改表中所有记录):

sql 复制代码
UPDATE 数据表名 SET 字段1=值1, 字段2=值2, ... [WHERE 条件表达式];

关键说明

  • 多字段修改用逗号分隔"字段=值"对。
  • WHERE条件用于定位需修改的记录(如id=1),避免误改无关数据。

具体实操效果如下:

sql 复制代码
UPDATE Employee 
SET emp_job='高级销售'  
WHERE emp_name='王五'; 
sql 复制代码
SELECT * FROM Employee;
3.4 删除数据❌

通过DELETE语句删除数据,同样必须加WHERE条件(否则会删除表中所有记录):

sql 复制代码
DELETE FROM 数据表名 [WHERE 条件表达式];

关键说明

  • 若需清空表中所有数据且不保留表结构,也可使用TRUNCATE TABLE 表名(效率更高,但无法恢复数据,且不触发删除触发器)。
  • DELETE支持带复杂条件删除(如WHERE age>30),需谨慎验证条件正确性。

具体实操效果如下:

sql 复制代码
DELETE FROM Employee WHERE emp_name='钱十一';

四、实用辅助操作🛠️

4.1 查看MySQL安装目录📍

通过查询BASEDIR变量,可快速获取MySQL的安装路径(便于找到配置文件my.inimy.cnf):

sql 复制代码
SHOW VARIABLES LIKE 'BASEDIR';

具体实操效果如下:

4.2 查看数据存储目录📍

通过查询DATADIR变量,可找到数据库文件的实际存储路径(如ibdata1共享表空间文件、各数据库对应的文件夹及表文件):

sql 复制代码
SHOW VARIABLES LIKE 'DATADIR';

具体实操效果如下:

4.3 查询错误日志目录📍

错误日志记录MySQL运行中的异常信息(如启动失败、SQL执行错误、连接超时等),通过以下命令可找到日志路径,便于排查故障:

sql 复制代码
SHOW VARIABLES LIKE 'log_error';

具体实操效果如下:

总结

以上就是MySQL基础操作的完整内容,确保新手实操时少踩坑。

如果在操作中遇到问题,欢迎在评论区留言或私信交流;若觉得内容对自己有帮助,不妨点赞、关注支持一下,后续会持续更新MySQL进阶教程(如索引优化、事务管理、多表关联查询),感谢大家的阅读!
你好,我是意疏。我们一起进步。


意气风发,漫卷疏狂
学习是成长的阶梯,每一次的积累都将成为未来的助力。我希望通过持续的学习,不断汲取新知识,来改变自己的命运,并将成长的过程记录在我的博客中。
如果我的博客能给您带来启发,如果您喜欢我的博客内容,请不吝点赞、评论和收藏,也欢迎您关注我的博客。
您的支持是我前行的动力。听说点赞会增加自己的运气,希望您每一天都能充满活力!

愿您每一天都快乐,也欢迎您常来我的博客。我叫意疏,希望我们一起成长,共同进步。
我是意疏 下次见!

相关推荐
凯子坚持 c7 小时前
Redis 核心概念解析:从渐进式遍历、数据库管理到客户端通信协议
数据库·redis·bootstrap
关关长语11 小时前
Windows 安装配置解压版Mysql8.4.5
运维·windows·mysql
小蒜学长11 小时前
汽车专卖店管理系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·汽车
柏油14 小时前
MySQL InnoDB 后台线程
数据库·后端·mysql
老华带你飞14 小时前
社区互助|基于SSM+vue的社区互助平台的设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·小程序·毕设·社区互助平台
流火无心16 小时前
mysql索引优化实战
mysql·优化·索引
C++chaofan17 小时前
Spring Task快速上手
java·jvm·数据库·spring boot·后端·spring·mybatis
geovindu20 小时前
sql: Creating a Delimited List from Table Rows
mysql·postgresql·oracle·sqlserver
三贝20 小时前
Java面试现场:Spring Boot+Redis+MySQL在电商场景下的技术深度剖析
spring boot·redis·mysql·微服务·分布式事务·java面试·电商系统