MySQL - 基础增删查改

一、创建数据(Create)

INSERT语句

用于向表中添加新记录,基本语法:

sql 复制代码
INSERT INTO 表名 (字段1, 字段2, ...) 
VALUES (值1, 值2, ...);

示例

students表插入数据:

sql 复制代码
INSERT INTO students (name, age, grade) 
VALUES ('张三', 18, 'A');

批量插入

sql 复制代码
INSERT INTO students (name, age, grade) 
VALUES 
  ('李四', 19, 'B'),
  ('王五', 17, 'A+');

注意

  • 字段与值必须一一对应
  • 省略字段名时需提供所有字段的值
  • 自增字段(如ID)无需手动插入

二、读取数据(Read)

SELECT语句

基础查询结构:

sql 复制代码
SELECT 字段1, 字段2, ... FROM 表名 [WHERE 条件];

1. 全字段查询

sql 复制代码
SELECT * FROM students;

2. 条件筛选

sql 复制代码
SELECT name, grade FROM students 
WHERE age > 18;

3. 高级查询

此处ORDER....BY是排序,对BY后的字段进行排序,用ASC表示升序,DESC表示降序,默认是ASC~~

  • 排序

    sql 复制代码
    SELECT * FROM students 
    ORDER BY age DESC;
  • 限制条数

    sql 复制代码
    SELECT * FROM students 
    LIMIT 5;
  • 模糊查询

    sql 复制代码
    SELECT * FROM students 
    WHERE name LIKE '张%';

三、更新数据(Update)

UPDATE语句

sql 复制代码
UPDATE 表名 
SET 字段1=新值1, 字段2=新值2 
[WHERE 条件];

示例

将李四的年级改为'A':

sql 复制代码
UPDATE students 
SET grade = 'A' 
WHERE name = '李四';

必须使用WHERE子句,否则会更新整张表!

四、删除数据(Delete)

DELETE语句

sql 复制代码
DELETE FROM 表名 [WHERE 条件];

删除年龄小于18的学生:

sql 复制代码
DELETE FROM students 
WHERE age < 18;

清空表

sql 复制代码
TRUNCATE TABLE students; -- 不可恢复,慎用!

综合习题训练

习题1:基础操作

  1. 创建products表(含id, name, price字段)
  2. 插入3条商品数据
  3. 查询价格超过100元的商品名称
  4. 将所有商品价格打9折
  5. 删除价格低于50元的商品

习题2:复杂查询

现有订单表orders结构:

sql 复制代码
CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  product_id INT,
  quantity INT,
  order_date DATE
);
  1. 查询2023年1月的订单总量
  2. 统计每个产品的总销售额(需关联产品价格表)
  3. 找出单次订购数量超过10的客户ID

习题3:安全实践

  1. 解释为什么以下语句危险:

    sql 复制代码
    UPDATE users SET password = '123456';
  2. 如何防止误删整个表?

  3. 写出带备份机制的删除语句模板


习题参考答案

习题1答案

sql 复制代码
-- 1. 建表
CREATE TABLE products (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100) NOT NULL,
  price DECIMAL(10,2) NOT NULL
);

-- 2. 插入数据
INSERT INTO products (name, price) VALUES
  ('笔记本', 5999.00),
  ('鼠标', 89.90),
  ('键盘', 299.00);

-- 3. 查询
SELECT name FROM products WHERE price > 100;

-- 4. 更新
UPDATE products SET price = price * 0.9;

-- 5. 删除
DELETE FROM products WHERE price < 50;

习题2答案

sql 复制代码
-- 1. 
SELECT SUM(quantity) FROM orders 
WHERE order_date BETWEEN '2023-01-01' AND '2023-01-31';

-- 2. 
SELECT p.name, SUM(o.quantity * p.price) AS total_sales
FROM orders o
JOIN products p ON o.product_id = p.id
GROUP BY p.name;

-- 3. 
SELECT customer_id FROM orders 
WHERE quantity > 10;

习题3答案

  1. 缺少WHERE条件会更新所有用户的密码

  2. 使用事务或先备份:

    sql 复制代码
    START TRANSACTION;
    DELETE FROM table_name WHERE ...;
    -- 确认无误后
    COMMIT;
  3. 安全删除模板:

    sql 复制代码
    CREATE TABLE backup_table AS SELECT * FROM target_table;
    DELETE FROM target_table WHERE condition;

反复练习这些基础操作,可显著提升SQL语句的准确性~~~

相关推荐
NineData8 小时前
NineData智能数据管理平台新功能发布|2026年1-2月
数据库·sql·数据分析
IvorySQL9 小时前
双星闪耀温哥华:IvorySQL 社区两项议题入选 PGConf.dev 2026
数据库·postgresql·开源
ma_king12 小时前
入门 java 和 数据库
java·数据库·后端
jiayou6415 小时前
KingbaseES 实战:审计追踪配置与运维实践
数据库
随风飘的云16 小时前
mysql的innodb引擎对可重复读做了那些优化,可以避免幻读
mysql
NineData1 天前
NineData 迁移评估功能正式上线
数据库·dba
NineData1 天前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算
赵渝强老师1 天前
【赵渝强老师】PostgreSQL中表的碎片
数据库·postgresql
全栈老石2 天前
拆解低代码引擎核心:元数据驱动的"万能表"架构
数据库·低代码
倔强的石头_2 天前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库