SQL学习-增删改数据

SQL学习-增删改数据

本文介绍 SQL 语句的增删改数据,包括 INSERTUPDATEDELETE 语句,用于向表中插入、更新和删除数据。

供自己以后查漏补缺,也欢迎同道朋友交流学习。

引言

上一章介绍的 SELECT 语句用于从表中检索数据,本章将介绍 INSERTUPDATEDELETE 语句,用于向表中插入、更新和删除数据。

检索数据有很多复杂情况,相对的增删改反而简单的多。

数据表准备

新建一个employees表结构,包含id, name, department, 和salary列。

sql 复制代码
-- 员工表
CREATE TABLE employees (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50) NOT NULL, -- 姓名
  department VARCHAR(255) NOT NULL, -- 部门
  salary FLOAT -- 收入
);

插入数据

插入数据是向数据库表添加新记录的过程。

插入完整的行

插入完整的行,你需要为表中的每个列提供值,包括那些不允许为 NULL 的列。

sql 复制代码
-- 插入完整的行数据:不根据列名插入数据
-- 缺点是必须按照表结构的顺序插入数据,不够灵活。如果后面表结构修改了,就不能使用了。
INSERT INTO employees 
VALUES
  (1, '张三', '销售', 5000),
  (2, '李四', '前端', 6000),
  (3, '王五', '后端', 7000);

执行结果如下:

插入行的一部分

插入行的一部分意味着你只为表中的部分列提供值,通常是那些允许为 NULL 的列或者有默认值的列。

sql 复制代码
-- 插入部分行数据:根据列名插入数据
-- 优点是可以只插入部分列的数据,不需要插入所有列的数据,也不需要按照表结构的顺序插入数据。
INSERT INTO employees (name, department, salary)
VALUES
  ('赵六', '产品', 8000),
  ('钱七', '测试', 9000);

执行结果如下:

插入某些查询的结果

通过SELECT语句查询到的结果插入到表中。下面我用上一篇的 orders 表为例:

sql 复制代码
-- 插入某些查询的结果
INSERT INTO employees (name, department, salary)
SELECT 
  o.customer_name, 
  '销售', 
  2000
FROM 
  orders o
WHERE 
  NOT EXISTS (SELECT 1 FROM employees e WHERE e.name = o.customer_name);

执行结果如下:

更新数据

更新部分行

更新部分行意味着你只修改表中某些列的值。

sql 复制代码
-- 给前端涨薪20%
UPDATE employees
SET salary = salary * 1.2
WHERE department = '前端';

执行结果如下:

更新所有行

更新所有行意味着你修改表中每一行的某些列的值。

sql 复制代码
-- 给所有员工涨薪10%
UPDATE employees
SET salary = salary * 1.1;

执行结果如下:

删除数据

删除部分行

删除部分行意味着你根据某些条件删除表中的行。

sql 复制代码
-- 开除工资大于5000的员工
DELETE FROM employees WHERE salary > 5000;

删除所有行

删除所有行意味着你删除表中的所有数据,但表结构保持不变。

sql 复制代码
-- 删除所有数据
DELETE FROM employees;
-- 清空所以数据
TRUNCATE TABLE employees;

SQL学习专栏系列

练习代码库地址

SQL学习 sql-study

相关推荐
乘风gg30 分钟前
多 Agent 不是万能的!搞懂这 5 个原则,少走 1 年弯路!
前端·agent·ai编程
猩猩程序员1 小时前
Vercel 推出 Agent 框架 Eve:让 AI Agent 像写 Web 应用一样简单
前端
她的男孩1 小时前
Spring Boot 接 Flowable 工作流:用 3 个注解搭一个请假审批流程
java·后端·架构
爱读源码的大都督2 小时前
Claude Code源码分析(三):为什么系统提示词中需要有tools呢?
前端·人工智能·后端
爱勇宝2 小时前
Claude Code 被曝暗藏“隐形检测”代码:封代理不是最可怕的,可怕的是你根本不知道它在干什么
前端·后端·程序员
小牛不牛的程序员2 小时前
我用 Claude Code 半天撸完了一个完整网站,AI 编程到底提升了多少效率?
前端
东风破_2 小时前
JavaScript 面试常考的字符串算法:从反转字符串到回文判断
前端·javascript
ITOM运维行者2 小时前
从零搭建企业级服务器监控体系:踩坑实录与架构设计
前端·后端
monologues2 小时前
深入 Vue 3 源码:响应式系统的精妙设计与编译优化
前端
hunterandroid2 小时前
Paging 3 分页:从手动分页到声明式加载
前端