MySQL表的基础的增删改查

增(insert into)

插入所有列的数据

不写具体列名要确保字段都对应正确

sql 复制代码
-- 假设你有一个名为 "employees" 的表,有多个列
INSERT INTO employees
VALUES (101, 'Alice', 'Manager', 50000);

插入指定列的数据

sql 复制代码
-- 假设你有一个名为 "students" 的表,有 id、name 和 age 列
INSERT INTO students (name, age)
VALUES ('John', 20);

一次插入多行数据

sql 复制代码
INSERT INTO students (name, age)
VALUES
    ('John', 20),
    ('Alice', 22),
    ('Bob', 21),
    ('Emma', 23);

查(select from)

全列查询*

使用通配符*

语法

sql 复制代码
select * from 表名;

注意

  • 一般情况下不建议使用全列查询, 不然数据太多影响性能甚至出现问题

指定列查询

语法

sql 复制代码
select 列名1,列名2,... from 表名;

注意

  • 列名可以不按顺序写

查询字段为表达式

举例

sql 复制代码
select id,name,10 from user;
-- 打印id列,name列,还有"10"列这列每行数据都是10

select id,name,english+10 from exam;
-- 打印id列,name列,(english+10)列这列每个数据都是原始的english数据+10

select id,name,chinese+math+english from exam;
-- 同理

别名as

为查询结果中的列指定别名,结果集中以别名作为该列的名称

举例

sql 复制代码
select id,name,chinese+math+english as '总分' from exam;

注意

  • as不加不报错, 建议加

去重distinct

对某列数据进行去重, 针对的是每行所有的列数据

示例

sql 复制代码
select id,math from exam;
-- 当math有重复的时候,都会打印

select distinct id,math from exam;
-- 当id和math完全重复时只显示一个

排序order by

举例(ASC升序,DESC降序)

sql 复制代码
select name,math from exam order by math ASC;
-- 按math升序排序

select name,chinese from exam order by chinese DESC;
-- 按chinese降序排序

对于null的排序

  • null与正常数据比较, 都是最小的, 升序就在上面降序就在下面
  • null与别的值比较都会返回false
  • null和0是两个东西
  • null与任何值运算都是null

使用表达式及别名排序

sql 复制代码
select name,chinese+math+english as total from exam order by total DESC;
-- order by 后面也可以写表达式

多字段排序

sql 复制代码
select name,chinese,math,english from exam order by chinese DESC,math ASC,english ASC;
-- 先按chinese降序排序,当分数相同时再按math升序排序,要是又一样按english升序排序

条件查询where

运算符说明

运算符 说明
>, >= <,<= 字面意思
= 等于
null不安全, null=null结果是null
<=> 等于
null安全, null=null结果是true
!=, <> 不等于
between A and B 如果x属于[A,B], 返回true
in (A,B,C,D,...) 如果x属于A,B,C,D,...其中一个就返回true
is null 字面意思
is not null 字面意思
like 模糊匹配
% 表示0~任意多个字符
_表示任意一个字符
and 字面意思
or 字面意思
not 字面意思

注意

  • where后面不可以用别名
  • and的优先级高于or, 可以搭配括号

分页查询limit

举例

sql 复制代码
-- 按id分页, 每页3个记录, 分别显示1,2,3页

-- 第1页
select * from exam order by id limit 3 offset 0;
-- 第2页
select * from exam order by id limit 3 offset 3;
-- 第3页
select * from exam order by id limit 3 offset 6;

-- limit限制每页数量, offset表示从第几行开始显示


-- 从0开始往后查3条
select * from exam order by id limit 0,3;

改(update tablename set)

说明

要配合where限定条件找到需要修改的数据

语法

sql 复制代码
update 表名 set 列名=数据 (限定条件);

举例

sql 复制代码
update exam set math=99 where name='张三';

update exam set math=99,chinese=88 where name='李四';

-- 将总成绩倒数前三的人数学成绩加10分
update exam set math=math+10 order by(chinese+math+english) ASC limit 3;

删(delete from tablename)

说明

要配合where限定条件找到需要修改的数据

语法

sql 复制代码
delete from 表名 (where) (order by) (limit)
相关推荐
PyHaVolask25 分钟前
SQL注入漏洞原理
数据库·sql
ptc学习者35 分钟前
黑格尔时代后崩解的辩证法
数据库
代码游侠39 分钟前
应用——智能配电箱监控系统
linux·服务器·数据库·笔记·算法·sqlite
!chen1 小时前
EF Core自定义映射PostgreSQL原生函数
数据库·postgresql
霖霖总总1 小时前
[小技巧14]MySQL 8.0 系统变量设置全解析:SET GLOBAL、SET PERSIST 与 SET PERSIST_ONLY 的区别与应用
数据库·mysql
马克学长1 小时前
SSM校园食堂订餐系统531p9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·ssm 校园食堂订餐系统
alonewolf_991 小时前
深入剖析MySQL索引底层:B+树、联合索引与跳跃扫描原理全解
数据库·b树·mysql
oMcLin1 小时前
如何在 AlmaLinux 9 上配置并优化 Redis 集群,支持高并发的实时数据缓存与快速查询?
数据库·redis·缓存
oMcLin1 小时前
如何在Debian 11上通过配置MySQL 8.0的分布式架构,提升跨区域数据同步的效率与延迟?
分布式·mysql·debian
洛阳纸贵2 小时前
Redis
数据库·redis·缓存