MySQL表的增删改查
1、CRUD
- 注释:在SQL中可以使用“–空格+描述”来表示注释说明
CRUD
:增加(create)、查询(Rereieve)、更新(Update)、删除(Delete)
2、新增(create)
2.0、语法
insert [into] tablename[(column,...)] values();
案例:
drop table if exists student;
create table if not exists student(
id int,
name varchar(20) comment '姓名',
birthday timestamp,
amout decimal(13,2)
);
2.1、单行数据 + 全列插入
insert into student values(1,'张三','1998-02-02',12.45);
insert student values(2,'李四','1998-03-03',120.45);
2.2、多行数据 + 指定列插入
insert into student(id,birthday,amout) values(3,'2020-09-08',234.45),(4,'2020-07-06',23456.7);
3、查询(Retrieve)
3.0、语法
select [distinct]
[from tablename]
[where ...]
[order by column]
[limit ...]
3.1、全列查询
select * from tablename;
3.2、指定列查询
select id,name from tablename;
3.3、查询字段为表达式
select id,name,amout+1 from tablename;
3.4、别名(as)
select column [as] newname from tablename;
3.5、去重(distinct)
使用DISTINCT关键字对某列数据进行去重:
select distinct column from tablename;
3.6、排序(order by)
ASC: 升序(从小到大)— 默认
DESC:降序(从大到小)
select ... from tablename [where ...]
order by column [ASC/DESC],[...]
注意:
1、没有 order by
子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
2、NULL 数据排序,视为比任何值都小
3、使用表达式及别名排序
select name,amout+id from tablename order by (amout+id) desc;
select name,amout+id as newamout from tablename order by newamout desc;
4、可以对多个字段进行排序,排序优先级随书写顺序
SELECT name, math, english, chinese FROM exam_result
ORDER BY math DESC, english, chinese;
3.7、条件查询(where)
1、比较运算符
运算符 | 说明 |
---|---|
>,>=,<,<= | 大于,大于等于,小于,小于等于 |
= | 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL |
<=> | 等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1) |
!=, <> | 不等于 |
BETWEEN a0 AND a1 | 范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1) |
IN (option, …) | 如果是 option 中的任意一个,返回 TRUE(1) |
IS NULL | 是 NULL |
IS NOT NULL | 不是 NULL |
LIKE | 模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符 |
2、逻辑运算符
运算符 | 说明 |
---|---|
AND | 多个条件必须都为 TRUE(1),结果才是 TRUE(1) |
OR | 任意一个条件为 TRUE(1), 结果为 TRUE(1) |
NOT | 条件为 TRUE(1),结果为 FALSE(0) |
注意:
1、where 条件可以使用表达式,但不能使用别名
2、AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分
3.8、分页查询(limit)
起始是从 0 开始的,不是 1
-- 从 0 开始,筛选 n 条结果
select ... from tablename [where ...] [order by ...] limit n;
-- 从 s 开始,筛选 n 条结果
select ... from tablename [where ...] [order by ...] limit s,n;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
select ... from tablename [where ...] [order by ...] limit n offset s;
4、修改(update)
语法
update tablename set column = expr [...] [where ...] [order by ...] [limit ...]
5、删除(delete)
语法
delete from tablename [where ...] [order by ...] [limit ...]