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)
相关推荐
hu_yuchen2 分钟前
从单机到微服务的转型之路
redis·mysql·微服务
一只淡水鱼6621 分钟前
【mybatis】基本操作:详解Spring通过注解和XML的方式来操作mybatis
java·数据库·spring·mybatis
张声录123 分钟前
【ETCD】【实操篇(十六)】基于角色的访问控制:ETCD 安全管理指南
数据库·安全·etcd
warrah29 分钟前
redis——岁月云实战
数据库·redis·缓存
秀儿y29 分钟前
Redis-十大数据类型
数据库·redis·缓存·oracle
凡人的AI工具箱1 小时前
每天40分玩转Django:Django类视图
数据库·人工智能·后端·python·django·sqlite
知识的宝藏1 小时前
Django models中的增删改查与MySQL SQL的对应关系
sql·mysql·django·django models
路在脚下@1 小时前
MySQL的索引失效的原因有那些
数据库·mysql
凡人的AI工具箱1 小时前
每天40分玩转Django:实操图片分享社区
数据库·人工智能·后端·python·django
CT随1 小时前
MongoDB
数据库·mongodb