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避免中文乱码。
相关推荐
6+h2 小时前
【Redis】底层原理解析(SDS / 跳表 / IO多路复用 / 单线程模型)
数据库·redis·bootstrap
idolao2 小时前
CentOS 7 安装 nginx-1.3.15.tar.gz 详细步骤(从源码编译到启动配置)
linux·运维·数据库
EnCi Zheng2 小时前
J7A-已有数据表如何安全添加新字段 [特殊字符]️
数据库·安全·oracle
C羊驼2 小时前
C/C++数据结构与算法:穷举法
c语言·c++·笔记·学习·算法
biubiuibiu2 小时前
探秘新飞机:从包装到起飞的全程指南
数据库·python
专注VB编程开发20年2 小时前
SQL SERVER数据库DTE加密和字段加密
数据库·sql server
pupudawang2 小时前
MySQL中日期和时间戳的转换:字符到DATE和TIMESTAMP的相互转换
数据库·mysql
V1ncent Chen3 小时前
SQL大师之路 12 函数基础
数据库·sql·mysql·数据分析
焚 城3 小时前
SQL PARTITION BY用法
数据库·sql