数据库 | MySQL表管理与增删改查:从入门到实践

MySQL表管理与增删改查:从入门到实践

如果你把MySQL数据库想象成一个文件柜,那"表"就是柜子里的一个个收纳盒------每个盒子都有固定的格子(字段),用来存放一类结构化的数据。比如"学生表"会有学号、姓名、年龄这些格子,每一行数据就是一个学生的具体信息。今天咱们就从如何打造这些"收纳盒"开始,再聊聊怎么往里面放数据、找数据、改数据和删数据。

一、表的管理:打造你的"收纳盒"

在存数据前,得先建好"收纳盒"的结构。这就像你要整理衣物前,得先确定衣柜里要分"上衣格""裤子格""袜子格"一样。

1. 创建表:定义"格子"规则

创建表时要明确两个核心:字段名 (格子叫什么)和数据类型(格子能放什么类型的东西),还可以加一些"规则"(约束条件)。比如创建一个"学生表(student)":

sql 复制代码
CREATE TABLE student (
    id INT PRIMARY KEY AUTO_INCREMENT,  -- 学号:整数,主键(唯一标识),自动增长
    name VARCHAR(50) NOT NULL,          -- 姓名:字符串(最长50字),不能为空
    age INT DEFAULT 0,                  -- 年龄:整数,默认值0
    gender CHAR(1) CHECK (gender IN ('男','女'))  -- 性别:单个字符,只能是男或女
);

这里的约束条件很好理解:

复制代码
- `PRIMARY KEY`:就像身份证号,每个学生的学号唯一且不能为空;

- `AUTO_INCREMENT`:不用手动输入学号,数据库会自动按1、2、3...递增;

- `NOT NULL`:姓名是必填项,不能空着;

- `DEFAULT`:如果没填年龄,默认按0处理;

- `CHECK`:性别只能选"男"或"女",避免填错。

2. 修改表:调整"收纳盒"结构

如果后来发现"收纳盒"少了个格子,或者某个格子太大/太小,就需要修改表结构。

sql 复制代码
-- 1. 给student表加一个"班级(class)"字段
ALTER TABLE student ADD COLUMN class VARCHAR(20) NOT NULL;

-- 2. 把"age"字段的数据类型改成TINYINT(范围更小,更节省空间)
ALTER TABLE student MODIFY COLUMN age TINYINT DEFAULT 0;

-- 3. 把"class"字段改名叫"class_name"
ALTER TABLE student CHANGE COLUMN class class_name VARCHAR(20) NOT NULL;

-- 4. 删除"gender"字段(谨慎操作!删了数据就没了)
ALTER TABLE student DROP COLUMN gender;

3. 删除表:扔掉不用的"收纳盒"

如果某个表彻底不用了,可以删除,但一定要确认数据没用了------这就像扔收纳盒,里面的东西会一起消失。

sql 复制代码
-- 删除student表(谨慎!不可逆)
DROP TABLE student;

-- 如果表可能不存在,加IF EXISTS避免报错
DROP TABLE IF EXISTS student;

二、增删改查:操作"收纳盒"里的数据

建好表后,就该和数据打交道了。这部分是MySQL的核心,就像日常整理收纳盒里的东西一样频繁。

1. 增加数据(INSERT):往"格子"里放东西

插入数据时,要对应表的字段顺序,或者明确指定字段名(推荐后者,不容易出错)。

sql 复制代码
-- 1. 指定字段插入(推荐)
INSERT INTO student (name, age, class_name) 
VALUES ('张三', 20, '计算机2班'), ('李四', 19, '软件工程1班');

-- 2. 不指定字段(需按创建表时的字段顺序填写,主键自增可留空)
INSERT INTO student 
VALUES (NULL, '王五', 21, '网络工程3班');

2. 查询数据(SELECT):找"收纳盒"里的东西

查询是最常用的操作,从简单的"看全部"到复杂的"筛选排序"都靠它。

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

-- 2. 只查name和class_name字段,并且给class_name起个别名"班级"
SELECT name, class_name AS '班级' FROM student;

-- 3. 查年龄大于20的学生
SELECT * FROM student WHERE age > 20;

-- 4. 查"计算机2班"的学生,按年龄从小到大排序(ASC升序,DESC降序)
SELECT * FROM student WHERE class_name = '计算机2班' ORDER BY age ASC;

-- 5. 只查前2条数据
SELECT * FROM student LIMIT 2;

3. 修改数据(UPDATE):调整"格子"里的东西

修改数据必须加WHERE条件,否则会把表中所有数据都改掉------这就像你想改张三的年龄,不能把所有人的年龄都改了。

sql 复制代码
-- 把张三的年龄改成21(一定要加WHERE!)
UPDATE student SET age = 21 WHERE name = '张三';

-- 同时修改多个字段:把李四的班级改成"计算机1班",年龄改成20
UPDATE student SET class_name = '计算机1班', age = 20 WHERE name = '李四';

4. 删除数据(DELETE):拿走"收纳盒"里的东西

和修改一样,删除也要加WHERE条件,否则会清空整个表的数据。

sql 复制代码
-- 删除王五的数据(加WHERE,只删指定行)
DELETE FROM student WHERE name = '王五';

-- 清空表所有数据(谨慎!但表结构还在,和DROP TABLE不同)
DELETE FROM student;

三、总结:把复杂的变简单

其实MySQL的表管理和增删改查并不复杂,核心就是"先定义结构,再操作数据"。就像整理收纳盒,先想好怎么分格子,再一步步放东西、找东西、调整东西。如果你刚开始学,建议对着上面的例子亲手敲一遍------毕竟看十遍不如做一遍,遇到报错别怕,查一下错误信息反而记得更牢。

相关推荐
q***42051 小时前
Redis如何设置密码
数据库·redis·缓存
字节数据平台2 小时前
火山引擎多模态数据湖,破解智能驾驶数据处理瓶颈
数据库
e***U8202 小时前
SQL在数据迁移中的脚本编写
数据库·sql
Andrew_Ryan2 小时前
达梦 数据库 Rust 实战
数据库·rust·数据分析
2***B4492 小时前
MySQL环境
数据库·mysql
CIANTECH_Heidi3 小时前
精准配置重构光模块成本效能:深圳光特通信1X9、SFP单收/单发光模块
运维·服务器·网络·数据库·光模块
工具人55553 小时前
下载文件wget
数据库·redis·缓存
maray3 小时前
在 MacOS 场景下体验 seekdb embeded
数据库·人工智能·seekdb
千寻技术帮4 小时前
50043_基于微信小程序的小区物业管理系统
mysql·微信小程序·源码·文档·ppt