增(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)