目录
引言
对于刚接触数据库的新手来说,MySQL 庞大的指令集往往让人望而生畏。其实,万变不离其宗,核心操作无非是围绕"库"、"表"和"数据"这三个维度进行的增删改查。我们将这些复杂的概念拆解为最基础的积木,带你一步步搭建起对数据库的直观认知。
数据库的增删改查
数据库是存储数据的仓库,管理好仓库是第一步。
创建数据库时,我们通常建议加上
IF NOT EXISTS判断(可选字段 ),并指定字符集为utf8mb4,以支持包括 Emoji 在内的所有字符。
sqlCREATE DATABASE IF NOT EXISTS my_shop DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;想要查看当前服务器里有哪些数据库,或者想操作某个特定的库,可以使用以下指令:
sqlSHOW DATABASES; -- 查看所有数据库 USE my_shop; -- 选中 my_shop 库进行后续操作删除数据库是一个高危操作,它会连同库里的所有数据一起彻底消失,所以务必谨慎使用,并加上
IF EXISTS防止报错(可选字段)。
sqlDROP DATABASE IF EXISTS my_shop;
数据表的增删改查
表是数据库中实际存储数据的结构。我们可以把它想象成 Excel 表格,定义好列名(字段)和类型即可。
创建一个学生表,包含ID、姓名和入学日期。注意
AUTO_INCREMENT用于主键自增,DEFAULT用于设置默认值,COMMENT用于描述数据
sqlCREATE TABLE student ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', name VARCHAR(50) NOT NULL COMMENT '学生姓名', age INT DEFAULT 0 COMMENT '年龄', enroll_date DATE COMMENT '入学日期' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表';建好表后,我们需要确认表是否创建成功,或者查看表的具体结构。
sqlSHOW TABLES; -- 查看当前库下所有的表 DESC student; -- 查看 student 表的具体字段结构如果表设计错误或者不再需要,可以将其删除。
sqlDROP TABLE IF EXISTS student;
表数据的增删改查
这是开发中最常用的部分,即对表里的行数据进行操作。
向表中添加新记录。注意字符串类型的值需要用单引号包裹。
cppINSERT INTO student (name, age, enroll_date) VALUES ('张三', 18, '2023-09-01'); INSERT INTO student (name, age, enroll_date) VALUES ('李四', 20, '2023-09-02');查询是数据库的灵魂。我们可以查询所有列,也可以只查询特定列,并配合条件筛选。
sqlSELECT * FROM student; -- 查询所有数据(生产环境慎用) SELECT name, age FROM student WHERE age > 18; -- 查询年龄大于18的学生姓名和年龄修改数据时,必须格外小心。
SET后面跟要修改的字段和新值。
cppUPDATE student SET age = 19 WHERE name = '张三';删除数据同样危险 。
WHERE子句决定了删除哪一行。
cppDELETE FROM student WHERE name = '李四';这里必须强调一个新手最容易犯的错误:在执行
UPDATE或DELETE语句时,千万别忘了加WHERE条件!如果不加WHERE,数据库会默认更新或删除表中的所有数据,这通常会导致灾难性的后果。
修改表结构
业务变更时,我们往往需要修改已经存在的表结构,而不是删表重建。
ALTER TABLE就是为此而生的。
- 添加字段 :在
age字段后面加一个phone字段。
ALTER TABLE student ADDphoneVARCHAR(20) AFTER age;- 修改字段类型 :将
name的长度从 50 改为 100。
ALTER TABLE student MODIFY name VARCHAR(100);- 删除字段 :删除
phone字段。
ALTER TABLE student DROP phone;- 修改字段名 :将
enroll_date改名为create_time。
ALTER TABLE student CHANGE enroll_date create_time DATE;
操作总结对比
| 操作对象 | 增 (Create) | 删 (Drop/Delete) | 改 (Alter/Update) | 查 (Read/Select) |
|---|---|---|---|---|
| 数据库 | CREATE DATABASE |
DROP DATABASE |
- | SHOW DATABASES |
| 数据表 | CREATE TABLE |
DROP TABLE |
ALTER TABLE |
SHOW TABLES / DESC |
| 表数据 | INSERT INTO |
DELETE FROM |
UPDATE |
SELECT |
综合实战演练
下面是一段连贯的 SQL 脚本,模拟了一个完整的流程。你可以直接复制到你的数据库工具中运行,观察每一步的变化。
sql-- 1. 创建并选中数据库 CREATE DATABASE IF NOT EXISTS test_db CHARACTER SET utf8mb4; USE test_db; -- 2. 创建一张商品表 CREATE TABLE product ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL, price DECIMAL(10, 2) NOT NULL, stock INT DEFAULT 0 ); -- 3. 插入两条商品数据 INSERT INTO product (name, price, stock) VALUES ('iPhone 15', 5999.00, 100); INSERT INTO product (name, price, stock) VALUES ('MacBook Pro', 12999.00, 50); -- 4. 修改表结构:增加一个"品牌"字段 ALTER TABLE product ADD brand VARCHAR(50) DEFAULT 'Apple' AFTER name; -- 5. 更新数据:iPhone 15 降价了 UPDATE product SET price = 5499.00 WHERE name = 'iPhone 15'; -- 6. 查询最终结果 SELECT * FROM product; -- 7. 清理环境(可选) DROP DATABASE test_db;