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)
相关推荐
恒悦sunsite6 小时前
Ubuntu之apt安装ClickHouse数据库
数据库·clickhouse·ubuntu·列式存储·8123
奥尔特星云大使6 小时前
MySQL 慢查询日志slow query log
android·数据库·mysql·adb·慢日志·slow query log
来自宇宙的曹先生6 小时前
MySQL 存储引擎 API
数据库·mysql
间彧6 小时前
MySQL Performance Schema详解与实战应用
数据库
间彧6 小时前
MySQL Exporter采集的关键指标有哪些,如何解读这些指标?
数据库
weixin_446260857 小时前
Django - 让开发变得简单高效的Web框架
前端·数据库·django
mpHH7 小时前
babelfish for postgresql 分析--todo
数据库·postgresql
zizisuo7 小时前
解决在使用Lombok时maven install 找不到符号的问题
java·数据库·maven
老苏畅谈运维8 小时前
Oracle的connect by level在MySQL中的华丽变身
mysql·oracle
程序边界9 小时前
国产之光!金仓数据库KingbaseES Oracle兼容性深度体验大赏
数据库·oracle