MySQL 核心数据库操作

一、连接 MySQL 数据库

连接数据库是所有操作的前提,分为本地连接和远程连接两种常用方式。

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| sql -- 1. 本地连接(默认端口3306,无需指定主机和端口) mysql -u 用户名 -p -- 输入命令后,按提示输入数据库密码即可登录 -- 2. 远程连接(需指定远程主机IP和端口) mysql -h 主机IP -P 端口号 -u 用户名 -p -- 示例:mysql -h 192.168.1.100 -P 3306 -u root -p |

二、数据库级操作(库管理)

针对数据库本身的创建、查看、使用、删除等操作,核心语法如下:

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| sql -- 1. 查看当前所有数据库 SHOW DATABASES; -- 2. 创建数据库(推荐指定字符集,避免中文乱码) CREATE DATABASE 数据库名; -- 基础创建 CREATE DATABASE 数据库名 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 推荐写法 -- 3. 切换使用指定数据库(后续操作均针对该数据库) USE 数据库名; -- 4. 删除数据库(谨慎操作,删除后无法恢复) DROP DATABASE 数据库名; |

三、数据表级操作(表管理)

在指定数据库下,对数据表进行创建、查看、修改、删除等操作,是数据存储的基础。

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| sql -- 1. 查看当前数据库下所有数据表 SHOW TABLES; -- 2. 创建数据表(以学生表student为例,含常用字段类型) CREATE TABLE 表名 ( 字段名1 字段类型 约束条件, 字段名2 字段类型 约束条件, ... ); -- 示例:创建学生表,id为主键自增,name非空 CREATE TABLE student ( id INT PRIMARY KEY AUTO_INCREMENT, -- 主键自增,唯一标识每条数据 name VARCHAR(50) NOT NULL, -- 字符串类型,不能为空 age INT, -- 整数类型,可空 sex CHAR(1), -- 字符类型,存储性别(如男/女) create_time DATETIME DEFAULT NOW() -- 时间类型,默认当前时间 ); -- 3. 查看数据表结构(查看字段、类型、约束等) DESC 表名; -- 简写,常用 -- 或 DESCRIBE 表名; -- 4. 修改表名 RENAME TABLE 旧表名 TO 新表名; -- 5. 修改表结构(添加、修改、删除字段) -- 5.1 添加字段 ALTER TABLE 表名 ADD 字段名 字段类型 约束条件; -- 示例:给student表添加address字段 ALTER TABLE student ADD address VARCHAR(100); -- 5.2 修改字段(修改类型或约束) ALTER TABLE 表名 MODIFY 字段名 新字段类型 新约束条件; -- 示例:将student表的age字段改为非空 ALTER TABLE student MODIFY age INT NOT NULL; -- 5.3 删除字段 ALTER TABLE 表名 DROP 字段名; -- 示例:删除student表的address字段 ALTER TABLE student DROP address; -- 6. 删除数据表(谨慎操作,删除后表中所有数据丢失) DROP TABLE 表名; |

四、数据操作(增删改查,核心重点)

对数据表中的数据进行新增、查询、修改、删除,是日常使用最频繁的操作,其中修改和删除需格外谨慎。

4.1 新增数据(INSERT)

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| sql -- 1. 指定字段新增(推荐,无需考虑字段顺序,灵活) INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...); -- 示例:给student表新增一条数据 INSERT INTO student (name, age, sex) VALUES ('张三', 18, '男'); -- 2. 全字段新增(需严格按照表中字段顺序,主键自增可填NULL) INSERT INTO 表名 VALUES (值1, 值2, ...); -- 示例:student表id自增,全字段新增 INSERT INTO student VALUES (NULL, '李四', 20, '女', NOW()); -- 3. 批量新增(高效,一次插入多条数据) INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), ...; -- 示例:批量新增3条学生数据 INSERT INTO student (name, age, sex) VALUES ('王五', 19, '男'), ('赵六', 18, '女'), ('孙七', 21, '男'); |

4.2 查询数据(SELECT)

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| sql -- 1. 查询表中所有数据(简单查询,适合小表) SELECT * FROM 表名; -- 2. 查询指定字段(高效,只查需要的字段) SELECT 字段1, 字段2, ... FROM 表名; -- 示例:查询student表的name和age字段 SELECT name, age FROM student; -- 3. 条件查询(WHERE子句,筛选符合条件的数据) SELECT 字段 FROM 表名 WHERE 条件; -- 示例1:查询age大于18的学生 SELECT * FROM student WHERE age > 18; -- 示例2:查询name为"张三"的学生 SELECT * FROM student WHERE name = '张三'; -- 4. 模糊查询(LIKE,匹配包含指定内容的数据) -- % 表示任意长度的字符(包括0个),_ 表示单个字符 SELECT 字段 FROM 表名 WHERE 字段 LIKE '匹配规则'; -- 示例1:查询名字包含"张"的学生 SELECT * FROM student WHERE name LIKE '%张%'; -- 示例2:查询名字以"李"开头的学生 SELECT * FROM student WHERE name LIKE '李%'; -- 5. 排序查询(ORDER BY,默认升序ASC,降序DESC) SELECT 字段 FROM 表名 ORDER BY 字段 排序方式; -- 示例:查询所有学生,按age降序排列(从大到小) SELECT * FROM student ORDER BY age DESC; -- 6. 分页查询(LIMIT,适合大数据量,避免一次性查询过多) -- LIMIT 起始索引, 查询条数(起始索引从0开始) SELECT 字段 FROM 表名 LIMIT 起始索引, 条数; -- 示例1:查询前5条学生数据 SELECT * FROM student LIMIT 0, 5; -- 示例2:查询第6-10条学生数据 SELECT * FROM student LIMIT 5, 5; -- 7. 去重查询(DISTINCT,去除重复数据) SELECT DISTINCT 字段 FROM 表名; -- 示例:查询学生表中所有不重复的age SELECT DISTINCT age FROM student; |

4.3 修改数据(UPDATE)

重点提醒:修改数据必须加WHERE子句,否则会修改表中所有数据,造成不可逆损失!

|-------------------------------------------------------------------------------------------------------------------------------------|
| sql -- 语法:UPDATE 表名 SET 字段1=值1, 字段2=值2, ... WHERE 条件; -- 示例:将id为1的学生age改为20,sex改为"男" UPDATE student SET age=20, sex='男' WHERE id=1; |

4.4 删除数据(DELETE)

重点提醒:删除数据必须加WHERE子句,否则会删除表中所有数据;删除后无法恢复,建议先查询确认后再删除。

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| sql -- 语法:DELETE FROM 表名 WHERE 条件; -- 示例:删除id为3的学生数据 DELETE FROM student WHERE id=3; -- 清空表中所有数据(谨慎使用,无WHERE,不可恢复) -- 方式1:清空数据,保留表结构(自增主键会重置) TRUNCATE TABLE 表名; -- 方式2:清空数据,保留表结构(自增主键不重置) DELETE FROM 表名; |

五、常用高级查询

针对复杂场景,常用的高级查询操作,满足统计、关联等需求。

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| sql -- 1. 统计数量(COUNT,统计符合条件的记录数) -- 统计所有数据 SELECT COUNT(*) FROM 表名; -- 统计非空字段的数量 SELECT COUNT(字段名) FROM 表名; -- 示例:统计student表中age>18的学生数量 SELECT COUNT(*) FROM student WHERE age > 18; -- 2. 分组统计(GROUP BY,按指定字段分组,结合聚合函数) -- 语法:SELECT 分组字段, 聚合函数 FROM 表名 GROUP BY 分组字段; -- 示例:按sex分组,统计男女学生的数量 SELECT sex, COUNT(*) AS 人数 FROM student GROUP BY sex; -- 3. 连表查询(JOIN,关联多个表查询数据,最常用内连接) -- 内连接:只查询两个表中匹配条件的数据 -- 示例:学生表student(含class_id)和班级表class(含id、class_name),查询学生及所属班级 SELECT s.name, s.age, c.class_name FROM student s -- 给student起别名s JOIN class c -- 给class起别名c ON s.class_id = c.id; -- 关联条件:学生的class_id等于班级的id -- 4. 条件筛选(HAVING,用于分组后筛选,区别于WHERE) -- WHERE筛选行,HAVING筛选分组后的结果 -- 示例:按sex分组,统计人数大于2的性别 SELECT sex, COUNT(*) AS 人数 FROM student GROUP BY sex HAVING 人数 > 2; |

六、用户与权限操作(可选)

针对多用户场景,管理用户及权限,保障数据库安全。

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| sql -- 1. 创建用户 CREATE USER '用户名'@'登录地址' IDENTIFIED BY '密码'; -- 示例1:创建本地用户(只能本地登录) CREATE USER 'test'@'localhost' IDENTIFIED BY '123456'; -- 示例2:创建远程用户(可通过任意IP登录) CREATE USER 'test'@'%' IDENTIFIED BY '123456'; -- 2. 给用户授权(授予指定数据库/表的操作权限) -- 语法:GRANT 权限 ON 数据库.表名 TO '用户名'@'登录地址'; -- 示例:授予test用户testdb数据库所有表的查询、新增权限 GRANT SELECT, INSERT ON testdb.* TO 'test'@'localhost'; -- 授予所有权限(谨慎使用) GRANT ALL ON *.* TO 'test'@'localhost'; -- 刷新权限,使授权生效 FLUSH PRIVILEGES; -- 3. 撤销用户权限 REVOKE 权限 ON 数据库.表名 FROM '用户名'@'登录地址'; -- 示例:撤销test用户的新增权限 REVOKE INSERT ON testdb.* FROM 'test'@'localhost'; -- 4. 删除用户 DROP USER '用户名'@'登录地址'; |

七、注意事项

  • 所有SQL语句以分号(;)结尾,否则无法执行。
  • UPDATE、DELETE操作必须加WHERE子句,避免误操作全表数据。
  • 创建表时,主键(PRIMARY KEY)必须唯一,自增(AUTO_INCREMENT)仅适用于整数类型主键。
  • 中文数据需指定字符集为utf8mb4,避免乱码。
  • 删除数据库、数据表、数据前,建议先备份,防止数据丢失。

八、常用操作口诀(快速记忆)

  1. 库操作:CREATE(建)、USE(用)、SHOW(查)、DROP(删)

  2. 表操作:CREATE(建)、DESC(查结构)、ALTER(改)、DROP(删)

  3. 数据操作:INSERT(增)、SELECT(查)、UPDATE(改)、DELETE(删)

|(注:文档部分内容可能由 AI 生成)

相关推荐
Yang-Never4 小时前
ADB ->adb shell perfetto 抓取 trace 指令
android·开发语言·adb·android studio
轩情吖8 小时前
MySQL之事务管理
android·后端·mysql·adb·事务·隔离性·原子性
赶路人儿1 天前
常见的mcp配置
android·adb
ego.iblacat1 天前
MySQL 数据库操作
数据库·mysql·adb
路溪非溪1 天前
adb的安装和基本使用总结
adb
XDHCOM1 天前
MySQL报错LDAP认证初始化连接池失败,远程修复思路和故障排查分享
数据库·mysql·adb
闻哥1 天前
深入理解 MySQL InnoDB Buffer Pool 的 LRU 冷热数据机制
android·java·jvm·spring boot·mysql·adb·面试
炸炸鱼.1 天前
MySQL 数据库核心操作手册
数据库·adb·oracle
总要冲动一次1 天前
MySQL 5.7 全量 + 增量备份方案(本地执行 + 远程存储)
数据库·mysql·adb