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语句的准确性~~~

相关推荐
云飞云共享云桌面1 小时前
医疗器械设备研发:多人同时操作 SolidWorks,怎样依靠单台服务器替代多工作站
运维·服务器·网络·数据库·制造
知行合一。。。6 小时前
RAG--03--Milvus基本用法
数据库·oracle·milvus
TDengine (老段)7 小时前
TDengine 线程模型 — 网络、调度、执行
大数据·数据库·物联网·制造·时序数据库·tdengine·涛思数据
上学的小垃圾8 小时前
01-数据库系统概述
数据库
二进制漫游记8 小时前
FastAPI项目集成 Qdrant向量数据库+阿里云Embedding完整实战(工具封装+业务调用)
数据库·python·阿里云·embedding
2501_928996228 小时前
GPT-4o换DeepSeek迁移成本多少?中科热备解析API聚合平台技术账本
前端·数据库·人工智能
泡干脆面就番茄11 小时前
MySQL_子查询_分页查询与联合查询详解
数据库·mysql
devpotato12 小时前
缓存与数据库更新顺序不一致问题
java·数据库·redis
天若有情67312 小时前
Node+MySQL小型全栈笔记项目实战课程分享
数据库·笔记·mysql
wxwx_bscxy32212 小时前
基于springboot宠物领养系统的设计与实现
数据库·spring boot·后端·spring·宠物