Skip to content

MySQL 基础 CRUD 语法

TIP

CRUD(Create、Read、Update、Delete)是数据库操作的基础。掌握这些基本操作是使用 MySQL 的第一步。

数据库与表操作

sql
-- 创建数据库
CREATE DATABASE IF NOT EXISTS demo DEFAULT CHARACTER SET utf8mb4;

-- 使用数据库
USE demo;

-- 创建表
CREATE TABLE user (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL COMMENT '姓名',
    age INT DEFAULT 0 COMMENT '年龄',
    email VARCHAR(100) COMMENT '邮箱',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

插入数据(Create)

sql
-- 单条插入
INSERT INTO user(name, age, email) VALUES('张三', 25, 'zhangsan@example.com');

-- 批量插入(推荐)
INSERT INTO user(name, age, email) VALUES
    ('李四', 28, 'lisi@example.com'),
    ('王五', 32, 'wangwu@example.com'),
    ('赵六', 22, 'zhaoliu@example.com');

-- 忽略重复
INSERT IGNORE INTO user(name, email) VALUES('张三', 'zhangsan@example.com');

-- 替换(存在则更新,不存在则插入)
REPLACE INTO user(id, name, age) VALUES(1, '张三', 26);

查询数据(Select)

sql
-- 查询所有列
SELECT * FROM user;

-- 查询指定列
SELECT id, name, age FROM user;

-- 条件查询
SELECT * FROM user WHERE age >= 18;

-- 多条件
SELECT * FROM user WHERE age BETWEEN 20 AND 30 AND name LIKE '张%';

-- 排序
SELECT * FROM user ORDER BY age DESC, id ASC;

-- 分页
SELECT * FROM user LIMIT 10 OFFSET 0;  -- 第1页
SELECT * FROM user LIMIT 10 OFFSET 10; -- 第2页

-- 聚合查询
SELECT COUNT(*) total, AVG(age) avg_age, MAX(age) max_age FROM user;

更新数据(Update)

sql
-- 更新单列
UPDATE user SET age = 26 WHERE id = 1;

-- 更新多列
UPDATE user SET age = 30, email = 'new@example.com' WHERE name = '张三';

-- 注意:不加 WHERE 会更新所有记录!

删除数据(Delete)

sql
-- 删除指定记录
DELETE FROM user WHERE id = 1;

-- 清空表(比 DELETE 快)
TRUNCATE TABLE user;

-- 注意:不加 WHERE 会删除所有记录!

WARNING

  • 生产环境 UPDATE 和 DELETE 务必加 WHERE 条件
  • 建议先 SELECT 确认 WHERE 条件正确再执行
  • 批量操作时注意事务控制