【MySQL】如何速通MySQL(2)

news2024/11/24 8:34:03

📌前言:本篇博客介绍如何速通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。欢迎关注。一起学习,共同努力!

还有一件事:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

结构方程模型(SEM)以及用R语言实现

目录 结构方程模型概述 结构方程模型匹配 1.协方差SEM 2.分段SEM 在R语言中实现sem进行结构方程建模和路径图可视化 – 拓端tecdat 结构方程模型是一个线性模型框架&#xff0c;它对潜变量同时进行回归方程建模。 ​​​​​​​在R语言中实现SEM进行结构方程建模和路径图…

VPP 编译记录

目录 虚拟机安装 VPP编译 下载一些工具 下载vpp源码 编译 首次构建 非首次直接编译 虚拟机安装 由于使用的统信系统作为宿主机器&#xff0c;在上面貌似只有VM virtualBox软件&#xff0c;先在应用商店安装此应用。 下载ubuntu 64位镜像 一开始没注意下载了32位的系统…

基于springboot_vue的学生在线选课java教学质量评价系统

对教师教学质量进行客观公正的评价,是一项十分严肃和重要的工作。是引导教师进行教学方法改进&#xff0c;提高教学质量的重要手段。它以教师的教学活动为主要评价对象&#xff0c;通过教学评价,发现存在的问题,了解学生的实际学习状况&#xff0c;明确教学改进的努力方向。但是…

【算法系列之二叉树II】leetcode112. 路径总和

257. 二叉树的所有路径 力扣题目链接 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 输入&#xff1a;root [1,2,3,null,5] 输出&#xff1a;["1->2->5","…

解决spark程序 Permission denied: user=<username>, access=WRITE...等常见hive权限报错

Permission Denied Permission Denied: 这是最常见的错误消息之一&#xff0c;表示当前用户没有足够的权限执行写入操作。报错信息可能类似于&#xff1a; org.apache.hadoop.security.AccessControlException: Permission denied: user<username>, accessWRITE, inode&…

Linux教程——操作系统是什么,操作系统概述

Linux 也是众多操作系统之一&#xff0c;要想知道 Linux 是什么&#xff0c;首先得说一说什么是操作系统。 计算机是一台机器&#xff0c;它按照用户的要求接收信息、存储数据、处理数据&#xff0c;然后再将处理结果输出&#xff08;文字、图片、音频、视频等&#xff09;。计…

Linux高级---k8s安全认证

文章目录 一、访问控制概述1、客户端2、认证、授权与准入控制 二、认证管理1、认证方式2、HTTPS认证大体分为3个过程 三、授权管理1、授权策略2、RBAC3、Role、ClusterRole4、RoleBinding、ClusterRoleBinding5、RoleBinding引用ClusterRole进行授权6、实战&#xff1a;创建一个…

Java线程池总结

背景 Java线程池的写法和参数是面试中出现频率很高的基础题。越是基础的东西&#xff0c;特别是对高阶职位的面试者&#xff0c;需要回答的符合自己面试的职位等级。 这里也不能说是一个多么好的答案&#xff0c;只是说如果是我&#xff0c;我怎么回答&#xff0c;仅供参考。…

Java --- springboot3依赖管理和自动配置机制

目录 一、依赖管理机制 二、自动配置机制 一、依赖管理机制 &#x1f695;、为什么导入starter-web所有相关依赖都导入进来&#xff1f; ①、开发什么场景&#xff0c;导入什么场景启动器。 ②、maven依赖传递原则。A-B-C&#xff1a; A就拥有B和C ③、导入 场景启动器。 场…

JavaScript 发展的前世今生

专栏介绍 本专栏主要用作于开放性知识点分享学习&#xff0c;其主要知识点范围是 以围绕 原生 JavaScript 语法 从基础知识到高阶语法阶段的学习分享。 导语&#xff1a; 既然博主&#xff0c;计划将此专栏打造为 JavaScript 的知识点学习分享集结地。所以&#xff0c;本章节就…

奥威BI,适合中国电商的大数据分析平台

电商数据分析做得好不好&#xff0c;除了分析思维这类主要因素外&#xff0c;大数据分析平台的选择也尤为重要。从电商数据分析实际体验来看&#xff0c;电商行业需要大数据分析平台需满足海量数据秒分析、数据直观易懂、操作简单易上手这三大基础要求&#xff0c;如能提供系统…

Tomcat下载安装以及配置

目录 tomcat的下载安装 修改控制台乱码 idea配置tomcat tomcat的下载安装 到tomcat的官网https://tomcat.apache.org/下载所需版本&#xff0c;我们下载的tomcat必须要和我们的jdk相匹配否则会导致tomcat运行和部署的时候出错&#xff0c;挑选tomcat的版本的时候参考下图 …

阿里系cookie之acw_sc__v2 逆向分析

文章目录 声明案例地址目标参数加密流程与逆向分析js代码python调用测试声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请私信我立即删除! cookie中使用acw_sc__v2的网站有很多,比如前程无忧、诸葛找房、…

2023年6月跟资深软考辅导专家学习备考软考(中/高级)到这家

软考是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资格考试。 系统集成…

收集关键词的方法有哪些?(如何查找精准的行业流量关键词)

关键词的收集通常可以通过以下几种方法: 关键词收集方法 1.根据市场价值、搜索词竞争性和企业实际产品特征进行筛选&#xff1a;确定您的关键词列表之前&#xff0c;建议先进行市场分析&#xff0c;了解您的竞争对手、行业状况和目标受众等信息&#xff0c;以更好地了解所需的特…

if __name__ == ‘__main__‘详细解释及实操演示

在Python中&#xff0c;每个模块都有一个内置的变量 name&#xff0c;用于表示当前模块的名称。当一个Python文件被执行时&#xff0c;Python解释器会首先将该文件作为一个模块导入&#xff0c;并执行其中的代码。此时&#xff0c;__name__的值为模块的名称。 if name ‘main…

浅谈RPC,gRPC和RESTful

RPC 远程过程调用&#xff08;Remote Procedure Call&#xff0c;RPC&#xff09;是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一个地址空间&#xff08;通常为一个开放网络的一台计算机&#xff09;的子程序&#xff0c;而程序员就像调用本地程序一样&…

UniFi USW-Flex 室内-室外 POE 交换机

选择理由 选择理由是是因为要户外使用&#xff0c;对比下户外可以使用的 POE 交换机并不是很多。 UniFi USW-Flex 室内-室外 5 端口 PoE 千兆交换机能够支持在户外和户内使用。 户外使用需要具有基本的防水性能&#xff0c;尤其是冬天比较寒冷的时候也需要具备一定的环境耐受…

SpringBoot接收请求参数的方式

【方式一】原始方式 因为SpringBoot封装了Servlet&#xff0c;所以也允许使用HttpServletRequest类中的方法来获取 /*** 【方式一】原始方式*/RequestMapping("/demo01")public String demo01(HttpServletRequest request) {// 参数名要与页面提交的参数名一致Strin…

【十二】设计模式~~~行为型模式~~~命令模式(Java)

命令模式-Command Pattern【学习难度&#xff1a;★★★☆☆&#xff0c;使用频率&#xff1a;★★★★☆】 1.1. 模式动机 在软件设计中&#xff0c;我们经常需要向某些对象发送请求&#xff0c;但是并不知道请求的接收者是谁&#xff0c;也不知道被请求的操作是哪个&#xf…