CRUD 即 增加(Create)、 查询(Retrieve)、 更新(Update)、 删 除(Delete)四个单词的首字母缩写 首先创建一张表:
drop table IF EXISTS student;
create table student(
id INT,
sn INT, -- 学号
name VARCHAR(20), -- 姓名
qq_mail VARCHAR(20) -- QQ邮箱
);
一、新增(Create)
(一)、插入数据方式
1.单行数据+全列插入
insert into student values (1,101,'张三','[email protected]');
insert into student values (2,201,'李四','[email protected]');
2、多行数据 + 指定列插入
insert into student (id,sn,name,qq_mail) values
(3,301,'王五','[email protected]'),
(4,401,'赵六','[email protected]');
二、 查询(Retrieve)
select column1, column2, ... from table_name [WHERE condition] [ORDER BY column_name [ASC | DESC]] [LIMIT number];
案列:创建一个考试成绩表
DROP TABLE IF EXISTS exam_result;
CREATE TABLE exam_result (
id INT,
name VARCHAR(20),
chinese DECIMAL(3,1),
math DECIMAL(3,1),
english DECIMAL(3,1)
);
INSERT INTO exam_result (id,name, chinese, math, english) VALUES
(1,'唐三藏', 67, 98, 56),
(2,'孙悟空', 87.5, 78, 77),
(3,'猪悟能', 88, 98.5, 90),
(4,'曹孟德', 82, 84, 67),
(5,'刘玄德', 55.5, 85, 45),
(6,'孙权', 70, 73, 78.5),
(7,'宋公明', 75, 65, 30);
(一)、查询方式
1、全列查询
通常情况下不建议使用*全列查询
1、查询的列越多,意味着需要传输的数据量越大;
2、可能会影响到索引的使用。
select * from exam_result;
2、指定列查询
指定列的顺序不需要按照表中的列顺序来。
select id,name,chinese from exam_result;
3、查询字段为表达式
-- 表达式不包含字段
SELECT id, name, 10 FROM exam_result;
-- 表达式包含一个字段
SELECT id, name, english + 10 FROM exam_result;
-- 表达式包含多个字段
SELECT id, name, chinese + math + english FROM exam_result;
4 、别名
为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称,语法:
SELECT column [ AS ] alias_name [...] FROM table_name ;
这里的总分就是我们定义的别名:
SELECT id, name, chinese + math + english 总分 FROM exam_result;
5 、去重:DISTINCT
使用 DISTINCT 关键字对某列数据进行去重:
比如我们这里对重复的数学成绩去重:
select distinct math from exam_result;
6、 排序:ORDER BY
语法:
-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];
1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序 。
2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面。
查询同学姓名和 English,按 English 排序显示
升序排列:
SELECT name, English FROM exam_result ORDER BY English;
降序排列:
SELECT name, English FROM exam_result ORDER BY English desc;
7、条件查询 WHERE
当使用 SELECT 语句进行查询时,MySQL 允许用户对表达式的左边操作数和右边操作数进行比较,比较结果为真,则返回 1,为假则返回 0,比较结果不确定则返回 NULL。MySQL 支持的
比较运算符如下表所示
逻辑运算符:and 的优先级要高于 or。
注 :
1. WHERE 条件可以使用表达式,但不能使用别名。
2. AND 的优先级高于 OR ,在同时使用时,需要使用小括号 () 包裹优先执行的部分。
(1)、基本查询
-- 查询英语不及格的同学及英语成绩 ( < 60 )
SELECT name, english FROM exam_result WHERE english < 60;
-- 查询语文成绩好于英语成绩的同学
SELECT name, chinese, english FROM exam_result WHERE chinese > english;
(2)、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 ;
(3)范围查询
1、between …… and……
查询语文成绩在80-90之间的学生姓名;
SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;
2、in
-- 查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
SELECT name, math FROM exam_result WHERE math IN (58, 59, 98, 99);
(4)模糊查询:LIKE
-- % 匹配任意多个(包括 0 个)字符
SELECT name FROM exam_result WHERE name LIKE '孙%';__ 匹配到孙悟空、孙权
-- _ 匹配严格的一个任意字符
SELECT name FROM exam_result WHERE name LIKE '孙_';__ 匹配到孙权
(5) 分页查询: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进行分页,每页三条记录
select id,name,math,english,chinese from exam_result order by id limit 3 offset 0;
select id,name,math,english,chinese from exam_result order by id limit 3 offset 3;
select id,name,math,english,chinese from exam_result order by id limit 3 offset 6;
三、 修改(Update)
UPDATE table_name SET column = expr [, column = expr ...]
[ WHERE ...] [ ORDER BY ...] [ LIMIT ...]
-- 将孙悟空同学的数学成绩变更为 80 分
UPDATE exam_result SET math = 80 WHERE name = ' 孙悟空 ' ;
-- 将总成绩倒数前三的 3 位同学的数学成绩加上 1 分
UPDATE exam_result SET math = math + 1 ORDER BY chinese + math + english LIMIT 3 ;
四、删除(Delete)
DELETE FROM table_name [WHERE ...]
删除孙权的考试成绩
DELETE FROM exam_result where name = '孙权';
以上就是关于MySQL增删改查的基础部分全部内容了,学习MySQL难度不是很高,重要的是多加练习提高熟练度
标签:...,exam,--,改查,result,MySQL,增删,SELECT,name From: https://blog.csdn.net/weixin_72703349/article/details/142438334