运算符 | 说明 |
---|---|
>, >=, , = | 大于,大于等于,小于,小于等于 |
= | 等于,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 个)任意字符;_ 表示任意一个字符 |
逻辑运算符:
运算符 | 说明 |
---|---|
AND | 多个条件必须都为 TRUE(1),结果才是 TRUE(1) |
OR | 任意一个条件为 TRUE(1), 结果为 TRUE(1) |
NOT | 条件为 TRUE(1),结果为 FALSE(0) |
注意:
实例:
基本查询:
-- 查询英语不及格的同学及英语成绩 ( 60 ) select name, english from exam_result where english 60; -- 查询语文成绩好于英语成绩的同学 select name, chinese, english from exam_result where chinese > english; -- 查询总分在 200 分以下的同学 select name, chinese + math + english as total from exam_result where chinese + math + english 200;
AND 与 OR:
-- 查询语文成绩大于80分,且英语成绩大于80分的同学 select * from exam_result where chinese > 80 and english > 80; -- 查询语文成绩大于80分,或英语成绩大于80分的同学 select * from exam_result where chinese > 80 or english > 80;
关于优先级问题, and 比 or 更优先,
范围查询:
1.BETWEEN … AND …
-- 查询语文成绩在 [80, 90] 分的同学及语文成绩 select name, chinese from exam_result where chinese BETWEEN 80 AND 90; select name, chinese, from exam_result where chinese >= 80 and chinese = 90;
IN
-- 查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩 select name, math from exam_result where math in (58, 59, 98, 99);
模糊查询: LIKE
select name from exam_result where name like 't%'; +------+ | name | +------+ | tom | | tim | +------+
% 是一个通配符, 可以用来代替任意多个字符
t% 找出以 t 开头的字符串
%t 找出以 t 结尾的字符串
%t% 找出包含 t 的
除了 % 之外, 还有 _ ,(_ 只能代表一个字符~)
select name from exam_result where name like 't__'; +------+ | name | +------+ | tom | | tim | +------+
通配符也能针对数字进行模糊查询
select name, chinese from exam_result where chinese like '%8%'; +------+---------+ | name | chinese | +------+---------+ | jum | 87.5 | | lim | 88.0 | | tim | 82.0 | +------+---------+
注意:
模糊查询看起来比较好用, 实际执行效率低下
NULL 的查询: IS [NOT] NULL
select name from exam_result where id id not null;
2.8 分页查询: LIMIT
-- 最初数据表 select * from exam_result; +------+------+---------+------+---------+ | id | name | chinese | math | english | +------+------+---------+------+---------+ | 1 | tom | 67.0 | 98.0 | 56.0 | | 2 | jum | 87.5 | 78.0 | 77.0 | | 3 | lim | 88.0 | 98.0 | 90.0 | | 4 | tim | 82.0 | 84.0 | 67.0 | | 5 | huy | 55.5 | 85.0 | 45.0 | | 6 | sun | 70.0 | 73.0 | 78.5 | | 7 | ming | 75.0 | 65.0 | 30.0 | +------+------+---------+------+---------+ -- 前三条记录 select * from exam_result limit 3; +------+------+---------+------+---------+ | id | name | chinese | math | english | +------+------+---------+------+---------+ | 1 | tom | 67.0 | 98.0 | 56.0 | | 2 | jum | 87.5 | 78.0 | 77.0 | | 3 | lim | 88.0 | 98.0 | 90.0 | +------+------+---------+------+---------+ -- 从第三条开始的三条记录 select * from exam_result limit 3 offset 3; +------+------+---------+------+---------+ | id | name | chinese | math | english | +------+------+---------+------+---------+ | 4 | tim | 82.0 | 84.0 | 67.0 | | 5 | huy | 55.5 | 85.0 | 45.0 | | 6 | sun | 70.0 | 73.0 | 78.5 | +------+------+---------+------+---------+
offset 表示从第几条开始查找, offset 可以省略
select * from exam_result limit 3 , 4; +------+------+---------+------+---------+ | id | name | chinese | math | english | +------+------+---------+------+---------+ | 4 | tim | 82.0 | 84.0 | 67.0 | | 5 | huy | 55.5 | 85.0 | 45.0 | | 6 | sun | 70.0 | 73.0 | 78.5 | | 7 | ming | 75.0 | 65.0 | 30.0 | +------+------+---------+------+---------+
– 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
update exam_result set math = math + 30 order by chinese + math + english limit 3;
update 不加条件, 就可以针对所有
delete from [表名];
-- 删除 ming 同学的考试成绩 delete from exam_result where name = 'ming'; -- 删除整张表 delete from exam_result;
如果不指定条件, 此时就把整个表删除掉了, (与 drop 删除表还有不同)
delete 删除后表为 null, drop 删除后表就不存在了
-- 单行插入 insert into [表名] (字段1, ..., 字段N) values (value1, ...,value N); -- 多行插入 insert into [表名](字段1, ..., 字段N) values (value1, ...), (value2, ...), (value3, ...);
查询
--全表查询 select * from [表名]; --指定列查询 select [列名1, 列名2,...] from [表名]; --查询表达式字段 select [表达式1, 表达式2,...] from [表名]; --别名 select --去重 DISTINCT select distinct [字段] from [表名]; -- 排序ORDER BY select * from [表名] order by [排序字段]; -- 条件查询WHERE -- (1)比较运算符 (2)BETWEEN ... AND ... (3)IN (4)IS NULL (5)LIKE (6)AND (7)OR (8)NOT select * from [表名] where [条件];
修改
update [表] set [修改内容1, 修改内容2, ....] where [条件];
删除
delete from [表名] where [条件];
到此这篇关于MySQL表增删改查的文章就介绍到这了,更多相关MySQL表增删改查内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!