MySQL数据库(四)

目录

一、查询(Retrieve)

1.1条件查询:where

1.1.1基本查询

1.1.2and与or

1.1.3范围查询

1.1.4模糊查询

1.1.5null的查询

1.2分页查询 limit

二、修改(Update) 

三、删除(Delete)

四、重点内容总结


一、查询(Retrieve)

1.1条件查询:where

比较运算符:

运算符 说明
>, >=, <, <= 大于,大于等于,小于,小于等于
= 等于,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)

1.1.1基本查询

-- 查询英语不及格的同学及英语成绩 ( < 60 )

 select name, english from exam_result where english < 60;

MySQL数据库(四)_第1张图片

-- 查询语文成绩好于英语成绩的同学

select name, chinese, english from exam_result
where chinese > english;

MySQL数据库(四)_第2张图片

-- 查询总分在 200 分以下的同学

select name, chinese + math + chinese as total from exam_result
where chinese + math + chinese < 200;

MySQL数据库(四)_第3张图片

注:where条件可以使用表达式,但不能使用别名。

1.1.2and与or

-- 查询语文成绩大于80分,且英语成绩大于80分的同学

select name, chinese, english from exam_result
where chinese > 80 and english > 80;

MySQL数据库(四)_第4张图片

-- 查询语文成绩大于80分,或英语成绩大于80分的同学

select name, chinese, english from exam_result
where chinese > 80 or english > 80;

MySQL数据库(四)_第5张图片

1.1.3范围查询

1. between ... and

--查询语文成绩在 [80, 90] 分的同学及语文成绩
select name, chinese from exam_result
where chinese between 80 and 90;

MySQL数据库(四)_第6张图片

-- 使用 and 也可以实现
select name, chinese from exam_result
where chinese > 80 and chinese < 90;

 MySQL数据库(四)_第7张图片

2.in

-- 查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

select name, math from exam_result
where math in (58,59,98,99);

MySQL数据库(四)_第8张图片

-- 使用 or 也可以实现
select name, math from exam_result
where math = 58 or math = 59 or math = 98 or math = 99;

MySQL数据库(四)_第9张图片

1.1.4模糊查询

-- % 匹配任意多个(包括 0 个)字符
select name from exam_result where name like '孙%'; --表示的查询否有孙某某

MySQL数据库(四)_第10张图片

select name from exam_result where name like '%孙';--查询的是某某孙,可看到我的表中并没有数据,为了验证时候合理,添加一条数据

 

MySQL数据库(四)_第11张图片

 再次进行查询可以发现某某孙已经被查询出来了

 MySQL数据库(四)_第12张图片

 select name from exam_result where name like '%孙%';--查询的是带有孙字的

MySQL数据库(四)_第13张图片

-- _ 匹配严格的一个任意字符
select name from exam_result where name like '孙_'; --_一个下划线就只能匹配一个字符

--__两个下划线表示两个字符

MySQL数据库(四)_第14张图片

 MySQL数据库(四)_第15张图片

1.1.5null的查询

-- 查询语文成绩已知的同学姓名
select name, chinese from exam_result where chinese is not null;

MySQL数据库(四)_第16张图片

-- 查询语文成绩未知的同学姓名
 select name, chinese from exam_result where chinese is null;

MySQL数据库(四)_第17张图片

1.2分页查询 limit

语法:

-- 起始下标为 0
-- 从 0 开始,筛选 n 条结果
select ... from table_name [where ...] [order by...] limit n;
-- 从 s 开始,筛选 n 条结果
select ... from table_name [where ...] [order by...] limit s, n;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
select ... from table_name [where ...] [order by...] limit n offset s;

案例:按 id 进行分页,每页 3 条记录,分别显示 第 1、2、3 页

--第 1 页
select * from exam_result order by id limit 3 offset 0;
-- 第 2 页
select * from exam_result order by id limit 3 offset 3;
-- 第 3 页,如果结果不足 3 个,不会有影响
select * from exam_result order by id limit 3 offset 6;

MySQL数据库(四)_第18张图片

 

二、修改(Update) 

语法:

update table_name set column = expr [, column = expr ...]
[where ...] [order by ...] [limit...]

案例:

为了观察表中数据是否有变化先记录一下当前表中数据

MySQL数据库(四)_第19张图片 

-- 将孙悟空同学的数学成绩变更为 80 分

update exam_result set math = 80 where name = '孙悟空';

MySQL数据库(四)_第20张图片

-- 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分

 update exam_result set math = 60 ,chinese = 70 where name = '曹孟德';

MySQL数据库(四)_第21张图片

-- 将总成绩倒数前三的 3 位同学的数学成绩加上 10 分

update exam_result set math = math + 10
order by chinese + math + english
limit 3;

为了观察数据是否有变化先将总成绩倒数前三的数据查询出来

MySQL数据库(四)_第22张图片

修改操作完毕,因为修改了分数就不能确保排名了,所以查询需要全列查询

MySQL数据库(四)_第23张图片

-- 将所有同学的语文成绩更新为原来的一半

update exam_result set chinese = 0.5*chinese;

MySQL数据库(四)_第24张图片

通过上述操作我们知道了修改操作其实是很危险的,在日后的工作中一定要谨慎使用!!!

三、删除(Delete)

语法:

delete from table_name [where...] [order by ...] [limit...]

案例:

-- 删除孙悟空同学的考试成绩

MySQL数据库(四)_第25张图片
同时这里也发现删除操作也是相当危险的操作,一定要谨慎使用!!!
 

四、重点内容总结

  • 新增

--单行插入
insert into 表(字段1, ..., 字段N) values (value1, ..., value N);
-- 多行插入
insert into 表(字段1, ..., 字段N) values
(value1, ...),
(value2, ...),
(value3, ...);

  • 查询

-- 全列查询
select * from 表
-- 指定列查询
select 字段1,字段2... from 表
-- 查询表达式字段
select 字段1+100,字段2+字段3 from 表
-- 别名
select 字段1 as 别名1, 字段2 as 别名2 from 表
-- 去重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=value1, 字段2=value2... where 条件

  • 删除

delete from 表 where 条件

你可能感兴趣的:(MySQL数据库,数据库,mysql)