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

相关推荐
这个DBA有点耶17 分钟前
从DBA到数据架构师(五):数据架构演进中的技术债务管理
数据库·程序人生·云原生·架构·dba·数据库管理员
Bruce_Liuxiaowei1 小时前
基于微步在线威胁情报的公网 IP 攻击迹象监测:threatbook_query 脚本全解析与 BruceSec 平台整合实践
数据库·tcp/ip·安全·网络安全·智能体
码农颜1 小时前
5.6.2 ⾏级锁死锁
数据库·sql·oracle
ChaHae-In2 小时前
MyBatis动态SQL与MyBatis-Plus高效开发指南
数据库·oracle·mybatis
冰暮流星2 小时前
mysql之分组查询
数据库·mysql
倒流时光三十年2 小时前
PostgreSQL Semi-Join(半连接)通俗讲解
数据库·postgresql
NiceCloud喜云3 小时前
腾讯云国际版云数据库选型:MySQL、Redis 怎么按业务架构来判断
数据库·mysql·腾讯云
ew452183 小时前
MySQL JOIN 关联语法、差异、标准用法、经典坑点汇总
数据库·mysql
Rain的Java大神之路4 小时前
线上接口负载满了如何解决
java·数据库·redis·后端·缓存·面试·架构
Nturmoils4 小时前
给运营导个 CSV,在 ksql 里用 \copy 就够了
数据库