当前位置: 首页 > news >正文

MySQL中表的增删改查(CRUD)

一.在表中增加数据(Create)

INSERT [INTO] TB_NAME [(COLUMN1,COLUMN2,...)] VALUES (value_list1),(value_list2),...;
  1. into可以省略
  2. 可仅选择部分列选择插入,column即选择的列, 如图例可以选择仅在valuelist中插入age和id如果不指定列则默认为全列插入=
  3. 一次可以插入多行,用逗号隔开,如图例中values后两个括号即插入两行数据
  4. 插入的数据必须与指定列数一一对应
    在这里插入图片描述

二.数据库中查询数据(Retrieve)

SELECT1,2, ... 
FROM tb_name 
[WHERE 条件] 
[ORDER BY 排序列] 
[LIMIT 数量];
  1. 可以用select * 查询所有数据但数据过多时可能造成性能问题
    在这里插入图片描述

  2. 查询特定列时select 列1,列2即可如图仅查询了id与age
    在这里插入图片描述

  3. 可以结合where,语法为where +条件 进行条件筛选(where类比编程语言中的if语句)
    在这里插入图片描述

  4. 可以用order by排序,具体语法为 order by+列名(即以此列数据排序)+(desc或asc也可以省略,省略默认为asc)
    其中desc为降序(从大到小)asc为升序(从小到大)在这里插入图片描述

  5. 可以结合limit进行分页查询,并可以运用offset,注意:“必须”配合 ORDER BY:未指定排序时,查询结果的顺序可能不稳定,影响分页准确性。
    不配合不报错,但是同一查询在不同时间执行,可能因数据变化或优化器调整返回不同顺序的结果

-- 记录的起始下标为0,limit n为筛选从0下标开始的n条数据
SELECT * FROM users LIMIT n;
-- 筛选从s下标开始的n条数据
SELECT * FROM users LIMIT s,n;
-- 结合offset分页:筛选从s下标开始的n条数据,该写法比第二种写法明确更加推荐使用该写法
SELECT * FROM users LIMIT n OFFSET s;
  1. 去重操作distinct,消除重复行,返回唯一不同的值,适用于需要排除重复数据的场景,并且可以针对一列或多列组合去重注意DISTINCT 将 NULL 视为一个唯一值
-- 单列去重
SELECT DISTINCT 列名 FROM 表名;-- 多列去重(组合唯一)
SELECT DISTINCT1,2 FROM 表名;
  1. 可以查询有关列的表达式,并且表达式可以用as关键字写为别名
    在这里插入图片描述
    在这里插入图片描述

三.表中已有数据的修改(Update)

UPDATE table_name
SET column1 = value1, column2 = value2, ...
[WHERE condition]
[ORDER BY ...]  -- 某些数据库支持(如 MySQL)
[LIMIT ...];    -- 某些数据库支持(如 MySQL)

可以第一对多列进行操作,并可配合一系列条件筛选否则为更改每一行

-- 同时修改用户的姓名和年龄
UPDATE users SET name = '张三',age = 28 WHERE user_id = 100;

四.表的删除

DELETE FROM table_name 
[WHERE condition] 
[ORDER BY ...]  -- 某些数据库支持(如 MySQL)
[LIMIT ...];    -- 某些数据库支持(如 MySQL)

注意:可删除部分或全部数据(通过条件来筛选)

-- 删除所有年龄大于 100 的用户
DELETE FROM users WHERE age > 100;-- 删除前 10 条订单记录(MySQL 支持 LIMIT)
DELETE FROM orders ORDER BY order_date LIMIT 10;

五.条件查询的补充

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

注意:

  1. = 对null不安全,null=null的结果是null
    特别地<=>也是等于,并且对null安全,NULL <=> NULL 结果可得 1 (TRUE)
  2. 对于逻辑运算符的优先级记忆要求不高,可以依靠添加括号达成想法
  3. 模糊查询用到关键字like
    模糊查询中

张% 即为张开头的所有数据,%匹配任意长度字符

_ 则仅匹配一个字符 张 _ 仅能表示张开头,长度为2的字符

ESCAPE当你要搜索的内容本身包含 % 或 _ 时,必须用它来“取消”通配符的特殊含义

-- 错误写法:会匹配到 100abc、100xyz 等
SELECT * FROM products 
WHERE title LIKE '100%';-- 正确写法:精确匹配 100%
SELECT * FROM products 
WHERE title LIKE '100!%%' ESCAPE '!';
  1. BETWEEN … AND …和IN (…)注意
    BETWEEN … AND …的左右都是闭区间
    并且对非数字类型的支持
    不仅限于数字,还可用于日期、字符串范围筛选,语法简洁性优势更明显
-- 查询价格在 100~500 之间的商品
SELECT * FROM products WHERE price BETWEEN 100 AND 500;
-- 等效于
WHERE price >= 100 AND price <= 500;-- 查询北京、上海、广州的用户
SELECT * FROM users WHERE city IN ('北京', '上海', '广州');-- 等效于
WHERE city = '北京' OR city = '上海' OR city = '广州';

相关文章:

  • SQL练习(6/81)
  • Day11-苍穹外卖(数据统计篇)
  • 大规模CFD仿真计算中,SIMPLE或者PISO算法中加速压力场方程迭代求解
  • 股票配资平台开发如何判断交易策略是否可靠
  • 实例分割AI数据标注 ISAT自动标注工具使用方法
  • 【未】[启发式算法]含初始解要求的有:TS, GA, SA, DPSO
  • 计算机网络 : 网络基础
  • NAT转换和ICMP
  • AGI大模型(19):下载模型到本地之ModelScope(魔搭社区)
  • 运维实施31-NFS服务
  • 研华服务器ASMB-825主板无法识别PCIE-USB卡(笔记本)
  • 牛客网NC22222:超半的数
  • 【云实验】搭建个人网盘实验
  • leetcode0215. 数组中的第K个最大元素-medium
  • 1基·2台·3空间·6主体——蓝象智联解码可信数据空间的“数智密码”
  • 2025年长三角+山东省赛+ 认证杯二阶段论文发布!
  • 杰理ac696配置mic
  • QT6 源(104)篇一:阅读与注释QAction,其是窗体菜单栏与工具栏里的菜单项,先给出属性测试
  • 【Golang笔记01】Goland基础语法规则
  • 数字经济犯罪案件中的“双刃剑”电子数据
  • 【社论】城市更新,始终以人为核心
  • 央视起底“字画竞拍”网络传销案:涉案44亿元,受害者众多
  • 普京调整俄陆军高层人事任命
  • 上海黄浦江挡潮闸工程建设指挥部成立,组成人员名单公布
  • 获派驻6年后,中国驻厄瓜多尔大使陈国友即将离任
  • 普京确定俄乌谈判俄方代表团名单