【MySQL】如何速通MySQL(2)

📌前言:本篇博客介绍如何速通MySQL的第二篇,主要介绍Mysql中主要的基础的入门,学习MySQL之前要先安装好MySQL,如果还没有安装的小伙伴可以看看博主前面的博客,里面有详细的安装教程。或者看一下下面这个链接,以及第一篇还没看的也建议先看第一篇噢~

🚀如何安装Mysql
🚀【MySQL】如何速通MySQL(1)

在第一篇如何速通MySQL中我们学习了Mysql的基础概念以及关于库的操作和表的操作,但是对于表的操作我们只学习了创建和删除,而对于MySQL表的数据操作还没有学习,所以本篇博客就对MySQL中的增删改查进行详细的学习~话不多说,走起!

MySQL如何速通MySQL

  • 一、MySQL增删改查(基础)
    • 1.增加数据
    • 2.查看数据
      • 1️⃣全列查询
      • 2️⃣指定列查询
      • 3️⃣表达式查询
      • 4️⃣去重查询
      • 5️⃣排序查询
      • 6️⃣条件查询
      • 7️⃣分页查询
    • 3.修改数据
    • 4.删除数据

一、MySQL增删改查(基础)

对于MySQL的增删改查,实际上对应的我们称作CRUD,其实也是我们日常生活工作中最经常干的东西。那么CRUD是什么呢?

⭐CRUD是指在关系型数据库中,对数据进行创建(Create)、读取查询(Retrieve)、更新(Update)、删除(Delete)的操作。

具体含义如下:

🟢创建(Create):向数据库中增加新的数据记录。
🔵读取查询(Retrieve):从数据库中查询和获取数据记录。
🟡更新(Update):修改数据库中已经存在的数据记录。
🔴删除(Delete):从数据库中删除数据记录。

对应到表中数据也是差不多的,只是语法略有不同。

1.增加数据

而对于这几个操作中,最复杂的就是查,所以我们先从增开始学习,毕竟不增的话没有数据查个什么玩意。相应语法也很简单:

//1.插入一条数据
insert into [表名] values (值,,...;

//2.插入多条数据
insert into [表名] values (值,,...,(值,,......;

比如:

mysql> use happy;//在重新登录数据库时,记得先选中要操作的数据库
Database changed//提示数据库切换成功
mysql> insert into student values (1,'lisa');//向student表插入数据
Query OK, 1 row affected (0.01 sec)//插入成功,1行受影响
mysql> insert into student values (2,'faker'),(3,'joker'),(4,'thesky');//插入三个人的数据
Query OK, 3 rows affected (0.00 sec)//插入成功,3行受影响

这里在插入数据的时候需要注意以下几点:

✅插入数据时,数据要和表结构相对应,也就是类型要匹配。
✅插入数据时,可以为空,写上null,数据库会自动填充默认值
✅插入数据时,要注意括号内值之间是用英文逗号分隔
✅插入多条数据时,可以一条一条插,但是效率会低很多


2.查看数据

学会了插入数据当然要看看有没有插入成功,所以我们可以通过查数据来看看数据表中是否插入成功,所以我们可以输入命令:

1️⃣全列查询

select * from [表名]//全列查找

比如:

mysql> select * from student;//查看student表的数据
+------+--------+
| id   | name   |
+------+--------+
|    1 | lisa   |
|    2 | faker  |
|    3 | joker  |
|    4 | thesky |
|    5 | NULL   |
|    6 | NULL   |
| NULL | la     |
+------+--------+//显示为一个表的形式
7 rows in set (0.00 sec)//查到7行

而上面的语法中,我们在后面注释着是全列查询,也就是说,我们现在查看的是整个表的数据,其中的select * from student其实可以这样理解:

2️⃣指定列查询

所以我们也可以使用指定列查询,语法为:

select [列名] from [表名]//指定列查询

比如:

mysql> select id from student;//喂,我是阿sir,只查id
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
|    5 |
|    6 |
| NULL |
+------+
7 rows in set (0.00 sec)

3️⃣表达式查询

有时候我们需要在查的数据中去稍微操一下~比如说期末考试咱挂了老师可能帮我们捞捞,就给咱数学成绩上加上10分,这时候就可以直接是这样子,我们先创建好演示表:

//以下代码为创建演示表代码
mysql> create table score (id int, name varchar(20), math decimal(3,1), chinese decimal(3,1), english decimal(3,1));
Query OK, 0 rows affected (0.02 sec)

mysql> insert into score values(1,'jame',88.5,91,66);
Query OK, 1 row affected (0.00 sec)

mysql> insert into score values(2,'curry',99,85.5,67);
Query OK, 1 row affected (0.00 sec)

mysql> insert into score values(3,'tatuo',55,75.5,87);
Query OK, 1 row affected (0.00 sec)

mysql> select * from score;
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    1 | jame  | 88.5 |    91.0 |    66.0 |
|    2 | curry | 99.0 |    85.5 |    67.0 |
|    3 | tatuo | 55.0 |    75.5 |    87.0 |
+------+-------+------+---------+---------+
2 rows in set (0.00 sec)

创建完成之后,如果我们想在查询数学成绩,并且希望老师大发慈悲给我们多加点分,让不合格的同学看到希望:

select [表达式] from [表名]//表达式查询

mysql> select math+10 from score;//查询表中数学成绩并显示加10分的
+---------+
| math+10 |
+---------+
|    98.5 |
|   109.0 |
|    65.0 |
+---------+//对比上面数据都加上了10分了
3 rows in set (0.00 sec)

这里会有同学有问题说,我们创建的math也就是数学成绩的类型是decimal(3,1),这里显示的109.0很明显就不符合了,很明显就存不进去吧,咋还能显示?

▶查询的数据相当于一个临时表,所以并不影响原始表内的成绩数据。

也就是说,MySQL是一个"客户端—服务器"结构的程序,所以在用户在客户端输入sql,是通过请求发送给服务器,服务器解析并执行sql把查询的结果从硬盘读取出来,通过网络响应还给客户端,客户端把这些数据按临时表的形式展示出来。

除了给数学+10,还可以查数语英总成绩:

mysql> select name,math+chinese+english from score;
//查看各位同学,以及语数英总成绩
+-------+----------------------+
| name  | math+chinese+english |
+-------+----------------------+
| jame  |                245.5 |
| curry |                251.5 |
| tatuo |                217.5 |
+-------+----------------------+
3 rows in set (0.00 sec)

然后这里大家觉不觉得,这查的也太难看了,math+10,虽然说被老师捞了很幸运,但是这也露的太明显了,或者觉得上面语数英太长了,这显示结果的名字能不能改一下啊,你还别说,可以改!我们用到as就可以啦:

select [表达式] as [别名] from [表名];
mysql> select math+10 as new_math from score;//把成绩+10别名为new_math
+----------+
| new_math |
+----------+
|     98.5 |
|    109.0 |
|     65.0 |
+----------+
3 rows in set (0.00 sec)

mysql> select name,math+chinese+english as total from score;//语数英相加别名为total
+-------+-------+
| name  | total |
+-------+-------+
| jame  | 245.5 |
| curry | 251.5 |
| tatuo | 217.5 |
+-------+-------+
3 rows in set (0.00 sec)

同样的,这个别名跟绰号一样,不一定要表达式,你也可以把math as为new_math,这里相当于用别名显示。

4️⃣去重查询

对于一些相同的数据来说,有时候我们只需要一个结果,比如说我想看看这个班上数学都有哪些分数,如果有好几个同分,那查出来的表就比较冗余了,所以我们有一个去重查询:

select distinct [列名] from [表名]// distinct去重查询

比如:

mysql> insert into score values(4,'lisa',55,65.5,81);//先在刚刚的表加个同分的数学
Query OK, 1 row affected (0.00 sec)
mysql> select * from score;//表内现状
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    1 | jame  | 88.5 |    91.0 |    66.0 |
|    2 | curry | 99.0 |    85.5 |    67.0 |
|    3 | tatuo | 55.0 |    75.5 |    87.0 |
|    4 | lisa  | 55.0 |    65.5 |    81.0 |
+------+-------+------+---------+---------+
4 rows in set (0.00 sec)
mysql> select distinct math from score;//查询数学成绩并去重
+------+
| math |
+------+
| 88.5 |
| 99.0 |
| 55.0 |
+------+
3 rows in set (0.00 sec)

5️⃣排序查询

正如上面看到的,我们的数学成绩列出来了,但是看着不太行啊,感觉没有excel表那种赏心悦目,原来是没有按数字排序,看着怪别扭,所以我们可以用以下语法对查询结果进行排序:

select [列名] from [表名] order by [列名]//查询结果排序 order by(默认升序)
select [列名] from [表名] order by [列名] desc//查询结果排序降序

并且我们可以查询多个列,什么语文啊英语啊一起查,然后还是按数学成绩排序,也是可以的,这样就可以优先看到我们想看到的数据啦~

比如:

mysql> select math from score order by math;//就查数学然后按数学排序,默认升序排列
+------+
| math |
+------+
| 55.0 |
| 55.0 |
| 88.5 |
| 99.0 |
+------+
4 rows in set (0.00 sec)
mysql> select * from score order by math desc;//加上desc就为降序排序
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    2 | curry | 99.0 |    85.5 |    67.0 |
|    1 | jame  | 88.5 |    91.0 |    66.0 |
|    3 | tatuo | 55.0 |    75.5 |    87.0 |
|    4 | lisa  | 55.0 |    65.5 |    81.0 |
+------+-------+------+---------+---------+
4 rows in set (0.00 sec)

还有一些查询大家可以自己动手试试~

mysql> select math,chinese from [表名] order by math;//查询结果排序 order by(默认升序)
mysql> select math,chinese from [表名] order by math desc//查询结果排序 desc 降序
mysql> select math,chinese from [表名] order by math desc,chinese desc//按完数学按语文排,数学成绩一样就语文好的排前面

6️⃣条件查询

对于上面的查询中,在一定程度上可以解决我们的查询问题,但是只能去去重排排序,干不了一些复杂的查询,比如我想看一下数学不及格的有哪几位,语文90分以上的有哪些,在60到90的又有哪些,所以我们就用到了条件查询:

select [] from [表名] where [条件]

在认识怎么使用之前,先来了解一些运算符,因为我们的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)

大致上我们就是使用上面的这些运算符结合where子句去进行条件查询,光看文字还是不得劲,我们直接把例子抬上来:

mysql> insert into score values(5,'jisoo',null,null,null);//新增缺考同学一位
Query OK, 1 row affected (0.00 sec)

mysql> select * from score;//目前我们表中所含数据
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    1 | jame  | 88.5 |    91.0 |    66.0 |
|    2 | curry | 99.0 |    85.5 |    67.0 |
|    3 | tatuo | 55.0 |    75.5 |    87.0 |
|    4 | lisa  | 55.0 |    65.5 |    81.0 |
|    5 | jisoo | NULL |    NULL |    NULL |
+------+-------+------+---------+---------+
5 rows in set (0.00 sec)

1.大于小于大于不等于

⭐这里的就纯粹是比较大小,相当于把数据表中的数据进行遍历,然后取出每一行的数据并把数据代入条件中,如果是真,则数据保留下来,如果是假,就pass掉。

mysql> select * from score where math < 60;//查询数学成绩不及格的童鞋~
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    3 | tatuo | 55.0 |    75.5 |    87.0 |
|    4 | lisa  | 55.0 |    65.5 |    81.0 |
+------+-------+------+---------+---------+
2 rows in set (0.00 sec)

mysql> select * from score where chinese > 90;//查询语文大于90的学霸~
+------+------+------+---------+---------+
| id   | name | math | chinese | english |
+------+------+------+---------+---------+
|    1 | jame | 88.5 |    91.0 |    66.0 |
+------+------+------+---------+---------+
1 row in set (0.00 sec)

mysql> select * from score where math = null;//想查询缺考的人,但是因为用等于比较 NULL 不安全
Empty set (0.00 sec)

mysql> select * from score where math <=> null;//所以得用这个,<=>来比较null,就可以查到缺考的人
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    5 | jisoo | NULL |    NULL |    NULL |
+------+-------+------+---------+---------+
1 row in set (0.00 sec)

mysql> select * from score where math != 55;//查询不是55分的人
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    1 | jame  | 88.5 |    91.0 |    66.0 |
|    2 | curry | 99.0 |    85.5 |    67.0 |
+------+-------+------+---------+---------+
2 rows in set (0.00 sec)

2.在区间或在集合内

这里的就是看是否在这里区间或者集合里,对于between and来说,是在一个区间内,如果between 60 and 90就是在60到90之间的,包括60和90;而in则是查询是否在in的集合里面存在这个数据。

mysql> select * from score where math between 60 and 90;//查询在60到90之间的童鞋有哪些~
+------+------+------+---------+---------+
| id   | name | math | chinese | english |
+------+------+------+---------+---------+
|    1 | jame | 88.5 |    91.0 |    66.0 |
+------+------+------+---------+---------+
1 row in set (0.00 sec)

mysql> select * from score where math in(88.5,99);//查询数学成绩是88.5或者99的童鞋~
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    1 | jame  | 88.5 |    91.0 |    66.0 |
|    2 | curry | 99.0 |    85.5 |    67.0 |
+------+-------+------+---------+---------+
2 rows in set (0.00 sec)

3.空值和非空查询

对于空值和非空也有另一种比较方式,就是用is null的表达式,或者如果要查询有成绩的同学的值,我们可以用is not null,表示非空查询。

mysql> select * from score where math is null;//查询数学成绩是空的值
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    5 | jisoo | NULL |    NULL |    NULL |
+------+-------+------+---------+---------+
1 row in set (0.00 sec)

mysql> select * from score where math is not null;//查询数学成绩非空的成绩表
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    1 | jame  | 88.5 |    91.0 |    66.0 |
|    2 | curry | 99.0 |    85.5 |    67.0 |
|    3 | tatuo | 55.0 |    75.5 |    87.0 |
|    4 | lisa  | 55.0 |    65.5 |    81.0 |
+------+-------+------+---------+---------+
4 rows in set (0.00 sec)

4.模糊查询

模糊查询意思就是说咱们平时有时候记得但不完全记得这位同学名字,又或者说需要查询班上同一个姓的时候,我们可以用到模糊查询,比如说孙悟空,孙策,孙红雷都姓孙就可以用"孙%"。

select [列名] from [表名] where [列名] like "[值%]"
select [列名] from [表名] where [列名] like "[值_]"

⭐这里的模糊查分为两个标识符,一个是"%“一个是”_",其中,% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符。不要求元素完全相同,只要满足一定规则就可以啦~

比如说:

mysql> insert into score values(6,'lysa',66,77,88),(7,'lin',85,99,99);//添加两行数据
Query OK, 2 rows affected (0.00 sec)
mysql> select * from score where name like "l%";//查询姓名开头为l的同学
+------+------+------+---------+---------+
| id   | name | math | chinese | english |
+------+------+------+---------+---------+
|    4 | lisa | 55.0 |    65.5 |    81.0 |
|    6 | lysa | 66.0 |    77.0 |    88.0 |
|    7 | lin  | 85.0 |    99.0 |    99.0 |
+------+------+------+---------+---------+
3 rows in set (0.00 sec)

当然有时候我们不止只搜开头字母,比如说我好像记得咱班有人是l开头而且姓名是三个字母的时候,就可以用到下划线_来搜搜,一个下划线代表一个字符,所以就可以搜"l__":

mysql> select * from score where name like "l__";//这里可是有俩条下划线的~
+------+------+------+---------+---------+
| id   | name | math | chinese | english |
+------+------+------+---------+---------+
|    7 | lin  | 85.0 |    99.0 |    99.0 |
+------+------+------+---------+---------+
1 row in set (0.00 sec)

再举一些例子,但是自己去实践噢:

//mysql相亲事务所开业啦,走过路过不要错过~
mysql> select * from score where name like "j_m_";//俺要找一个姓j名字而且是四个字母第三个还得是m的~

mysql> select * from score where name like "%y";//姓啥不重要,尾号才是命,哥要找尾号是y的

mysql> select * from score where name like "l%n";//前面两个简直敷衍,我都要,首要姓l,尾要是n,中间是啥无所谓

mysql> select * from score where name like "%r%";//姓啥不重要,名字中带r就行啦!

mysql> select * from score where name like "t_t%";//我我我!找个姓t第三个字母又是t的人,其他也不重要~

mysql> select * from score where name like "_%";//类似于这种没啥目标性的,相当于没有模糊查询,全列出来

5.逻辑运算符

看完上面虽然能查但只能查一点点的运算符之后,大家有没有想法想着更复杂有点,比如上面的相亲事务所,虽然我喜欢姓l的,但是我肯定得找优秀一点的呀,所以多一点条件的话,连接词就是咱们的逻辑运算符:

mysql> select * from score where name like "l%" and math>80;
mysql> select * from score where name like "l%" or math>80;
mysql> select * from score where name not like "l%" ;
//and就是我全都要,不仅得姓l还得数学好,起码也得80分以上吧~
mysql> select * from score where name like "l%" and math>80;
+------+------+------+---------+---------+
| id   | name | math | chinese | english |
+------+------+------+---------+---------+
|    7 | lin  | 85.0 |    99.0 |    99.0 |
+------+------+------+---------+---------+
1 row in set (0.00 sec)
//楼上的姐妹是真贪心,姓l或者数学80分以上满足一个都行,两个都有就更好~
mysql> select * from score where name like "l%" or math>80;
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    1 | jame  | 88.5 |    91.0 |    66.0 | -- 数学大于80
|    2 | curry | 99.0 |    85.5 |    67.0 | -- 数学大于80
|    4 | lisa  | 55.0 |    65.5 |    81.0 | -- 姓l
|    6 | lysa  | 66.0 |    77.0 |    88.0 | -- 姓l
|    7 | lin   | 85.0 |    99.0 |    99.0 | -- 姓l数学还大于80
+------+-------+------+---------+---------+
5 rows in set (0.00 sec)
//我不一样,我被姓l的渣过,除了l姓同学其他我都可以
mysql> select * from score where name not like "l%" ;
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    1 | jame  | 88.5 |    91.0 |    66.0 |
|    2 | curry | 99.0 |    85.5 |    67.0 |
|    3 | tatuo | 55.0 |    75.5 |    87.0 |
|    5 | jisoo | NULL |    NULL |    NULL |
+------+-------+------+---------+---------+
4 rows in set (0.00 sec)

同样的,逻辑运算符是可以使用多个来表达想表达的意思的,比如说在不姓l的人里面要数学大于90分的或者语文大于90分的:

mysql> select * from score where name not like "l%" and (math>90 or chinese>90);
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    1 | jame  | 88.5 |    91.0 |    66.0 |
|    2 | curry | 99.0 |    85.5 |    67.0 |
+------+-------+------+---------+---------+
2 rows in set (0.00 sec)

需要注意的是,在进行逻辑运算符的时候,我们要注意先后顺序,如果有多个运算符时,建议用小括号圈起来区分。

7️⃣分页查询

对于查询来说,有时候我们想要的数据只需要前面的,也就是说只需要一部分,那就不需要把数据全列出来。比如说我们在百度搜索的时候,我们搜索后的结果并不是都在同一页,而是分开了很多页,每一页有n条数据,所以这相当于我们的分页查询。

mysql> select [列名] from [表名] limit [多少条数据] offset [从哪条开始];

具体来说我们分析一下下面两个例子:
在这里插入图片描述

mysql> select * from score limit 3 offset 2;//从2往后拿3行数据,即3,4,5行的数据
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    3 | tatuo | 55.0 |    75.5 |    87.0 |
|    4 | lisa  | 55.0 |    65.5 |    81.0 |
|    5 | jisoo | NULL |    NULL |    NULL |
+------+-------+------+---------+---------+
3 rows in set (0.00 sec)

在这里插入图片描述

mysql> select * from score limit 3;//从第一行开始拿三行数据
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    1 | jame  | 88.5 |    91.0 |    66.0 |
|    2 | curry | 99.0 |    85.5 |    67.0 |
|    3 | tatuo | 55.0 |    75.5 |    87.0 |
+------+-------+------+---------+---------+
3 rows in set (0.00 sec)

以上就是对于查询的基础认识,除了上面的知识外,我们需要注意:

MySQL 中的 ORDER BY 和 LIMIT 子句是在查询语句的结果集上进行排序和限制显示数量的。也就是说,查询语句先执行,将符合条件的数据查询出来,然后对这些数据进行排序(如果有 ORDER BY 子句)和限制数量(如果有 LIMIT 子句),最终返回排序后的结果集。

具体地讲,MySQL 在处理含有 ORDER BY 子句的语句时,会先创建一个临时表,将查询语句的结果放到这个临时表中,并按照指定的排序方式进行排序;在处理含有 LIMIT 子句的语句时,MySQL 会基于已排序的临时表,根据 LIMIT 中的参数,截取所需的行数作为结果集返回给用户。


3.修改数据

查完表不满意?那就改他!修改的语法在下面:

update [表名] set [列名] [=值(修改的值)] where / order by / limit

话不多说,直接上例子:

mysql> update score set math = 60 where math = 55;//把数学成绩55的改为60,让你及格~
Query OK, 2 rows affected (0.00 sec)//修改完成,两行受影响
Rows matched: 2  Changed: 2  Warnings: 0//matched是满足条件的行数,Changed是修改行数
mysql> update score set chinese=chinese+10 order by chinese limit 2;//给语文倒数前两名语文成绩加10分
Query OK, 1 row affected (0.00 sec)//修改完成,一行受影响
Rows matched: 2  Changed: 1  Warnings: 0//两行满足,一行修改,这里因为第一行的是null,null和其他数字进行操作结果仍然是null

我们来看一下前后的变化情况:

mysql> select * from score;//修改更新前
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    1 | jame  | 88.5 |    91.0 |    66.0 |
|    2 | curry | 99.0 |    85.5 |    67.0 | -- 语文倒数第二行数据
|    3 | tatuo | 60.0 |    85.5 |    87.0 |
|    4 | lisa  | 60.0 |    85.5 |    81.0 |
|    5 | jisoo | NULL |    NULL |    NULL | -- 语文倒数第一行数据
|    6 | lysa  | 66.0 |    87.0 |    88.0 |
|    7 | lin   | 85.0 |    99.0 |    99.0 |
+------+-------+------+---------+---------+
7 rows in set (0.00 sec)

mysql> update score set chinese=chinese+10 order by chinese limit 2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 2  Changed: 1  Warnings: 0

mysql> select * from score;
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    1 | jame  | 88.5 |    91.0 |    66.0 |
|    2 | curry | 99.0 |    95.5 |    67.0 | -- 85.5变成95.5
|    3 | tatuo | 60.0 |    85.5 |    87.0 |
|    4 | lisa  | 60.0 |    85.5 |    81.0 |
|    5 | jisoo | NULL |    NULL |    NULL | -- 数据不变,操作后还是null
|    6 | lysa  | 66.0 |    87.0 |    88.0 |
|    7 | lin   | 85.0 |    99.0 |    99.0 |
+------+-------+------+---------+---------+
7 rows in set (0.00 sec)

除了直接把分值改了,也可以给某些同学开小灶,比如让他所有成绩都加10分,就是set后面都是成绩加10,然后where子句姓名等于这个同学的名字就好啦。

4.删除数据

增删改查的最后一个啦就是删啦,切记不要乱删啊慎重啊兄弟姐妹们,喜欢删自己建个表慢慢删去,别把重要数据删了噢,删除的语法是:

delete from [表名] where 条件/ order by / limit

比如:

mysql> select * from score;//原始数据表数据
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    1 | jame  | 88.5 |    91.0 |    66.0 |
|    2 | curry | 99.0 |    95.5 |    67.0 |
|    3 | tatuo | 60.0 |    85.5 |    87.0 |
|    4 | lisa  | 60.0 |    85.5 |    81.0 |
|    5 | jisoo | NULL |    NULL |    NULL |
|    6 | lysa  | 66.0 |    87.0 |    88.0 |
|    7 | lin   | 85.0 |    99.0 |    99.0 |
+------+-------+------+---------+---------+
7 rows in set (0.00 sec)
mysql> delete from score where id=7;//把id=7的lin同学删了
Query OK, 1 row affected (0.00 sec)

mysql> delete from score where name like "l%";//剩下的l起头同学也删了
Query OK, 2 rows affected (0.00 sec)

mysql> select * from score;//相当于删了id为4,6,7的同学
+------+-------+------+---------+---------+
| id   | name  | math | chinese | english |
+------+-------+------+---------+---------+
|    1 | jame  | 88.5 |    91.0 |    66.0 |
|    2 | curry | 99.0 |    95.5 |    67.0 |
|    3 | tatuo | 60.0 |    85.5 |    87.0 |
|    5 | jisoo | NULL |    NULL |    NULL |
+------+-------+------+---------+---------+
4 rows in set (0.00 sec)

还有一个可以清除表数据的就是,用于删除表中的所有数据。TRUNCATE 比 DELETE 命令更快,因为它不会记录删除的行,也不会触发删除前或删除后的触发器:

truncate table [表名];

但是truncate命令不能用于删除部分行或指定条件,如果您需要删除选定的行,则应该使用 table命令。


这就是本篇如何速通MySQL第二部分的全部内容啦,接下来还有两个部分,带你速通MySQL。欢迎关注。一起学习,共同努力!

还有一件事:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/25858.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC第七阶段:SpringMVC的增删改查(01)

SpringMVC的增删改查 1、准备单表的数据库 drop database if exists springmvc;create database springmvc;use springmvc; ##创建图书表 create table t_book(id int(11) primary key auto_increment, ## 主键name varchar(50) not null, ## 书名 author varchar(50) no…

解决高并发

目录 1.4 对比单体系统、分布式系统和微服务系统 1.4.1 单体系统之痛 1、什么是单体系统 2、单体系统面临的问题 1.4.2 高并发系统之分布式架构 1.4.3 高并发系统之微服务架构 1.4 对比单体系统、分布式系统和微服务系统 接下来从企业真实场景出发&#xff0c;对比单体系统…

JavaEE进阶(5/29)SpringMVC

目录 1.复习 2.URL传参PathVariable 3.上传文件RequestPart 4.获取Cookie/Session/header 5.传统/维新获取cookies 6.传统/维信获得Header 7.获取Session&#xff08;非常重要&#xff09; 8.不加ResponseBody 9.如何获取Json数据&#xff0c;RequestBody 10.想…

python:容器:字符串——常用操作

字符串[下标]根据下标索引取出特定位置字符字符串.index(字符串)查找给定字符的第一个匹配项的下标字符串.replace(字符串1,字符串2) 将字符串内的全部字符串1&#xff0c;替换为字符串2 不会修改原字符串&#xff0c;而是得到一个新的 字符串.split(字符串) 按照给定字符串&am…

数据偏度介绍和处理方法

偏度&#xff08;skewness&#xff09;是用来衡量概率分布或数据集中不对称程度的统计量。它描述了数据分布的尾部&#xff08;tail&#xff09;在平均值的哪一侧更重或更长。偏度可以帮助我们了解数据的偏斜性质&#xff0c;即数据相对于平均值的分布情况。 有时&#xff0c;正…

Linux :: 【基础指令篇 :: 文件及目录操作:(2)】::Linux操作系统的文件“框架”、绝对路径与相对路径及路径定位文件对象的解释

前言&#xff1a;本篇是 Linux 基本操作篇章的内容&#xff01; 笔者使用的环境是基于腾讯云服务器&#xff1a;CentOS 7.6 64bit。 学习集&#xff1a; C 入门到入土&#xff01;&#xff01;&#xff01;学习合集Linux 从命令到网络再到内核&#xff01;学习合集 本篇内容&am…

【JavaSE】Java基础语法(二十九):Map集合

文章目录 1. Map集合概述和特点2. Map集合的基本功能3. Map集合的获取功能【应用】4. Map集合的遍历(方式1)5. Map集合的遍历(方式2)6. map四种遍历方式 1. Map集合概述和特点 Map集合概述 interface Map<K,V> K&#xff1a;键的类型&#xff1b;V&#xff1a;值的类型…

笔记本电脑的BIOS是怎么保护安全的?

随着攻防技术的不断演进&#xff0c;像BIOS攻击、高级网络代码攻击等手段层出不穷&#xff0c;“受害者”也不仅限于企业级服务器、存储&#xff0c;很多魔爪也开始伸向了拥有商业机密数据的PC。 BIOS是Basic Input/Output System&#xff08;基本输入/输出系统&#xff09;的…

(八)Spring之IOC控制反转、DI依赖注入介绍和使用(详解)

文章目录 前言SpringSpring IOC 简介BeanIOC 概述IOC 本质理解 Spring IOC 应用IOC xml装配IOC 依赖注入IOC Bean的作用域 IoC 自动装配Bean 的自动装配注解实现自动装配 IoC 使用注解开发模拟实现Spring IoC 前言 “Spring”在不同的上下文中表示不同的事物。它可以用来引用 …

ASP.NET Core

1. 入口文件 一个应用程序总有一个入口文件&#xff0c;是应用启动代码开始执行的地方&#xff0c;这里往往也会涉及到应用的各种配置。当我们接触到一个新框架的时候&#xff0c;可以从入口文件入手&#xff0c;了解入口文件&#xff0c;能够帮助我们更好地理解应用的相关配置…

用户验证FTP实验

用户FTP实验 目录 匿名用户验证&#xff1a; 本地用户验证&#xff1a; 本地用户访问控制&#xff1a; 匿名用户验证&#xff1a; 例&#xff1a;&#xff08;前提配置&#xff0c;防火墙关闭&#xff0c;yum安装&#xff0c;同模式vmware11&#xff09; 现有一台计算机huy…

什么是项目可交付成果?定义、示例及管理工具

项目产生可交付成果&#xff0c;这只是项目活动的结果。项目可交付成果可大可小&#xff0c;其数量也因项目而异。它们是由项目管理团队和利益相关者在项目规划阶段商定的。 换句话说&#xff0c;任何类型的项目都有投入和产出。投入是你投入到项目中的东西&#xff0c;如数据…

什么?电路板上还要喷漆?

什么是三防漆&#xff1f; 三防漆是一种特殊配方的涂料&#xff0c;用于保护线路板及其相关设备免受环境的侵蚀。三防漆具有良好的耐高低温性能&#xff1b;其固化后成一层透明保护膜&#xff0c;具有优越的绝缘、防潮、防漏电、防震、防尘、防腐蚀、防老化、耐电晕等性能。 在…

访客管理系统:Lobby Track Crack

Lobbytrack桌面 for 微软视窗 一个强大的、功能齐全的现场访客管理系统解决方案。在本地管理您的数据&#xff0c;网络工作站一起配置访客管理流程的各个方面。 扩展您的系统将本地 Web 模块 添加到您的 Lobbytrack 桌面系统&#xff0c;并允许您的员工使用本地 Intranet 上的 …

FrameLayout+LinearLayout实现首页底部菜单

1.布局样式 2.main.xml代码 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_par…

Verilog基础之一、触发器实现

目录 一、触发器简介 1.1 触发器作用 1.2 触发器信号 1.3 使用规范 1.4 Vivado综合触发器 二、代码实现 三、综合结果 一、触发器简介 1.1 触发器作用 触发器是工程中基础的单元结构也是相当重要的组成&#xff0c;时序电路的实现离不开触发器。触发器是具有存储功能的器件&…

水库大坝安全问题有哪些?

我国现有水库大坝9.8万余座&#xff0c;80%水库大坝修建于上世纪50至70年代&#xff0c;受经济、技术等历史因素的影响&#xff0c;存在坝体结构破损、坝基渗漏、坝体渗漏、坝面变形等严重的安全隐患。 一、水库大坝的安全问题主要包括以下几个方面&#xff1a; 1.坝体结构破损…

为减少来自环境使用的无线传感器网络的传输次数而开发的方法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【Qt】delegate的自定义实现函数createEditor进不去【2023.05.07】

摘要 妈卖批&#xff0c;因为这个函数进不去&#xff0c;emo了一下午。实际上就是因为函数声明和定义的地方漏了个const关键字。 1.正确✔&#xff1a; QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) cons…

Android以aar包形式引入hunter-timing,Java(4)

Android以aar包形式引入hunter-timing&#xff0c;Java&#xff08;4&#xff09; &#xff08;1&#xff09;参照这篇文章&#xff1a; https://zhangphil.blog.csdn.net/article/details/130603231https://zhangphil.blog.csdn.net/article/details/130603231 生成.aar文件…