MySQL数据库操作笔记

一、基础操作:连接 / 退出数据库

1. 方式 1:可视化工具(MySQL Workbench,新手首选)

  • 连接:打开 Workbench → 点击「Local Instance MySQL80」→ 输入 root 密码 → OK
  • 执行 SQL:在查询编辑器写 SQL 语句 → 点击「闪电图标」执行 → 下方查看结果
  • 退出:直接关闭 Workbench 即可

2. 方式 2:命令行(CMD/Terminal)

bash

运行

复制代码
# 连接数据库(本地)
mysql -u root -p
# 输入密码后回车(密码不显示,正常输入即可)

# 连接远程数据库(可选,新手暂不用)
mysql -u 用户名 -p -h 远程IP -P 端口号

# 退出数据库
exit;  # 或 quit;

二、核心操作:数据库(DB)的创建 / 查看 / 删除

1. 查看所有数据库

sql

复制代码
SHOW DATABASES;  -- 注意:SQL语句以分号结尾,大小写不敏感(推荐大写关键字)

效果:显示 MySQL 自带的默认数据库(如 mysql、information_schema)+ 你创建的数据库。

2. 创建数据库

sql

复制代码
-- 基础语法:CREATE DATABASE 数据库名;
CREATE DATABASE student_db;  -- 创建名为student_db的数据库

-- 进阶:指定字符集(避免中文乱码,必加!)
CREATE DATABASE student_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • utf8mb4:兼容所有中文 / 特殊字符(比 utf8 更完整)
  • COLLATE:排序规则,utf8mb4_unicode_ci 是通用推荐

3. 使用(切换)数据库

sql

复制代码
USE student_db;  -- 后续操作都针对student_db

4. 删除数据库(谨慎!不可逆)

sql

复制代码
DROP DATABASE student_db;  -- 删除整个数据库,包含所有表和数据

三、核心操作:数据表(Table)的创建 / 查看 / 修改 / 删除

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

sql

复制代码
SHOW TABLES;

2. 创建数据表

语法

sql

复制代码
CREATE TABLE 表名 (
    字段名1 数据类型 [约束],
    字段名2 数据类型 [约束],
    ...
);

实战案例(创建学生表):

sql

复制代码
USE student_db;  -- 先切换到目标数据库

CREATE TABLE student (
    id INT PRIMARY KEY AUTO_INCREMENT,  -- 学号(主键,自增)
    name VARCHAR(20) NOT NULL,         -- 姓名(非空,最多20字符)
    age TINYINT,                       -- 年龄(小整数,范围-128~127)
    gender CHAR(1) DEFAULT '男',       -- 性别(默认值"男")
    score FLOAT(5,2),                  -- 成绩(总5位,小数2位,如98.50)
    create_time DATETIME DEFAULT NOW() -- 创建时间(默认当前时间)
);

新手必懂字段说明

表格

部分 解释
PRIMARY KEY 主键:唯一标识一条数据(如学号),不能重复、不能为空
AUTO_INCREMENT 自增:插入数据时无需手动填 id,自动从 1 开始递增
NOT NULL 非空:该字段必须填值,不能留空
DEFAULT 默认值:未填值时自动使用默认值
常用数据类型 INT(整数)、VARCHAR(n)(可变字符串)、CHAR(n)(固定字符串)、FLOAT(m,d)(浮点数)、DATETIME(时间)

3. 查看表结构(必查!确认字段是否正确)

sql

复制代码
DESC student;  -- 简写,全称:DESCRIBE student;

效果:显示表的字段名、类型、是否为空、主键、默认值等信息。

4. 修改数据表(常用)

sql

复制代码
-- 1. 添加字段(新增"地址"字段)
ALTER TABLE student ADD COLUMN address VARCHAR(100);

-- 2. 修改字段类型(修改"age"为INT类型)
ALTER TABLE student MODIFY COLUMN age INT;

-- 3. 删除字段(删除"address"字段)
ALTER TABLE student DROP COLUMN address;

-- 4. 修改表名
ALTER TABLE student RENAME TO student_info;

5. 删除数据表(谨慎!)

sql

复制代码
DROP TABLE student;  -- 删除整张表,包含所有数据

四、核心操作:数据的增删改查(CRUD,重中之重)

1. 新增数据(CREATE)

sql

复制代码
-- 方式1:指定字段插入(推荐,顺序可自定义)
INSERT INTO student (name, age, gender, score) 
VALUES ('张三', 18, '男', 95.5);

-- 方式2:插入多条数据(高效)
INSERT INTO student (name, age, gender, score) 
VALUES 
('李四', 19, '女', 88.0),
('王五', 20, '男', 92.5);

-- 方式3:不指定字段(需按表字段顺序填值,不推荐)
INSERT INTO student VALUES (NULL, '赵六', 17, '男', 85.0, NOW());
-- id是自增主键,填NULL会自动生成

2. 查询数据(READ,最常用)

sql

复制代码
-- 1. 查询所有字段、所有数据(*代表所有字段)
SELECT * FROM student;

-- 2. 查询指定字段
SELECT name, age, score FROM student;

-- 3. 条件查询(WHERE)
SELECT * FROM student WHERE age > 18;  -- 年龄大于18
SELECT * FROM student WHERE gender = '女' AND score >= 90;  -- 女生且成绩≥90

-- 4. 排序(ORDER BY,ASC升序/ DESC降序)
SELECT * FROM student ORDER BY score DESC;  -- 按成绩降序

-- 5. 限制查询结果数量(LIMIT,新手常用)
SELECT * FROM student LIMIT 2;  -- 只查前2条

3. 修改数据(UPDATE)

sql

复制代码
-- 修改单条数据(必加WHERE,否则修改全表!)
UPDATE student SET score = 90 WHERE id = 1;  -- 把id=1的成绩改为90

-- 修改多条数据
UPDATE student SET age = 20 WHERE gender = '女';  -- 所有女生年龄改为20

4. 删除数据(DELETE)

sql

复制代码
-- 删除单条数据(必加WHERE,否则删除全表!)
DELETE FROM student WHERE id = 3;  -- 删除id=3的记录

-- 删除全表数据(保留表结构,慎用)
DELETE FROM student;

五、实操建议

  1. 先创建数据库 → 再创建表 → 最后操作数据,按 "库→表→数据" 的顺序。
  2. 执行 SQL 前先检查:
    • 修改 / 删除数据是否加了WHERE条件(避免误操作);
    • 字段名、表名是否拼写正确;
    • SQL 语句是否以分号结尾。
  3. 测试数据:先插入 2-3 条测试数据,再练习查询、修改、删除,熟悉逻辑。

总结

  1. MySQL 核心操作分三层:数据库(创建 / 切换 / 删除)→ 数据表(创建 / 改结构 / 删除)→ 数据(增删改查)。
  2. 数据操作中,SELECT(查询)是最常用的,UPDATE/DELETE必须加WHERE条件避免误操作。
  3. 创建表时要指定合适的字段类型和约束(如NOT NULLPRIMARY KEY),字符集推荐utf8mb4避免中文乱码。
相关推荐
卤炖阑尾炎15 分钟前
PostgreSQL 日常运维全指南:从基础操作到备份恢复
运维·数据库·postgresql
周周不一样1 小时前
Andorid基础笔记2-jar&反射
笔记·pycharm·jar
智者知已应修善业1 小时前
【51单片机单按键切换广告屏】2023-5-17
c++·经验分享·笔记·算法·51单片机
daad7771 小时前
wifi_note
运维·服务器·数据库
计算机毕设vx_bysj68691 小时前
【免费领源码】77196基于java的手机银行app管理系统的设计与实现 计算机毕业设计项目推荐上万套实战教程JAVA,node.js,C++、python、大屏数据可视化
java·mysql·智能手机·课程设计
吴声子夜歌2 小时前
ES6——正则的扩展详解
前端·mysql·es6
xixingzhe22 小时前
Mysql统计空间增量
数据库·mysql
程序员萌萌2 小时前
Java之mysql实战讲解(三):聚簇索引与非聚簇索引
java·mysql·聚簇索引
凉、介2 小时前
别再把 PCIe 的 inbound/outbound、iATU 和 eDMA 混为一谈
linux·笔记·学习·嵌入式·pcie
程序员萌萌2 小时前
Redis的缓存机制和淘汰策略详解
数据库·redis·缓存机制·淘汰策略