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

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

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

前言

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

在这里插入图片描述

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

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

一、数据库操作😶‍🌫️

我们先输入打开mysql

mysql -u root -p 
在这里插入图片描述
1.1 查看数据库🔍

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

SHOWDATABASES;

具体实操效果如下:

在这里插入图片描述

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

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

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

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

SHOWCREATEDATABASE 数据库名称;

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

SHOWCREATEDATABASE sys;
在这里插入图片描述


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

3)查看当前正在操作的数据库
若忘记当前处于哪个数据库上下文,可通过以下命令查询:

SELECTDATABASE();

具体实操效果如下:

在这里插入图片描述


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

在这里插入图片描述
1.2 创建数据库➕

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

CREATEDATABASE[IFNOTEXISTS] 数据库名称 [库选项];

关键说明

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

具体实操效果如下:

在这里插入图片描述
1.3 选择数据库📌

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

USE 数据库名称;

具体实操效果如下:

在这里插入图片描述
1.4 删除数据库❌

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

DROPDATABASE[IFEXISTS] 数据库名称;

关键说明

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

具体实操效果如下:

在这里插入图片描述

二、数据表操作📋

2.1 创建数据表➕

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

CREATE[TEMPORARY]TABLE[IFNOTEXISTS] 表名( 字段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;

在这里插入图片描述
CREATETABLEIFNOTEXISTS Employee( emp_id INTPRIMARYKEYAUTO_INCREMENTCOMMENT'员工ID:自动生成,每个员工唯一', emp_name VARCHAR(50)NOTNULLCOMMENT'员工姓名:比如“张三”,必须填', emp_job VARCHAR(50)COMMENT'员工职位:比如“程序员”,可填可不填', emp_hire_date DATECOMMENT'入职日期:比如“2024-01-15”,可填可不填')COMMENT'最简单员工表:存员工核心信息';
在这里插入图片描述


👉显示ok即创建成功

2.2 查看数据表🔍

1)查看当前数据库中的所有数据表
语法如下,可选LIKE匹配模式筛选表名:

SHOWTABLES[LIKE 匹配模式];

匹配模式说明

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

具体实操效果如下:

在这里插入图片描述

2)查看数据表的详细信息
若需了解表的存储引擎、创建时间、字符集等信息,可使用以下命令:

SHOWTABLESTATUS[FROM 数据库名][LIKE 匹配模式];

具体实操效果如下:

在这里插入图片描述


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

在这里插入图片描述
2.3 查看表结构📊

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

1)简洁查看字段信息(DESC/DESCRIBE)
两种语法效果一致,前者为后者的简写:

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

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

在这里插入图片描述

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

在这里插入图片描述

2)查看数据表的创建语句
若需复现表结构或查看完整配置(如存储引擎、字符集),可使用:

SHOWCREATETABLE 表名;

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

在这里插入图片描述

3)详细查看字段属性(SHOW COLUMNS)
添加FULL参数可查看字段权限、校对集等额外信息:

# 语法1:基于当前数据库SHOWFULLCOLUMNSFROM 数据表名;# 语法2:查看指定数据表完整结构SHOW[FULL]COLUMNSFROM 数据库名.数据表名;

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

在这里插入图片描述


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

在这里插入图片描述
2.4 删除数据表❌

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

# 单表删除(永久表)DROPTABLE[IFEXISTS] 数据表名;

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

在这里插入图片描述
在这里插入图片描述

三、数据操作🔄

3.1 增加数据➕

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

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

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

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

INSERTINTO Employee(emp_name, emp_job, emp_hire_date)->VALUES('李四',NULL,NULL);
在这里插入图片描述
SELECT*FROM Employee;
在这里插入图片描述

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

INSERTINTO Employee ​ SET emp_name='王五', emp_job='销售', emp_hire_date='2024-03-15';
在这里插入图片描述
SELECT*FROM Employee;
在这里插入图片描述

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

2)为所有字段插入数据
可省略字段列表,但值的顺序必须与表结构字段顺序完全一致:

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

具体实操效果如下:

INSERTINTO Employee VALUES(NULL,'周二',NULL,NULL);
在这里插入图片描述
SELECT*FROM Employee;
在这里插入图片描述


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

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

具体实操效果如下:

INSERTINTO Employee (emp_name, emp_job, emp_hire_date)VALUES('吴九','产品经理','2024-05-01'),-- 第一条:填全3个字段('郑十','设计师',NULL),-- 第二条:不填入职日期(用NULL)('钱十一',NULL,'2024-05-10');-- 第三条:不填职位(用NULL)
在这里插入图片描述
SELECT*FROM Employee;
在这里插入图片描述
3.2 查询数据🔍

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

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

SELECT*FROM 数据表名;

具体实操效果如下:

在这里插入图片描述

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

SELECT 字段1, 字段2,...FROM 数据表名;

具体实操效果如下:

SELECT emp_name, emp_job, emp_hire_date FROM Employee WHERE emp_job='产品经理';
在这里插入图片描述

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

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

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

SELECT*FROM Employee WHERE emp_job='产品经理';
在这里插入图片描述

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

SELECT emp_name, emp_hire_date FROM Employee WHERE emp_job='设计师';
在这里插入图片描述
3.3 修改数据✏️

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

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

关键说明

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

具体实操效果如下:

UPDATE Employee SET emp_job='高级销售'WHERE emp_name='王五';
在这里插入图片描述
SELECT*FROM Employee;
在这里插入图片描述
3.4 删除数据❌

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

DELETEFROM 数据表名 [WHERE 条件表达式];

关键说明

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

具体实操效果如下:

DELETEFROM Employee WHERE emp_name='钱十一';
在这里插入图片描述

四、实用辅助操作🛠️

4.1 查看MySQL安装目录📍

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

SHOW VARIABLES LIKE'BASEDIR';

具体实操效果如下:

在这里插入图片描述
4.2 查看数据存储目录📍

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

SHOW VARIABLES LIKE'DATADIR';

具体实操效果如下:

在这里插入图片描述
4.3 查询错误日志目录📍

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

SHOW VARIABLES LIKE'log_error';

具体实操效果如下:

在这里插入图片描述

总结

以上就是MySQL基础操作的完整内容,确保新手实操时少踩坑。
如果在操作中遇到问题,欢迎在评论区留言或私信交流;若觉得内容对自己有帮助,不妨点赞、关注支持一下,后续会持续更新MySQL进阶教程(如索引优化、事务管理、多表关联查询),感谢大家的阅读!

你好,我是意疏。我们一起进步。

在这里插入图片描述

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

我是意疏 下次见!

Read more

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

摘要:本文聚焦OpenClaw从测试环境走向生产环境的核心痛点,围绕“性能优化、安全加固、监控运维”三大维度展开实操讲解。先明确生产环境硬件/系统选型标准,再通过硬件层资源管控、模型调度策略、缓存优化等手段提升响应速度(实测响应效率提升50%+);接着从网络、权限、数据三层构建安全防护体系,集成火山引擎安全方案拦截高危操作;最后落地TenacitOS可视化监控与Prometheus告警体系,配套完整故障排查清单和虚拟实战案例。全文所有配置、代码均经实测验证,兼顾新手入门实操性和进阶读者的生产级部署需求,帮助开发者真正实现OpenClaw从“能用”到“放心用”的跨越。 优质专栏欢迎订阅! 【DeepSeek深度应用】【Python高阶开发:AI自动化与数据工程实战】【YOLOv11工业级实战】 【机器视觉:C# + HALCON】【大模型微调实战:平民级微调技术全解】 【人工智能之深度学习】【AI 赋能:Python 人工智能应用实战】【数字孪生与仿真技术实战指南】 【AI工程化落地与YOLOv8/v9实战】【C#工业上位机高级应用:高并发通信+性能优化】 【Java生产级避坑指南:

By Ne0inhk
ARM Linux 驱动开发篇--- Linux 并发与竞争实验(互斥体实现 LED 设备互斥访问)--- Ubuntu20.04互斥体实验

ARM Linux 驱动开发篇--- Linux 并发与竞争实验(互斥体实现 LED 设备互斥访问)--- Ubuntu20.04互斥体实验

🎬 渡水无言:个人主页渡水无言 ❄专栏传送门: 《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》 ❄专栏传送门: 《freertos专栏》《STM32 HAL库专栏》 ⭐️流水不争先,争的是滔滔不绝  📚博主简介:第二十届中国研究生电子设计竞赛全国二等奖 |国家奖学金 | 省级三好学生 | 省级优秀毕业生获得者 | ZEEKLOG新星杯TOP18 | 半导纵横专栏博主 | 211在读研究生 在这里主要分享自己学习的linux嵌入式领域知识;有分享错误或者不足的地方欢迎大佬指导,也欢迎各位大佬互相三连 目录 前言  一、实验基础说明 1.1、互斥体简介 1.2 本次实验设计思路 二、硬件原理分析(看过之前博客的可以忽略) 三、实验程序编写 3.1 互斥体 LED 驱动代码(mutex.c) 3.2.1、设备结构体定义(28-39

By Ne0inhk
Flutter for OpenHarmony:swagger_dart_code_generator 接口代码自动化生成的救星(OpenAPI/Swagger) 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:swagger_dart_code_generator 接口代码自动化生成的救星(OpenAPI/Swagger) 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 后端工程师扔给你一个 Swagger (OpenAPI) 文档地址,你会怎么做? 1. 对着文档,手写 Dart Model 类(容易写错字段类型)。 2. 手写 Retrofit/Dio 的 API 接口定义(容易拼错 URL)。 3. 当后端修改了字段名,你对着报错修半天。 这是重复劳动的地狱。 swagger_dart_code_generator 可以将 Swagger (JSON/YAML) 文件直接转换为高质量的 Dart 代码,包括: * Model 类:支持 json_serializable,带 fromJson/

By Ne0inhk
Linux 开发别再卡壳!makefile/git/gdb 全流程实操 + 作业解析,新手看完直接用----《Hello Linux!》(5)

Linux 开发别再卡壳!makefile/git/gdb 全流程实操 + 作业解析,新手看完直接用----《Hello Linux!》(5)

文章目录 * 前言 * make/makefile * 文件的三个时间 * Linux第一个小程序-进度条 * 回车和换行 * 缓冲区 * 程序的代码展示 * git指令 * 关于gitee * Linux调试器-gdb使用 * 作业部分 前言 做 Linux 开发时,你是不是也遇到过这些 “卡脖子” 时刻?写 makefile 时,明明语法没错却报错,最后发现是依赖方法行没加 Tab;想提交代码到 gitee,记不清 git add/commit/push 的 “三板斧”,还得反复搜教程;用 gdb 调试程序,输了命令没反应,才想起编译时没加-g生成 debug 版本;甚至连写个进度条,都搞不懂\r和\n的区别,导致进度条乱跳…… 其实这些问题,

By Ne0inhk