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

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 = '广州';
http://www.xdnf.cn/news/6825.html

相关文章:

  • 【Win32 API】 lstrcpyA()
  • Python3.12之解决:externally-managed-environment问题(二十九)
  • 薄膜压力传感器主要应用场景
  • STM32外设AD-轮询法读取模板
  • 系统架构设计师案例分析题——web篇
  • 软考 系统架构设计师系列知识点之杂项集萃(61)
  • vue.js中的列表过滤+排序
  • Qt窗口中消除边框的解决方法
  • DAY24元组和OS模块
  • 【mysql】并发 Insert 的死锁问题 第二弹
  • Spring actuator
  • SQLMesh 增量模型从入门到精通:5步实现高效数据处理
  • 云、边、端
  • Echart设置圆饼图pie中间文字排版
  • 物体雅克比、空间雅克比、解析雅克比、几何雅克比
  • JDK 9中对字符串的拼接做了什么
  • 几个正整数常用的位运算操作
  • 获取淘宝商品评论API接口(item_review)返回参数说明。
  • 项目依赖版本修改
  • 浮点数截断法:四舍五入的精确模拟
  • 第三十二节:特征检测与描述-Harris 角点检测
  • 实变函数 第二章 点集
  • 数据结构与算法——单链表(续)
  • NoSQL数据库复习题目要点
  • 北斗导航 | 基于深度学习的卫星导航数据训练——检测识别故障卫星
  • windows编程:LIB和OBJ格式文件解析
  • 【Linux网络】数据链路层
  • buuctf Crypto-鸡藕椒盐味1
  • 现代计算机图形学Games101入门笔记(十一)
  • AML 数据集