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)
相关推荐
zandy10111 小时前
多租户SaaS架构下的BI数据隔离与权限治理体系
数据库·架构·数据加密
多巴胺梦想家1 小时前
NoSQL 数据库:不只是关系型
数据库·nosql
数字孪生家族1 小时前
3DGS 数据编辑单体化技术:将高斯重建转化为结构化数字空间资产
数据库·3d·高斯泼溅·空间智能应用
广州灵眸科技有限公司1 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) 系统操作-线进程操作
数据库·单片机·嵌入式硬件·算法·php
石一峰6992 小时前
驱动:私有数据为什么要在三个地方各挂一遍?
数据库·python·算法
摸鱼号20233 小时前
在 Rocky Linux 10.1 Minimal 上安装 MySQL 9.7 的血泪史:MariaDB 到底有多“根深蒂固”?
mysql
ClouGence3 小时前
跨云、跨地域数据同步,这样更省心
数据库·sql·saas
TDengine (老段)4 小时前
TDengine 函数完整参考 — 聚合、时序、字符串、时间、数学
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
TDengine (老段)4 小时前
昆仑数智选择 TDengine TSDB,提升页岩气生产运行可视化与精细化管理能力
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
陆水A5 小时前
【问数系统】SQL跑对了图表却空了?打通问数系统最后1公里的3个API坑
大数据·数据库·自然语言处理·big data·etl工程师