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

相关推荐
YOU OU3 小时前
Redis基础常识与命令
数据库·redis·缓存
Database_Cool_5 小时前
OLTP 和 OLAP 区别详解:分析型数据库和事务型数据库怎么选(附阿里云 AnalyticDB MySQL 选型指南)
数据库·mysql·阿里云
爱写代码的阿森6 小时前
鸿蒙三方库 | harmony-utils之KvUtil键值型数据库操作详解
数据库·华为·harmonyos·鸿蒙·huawei
Database_Cool_6 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
姜太小白7 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
窝子面7 小时前
手搓最简前后端协作-node
javascript·数据库
吳所畏惧7 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈7 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
HPFBoy7 小时前
log4net 数据库存日志正确配置
数据库