0


MySQL 增删查改基础版

增删查改

插入

插入全部列

插入就是增加的意思。先创建一个学生表:

createtable student(id int,name varchar(50),age int,score double(3,1));

然后插入数据,insert into 表名 values(表里面的值); 。四个数据对应的是:班级,名字,年龄。成绩:

insertinto student values(1,'zhangsan',19,98.5);

这里先介绍一个简单查询全表的语句:

select*from student;

运行结果如下:
在这里插入图片描述

同时插入多条记录

插入的时候,一个括号代表一条记录。多个括号就是同时插入多条记录。代码如下:

insertinto student values(2,'李四',20,98.0),(3,'王五',21,97);

在这里插入图片描述

插入部分列

在插入部分列的时候,在表名后面加个括号,里面写上要插入的列就好,然后在 values 后面的括号内填入要插入列的数值就好。未插入的列的值就是 NULL 。代码如下:

insertinto student (id,name)values(10,'Lockey');

运行结果如下:
在这里插入图片描述

查找

查询是数据库当中用的最多的一种操作。也是考点最多的方式。

全列查找

全列查找就是把一个表的所有的列,所有的行都查询出来。select * from 表名; * 是通配符,表示一个表的所有列。代码如下:

select*from student;

运行结果如下:
在这里插入图片描述
不过这个操作也是很危险的操作。如果数据量很大的话,很容易把服务器挤爆。

查找部分列

在查找的时候,也可以只查找部分列。select 列名,列名 from 表名; 先创建一个包含多个列的表:

createtable exam_result(id int, name varchar(50),chinese decimal(3,1),math decimal(3,1),english decimal(3,1));

然后插入多个数据:

INSERTINTO exam_result (id,name, chinese, math, english)VALUES(1,'qqq',67,98,56),(2,'www',87.5,78,77),(3,'eee',88,98.5,90),(4,'rrr',82,84,67),(5,'ttt',55.5,85,45),(6,'yyy',70,73,78.5),(7,'uuu',75,65,30);

现在只在表中查询 名字 和 语文成绩 ,代码如下:

select name,chinese from exam_result;

运行结果如下:
在这里插入图片描述
这里通过查询就筛选出了由 名字 和 语文成绩 组成的表。

查询的时候进行运算操作

进行运算就是查询的时候,同时进行一些运算操作(列和列之间)。例如:期望查询结果中的语文成绩比实际多 10 分。代码如下:

select name,chinese +10from exam_result;

运行结果如下:
在这里插入图片描述
要注意的是,这里的查询结果都是临时表。并不会对原始数据作出修改。

查询每个学生的总分

查询总分的时候,把所以成绩加起来就好,代码如下:

select name,chinese + math + english from exam_result;

这里是把语文,数学,英语的成绩加起来。运行结果如下
在这里插入图片描述

给查询的临时表起别名

在列名之后通过 as 就可以给查询的临时表起别名了。select 列名 as 别名 from 表名; 代码如下:

select name,chinese + math + english as total from exam_result;

运行结果如下:
在这里插入图片描述

针对查询结果去重

使用 distinct 针对查询的结果,将相同的结果去掉。代码如下:

selectdistinct math from exam_result;

运行结果如下:
在这里插入图片描述

多个列去重

如果要针对多个列进行去重,就得这多个列的值都相同才能去重:

selectdistinct math,english from exam_result;

运行结果如下:
在这里插入图片描述

按照总成绩排序

在排序的时候,通过 order by 来进行排序。select 列名 from 表名 order by 列名 asc/desc; desc 代表升序和降序。升序排序可以默认不写代码如下:

select name,chinese + math + english from exam_result orderby chinese + math + english;

运行结果如下:
在这里插入图片描述

按照别名来排序

将总成绩换为别名,然后进行排序。代码如下:

select name,chinese + math + english as total from exam_result orderby total;

运行结果如下:
在这里插入图片描述
如果数据库当中是带有 NULL 值的,按照升序是最前面,按照降序是最后面,也就是说:空值是最小值。先插入一个带有空值的数据:

insertinto exam_result values(8,'酷酷酷',null,null,null);

带有空值的运行结果如下:
在这里插入图片描述

对查询结果按照某一列进行排序

对查询的结果按照数学成绩进行排序,代码如下:

select*from exam_result orderby math asc;

运行结果如下:
在这里插入图片描述
结果就是按照数学成绩进行升序排序了。

根据多个列进行排序

在排序的时候,如果两个值相同的话,那么就可以再指定一个列来进行排序。这里使用数学和语文举例。当数学成绩一样的时候,就根据语文成绩进行排序。代码如下:

select name,math,chinese from exam_result orderby math,chinese;

运行结果如下:
在这里插入图片描述

条件查询

条件查询的时候,主要用到的是 where 。在 where 后面加一些条件来进行查询。

查询某一列小于某个值

要查询某一列小于某个值的数据的时候,在 where 后面加条件就好。select 列名,列名 from 表名 where 某一列 < 60; 代码如下:

select name,english from exam_result where english <60;

运行结果如下:
在这里插入图片描述

列和列之间的比较

在比较的时候,通过 where 就可以。代码如下:

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

要注意的是:前面的 name 和 english 和 chinese 只是查出来的表的显示内容。并不是条件。运行结果如下:
在这里插入图片描述

并且条件查询

在查询的时候,通过 and 来连接多个条件进行查询,and 是并且的意思。代码如下:

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

这里查询的是 语文和英语 都大于 80 的学生。运行结果如下:
在这里插入图片描述

或者条件查询

通过 or 来完成对或者条件的查询,代码如下:

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

这里查询的是 语文或者英语 负数大于 80 的学生。运行结果如下:
在这里插入图片描述

and 和 or 的优先级

在 SQL 当中 and 的优先级比 or 的优先级大,如果想打破优先级,就需要加括号。比如下面的代码:

select*from exam_result where(chinese >80or math >70)and english >70;

这里就是先比较括号里面的,然后再 and 比较。运行结果如下:
在这里插入图片描述

between 方法

between 就是介于两者之间的表示,要注意的是 between 两边都是闭区间。代码如下:

select*from exam_result where chinese between80and90;

就是选出语文成绩 大于等于 80,小于等于 90 的学生。运行结果如下:
在这里插入图片描述

in 方法

in 方法就是给定几个值,如果有满足这些数据的时候,就输出。代码如下:

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

这里筛选的就是数学成绩在:58,58,98,99 当中。运行结果如下:
在这里插入图片描述

模糊匹配 like

模糊匹配就是有一些关键字一样就可以查询出来。like 查询的时候要搭配通配符来使用

% 通配符

通过 % 通配符就可以进行模糊查询,% 可以代表任意字符,包含 0 个字符。代码如下:

select*from exam_result where name like'q%';

这里查询出来的是以 q 开头的名字。运行结果如下:
在这里插入图片描述

_ 下划线

下划线通配符,一个下划线只能匹配到一个字符。代码如下:

select*from exam_result where name like'q__';

这里查询的是以 q 开头的三个符号。运行结果如下:
在这里插入图片描述

查找 NULL 成绩

查找 NULL 成绩的时候,有两种方法:

  1. 通过 <=> 来判断是不是
  2. 通过 is null 来判断是不是

<=>

通过 <=> 来判断,代码如下:

select*from exam_result where chinese <=>null;

运行结果如下:
在这里插入图片描述

is null

is null 也是判断 空 的一中方法,代码如下:

select*from exam_result where chinese isnull;

运行结果如下:
在这里插入图片描述

分页查询 limit

分页查询当中,使用 limit 来进行分页。代码如下:

select*from exam_result limit3;

运行结果如下:
在这里插入图片描述
这里的 limit 限制是 3,也就是一页显示 3 条记录。

offset

offset 是配合 limit 来使用的,就是从 offset 这个位置去查找。代码如下:

select*from exam_result limit3offset3;

运行结果如下:
在这里插入图片描述

搭配条件使用

limit 可以搭配 条件,以及 order by 等操作来组合使用。代码如下:

select name,chinese + math + english as total from exam_result orderby total desclimit3;

运行结果如下:
在这里插入图片描述

修改

修改主要是使用 update 来进行的。修改: update 表名 set 列名 = 值,列名 = 值 where 条件; where 后面的条件,是针对哪些进行修改。符合 where 条件的就会修改,不符合就不修改。如果 where 省略了,就是修改所有记录。在修改的时候会把原始数据修改。

使用 where 来修改

通过 where 后面加条件就可以完成修改。代码如下:

update exam_result set math =98where name ='eee';

运行结果如下:
在这里插入图片描述

一次修改多个数值

在修改的时候可以一次修改多个数值,代码如下:

update exam_result set math =60, chinese =70where name ='uuu';

运行结果如下:
在这里插入图片描述

对前几个序列进行修改

在对前几个序列进行修改的时候,可以通过 order by 来进行排序,然后再通过 limit 来限制前几个序列,然后修改就好了。代码如下:

update exam_result set math = math +10orderby chinese + math + english limit3;

这里是对总成绩倒数前三的人的数学成绩加上 10 分。运行结果如下:
在这里插入图片描述

修改全部数据

修改全部数据的时候,只要不加 where 就可以了。例如:把语文成绩全部修改为原来的一半。代码如下:

update exam_result set chinese = chinese /2;

运行结果如下:
在这里插入图片描述

删除

删除操作的时候,使用的是 delete 关键字。delete from 表名 where 条件;

使用 where 删除

在 where 后面加上条件就好了。代码如下:

deletefrom exam_result where id =6;

这里就是删除 id 为 6 的信息。运行结果如下:
在这里插入图片描述

删掉所有数据

删掉所有数据的时候,就不用加 where 了。要注意删除的时候一定写准条件,不然写错就可能删掉很多数据。代码如下:

deletefrom exam_result;

运行结果如下:
在这里插入图片描述

标签: MySQL 增删查改

本文转载自: https://blog.csdn.net/sjp151/article/details/123584301
版权归原作者 Lockey-s 所有, 如有侵权,请联系我们删除。

“MySQL 增删查改基础版”的评论:

还没有评论