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)
相关推荐
小光学长12 分钟前
基于vue框架的宠物寻回小程序8g7el(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
数据库
一叶飘零_sweeeet14 分钟前
深入理解 MySQL MVCC:多版本并发控制的核心机制
数据库·mysql
中文很快乐23 分钟前
springboot结合p6spy进行SQL监控
java·数据库·sql
小电玩25 分钟前
谈谈你对Spring的理解
java·数据库·spring
小光学长30 分钟前
基于flask+vue框架的传染病防控酒店信息系统zvt93(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
数据库
M-bao40 分钟前
1000w条数据插入mysql如何设计?
数据库·mysql
666786661 小时前
Mysql高级篇(中)—— SQL优化
linux·运维·服务器·数据库·sql·mysql
十年人间~1 小时前
mysql等保数据库命令
数据库·mysql
Amagi.1 小时前
Redis的内存淘汰策略
数据库·redis·mybatis
hai4117419621 小时前
mysql 与postgresql 的区别(gpt4)
数据库·mysql·postgresql