MySQL学习笔记4: MySQL表的增删查改 (基础)

前言

在 MySQL 中,在对表中的数据进行增删查改之前,要确保选中数据库,并且创建好对应的表

1. 新增 insert

实际上 sql 使用 insert 来往表里插入数据

insert into 表名 values(数据, 数据…);

在这里插入图片描述

在这里插入图片描述

这里注意:在sql中,字符串可以使用 ’ ’ 也可以使用 " "

可以把一个数据插入到指定的列: insert into 表名 (指定的列) values(数据);

在这里插入图片描述
在这里插入图片描述

还可以一次插入多组数据,在values 后面写多组 () 即可
在这里插入图片描述

mysql 是一个客户端 - 服务器结构的程序

客户端和服务器之间, 使用网络进行通信

因此,每个 sql 都涉及到下面的交互过程:

在这里插入图片描述

补充: 插入时间日期 (datetime 类型的数据)

用特定的格式化字符串来表示时间日期:

在这里插入图片描述

这里的 ‘2024-2-22 11:45:00’ 是一个格式化时间字符串, mysql 会自动解析这个字符串,转换成 8 个字节的时间戳 (整数)

也可以用 now() 函数直接获取到当前的时间日期

在这里插入图片描述

2. 查询 select

所有的 select 操作都是得到临时表进行操作,不影响数据库本体上的数据

2.1. 全列查询 select * from 表名;

在这里插入图片描述

‘*’ 称为通配符

在公司的生产环境服务器上,不要随便敲 select *,因为公司的服务器上,数据可能非常多,一旦数据量很大,此时这个操作就会产生大量的硬盘IO 和 网络 IO 就可能把硬盘或者网卡的带宽给吃满,一旦带宽吃满了,此时服务器就无法正常响应其他客户端的需求了

2.2. 指定列查询 select 列名,列名… from 表名;

在这里插入图片描述

2.3. 表达式查询 select 表达式 from 表名;

把查询出来的每一行,都带入表达式进行运算,这里先创建出一个新的表然后在这个表当中增添数据

在这里插入图片描述

在这里插入图片描述

这里的 english + 10就是一个表达式,对原来的英语成绩的数据进行了计算

这里注意:

  1. 当前的表达式查询,并没有修改服务器上硬盘中存储的数据本体,只是在查询结果的基础上进行运算的,得到的是一个临时表,当这个表达式查询结束的时候,这里的数据就消散了,但是数据库服务器 (数据的本体) 内容不会发生任何改变 .select 进行的任意操作,都不会修改数据本体
  2. 此处查询出来的临时表,每个列的类型不再受限于原始表,比如, english 列的类型是decimal(3,1),如果原始数据是100.0就是不合法的,但是在临时表中,会保证数据的正确性,也就不会收到 decimal(3,1)的限制

表达式还可以是多个列之间进行运算

在这里插入图片描述

2.4. 给查询结果指定别名 select 表达式 as 别名 from 表名;

如果表达式比较复杂,建议给表达式起一个别名

as 可以省略,但不推荐省略

在这里插入图片描述

2.5. 查询的时候进行去重 select distinct 列名 from 表名;

如果想要在查询结果中重复的元素只想保留一个,就用 select distinct 列名 from 表名;

它会根据查询的出的列名进行去重,把列的值相同的记录合并成一个

如果要查找多个列去重,这个时候必须是多个列的值都是相同的,才算是重复

2.6. 查询的同时进行排序 select 列名 from 表名 order by 列名;

order by 只是针对临时表进行排序,不会影响到键盘上的数据的顺序

如果一个查询语句没有 order by ,此时查询到的结果集 (临时集) 数据之间的相互顺序是不可预期的

一定要使用 order by 才能够明确指定一个顺序

order by 也可以指定多个列来进行排序,指定多个列的时候,是带有优先级的,前面的列优先级高,后面的列优先级低

优先级高的列值相同,才会比较优先级低的列

没有排序的例子
在这里插入图片描述

升序排序了 chinese 的例子

在这里插入图片描述

降序排序了 chinese 的例子 ( 后面多加了 desc, 此处的 desc 是 descending order 降序 )

在这里插入图片描述

2.7. 条件查询 select … where …

查询的时候,指定筛选条件,条件满足,这个数据就被保留 (作为结果集,就是所有满足条件的数据) ,不满足,这个数据直接跳过

如何表示条件?

一些例子:

in(可以填一些离散的数据),查询的时候如果有在表中找到就会显示

在这里插入图片描述

在条件查询中, = 就表示比较相等
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

还可以使用表达式描述条件, 如果where 后面同时有 or 和 and,优先级是 and,然后是 or
在这里插入图片描述

这里使用别名就会报错

在这里插入图片描述

因为 SQL 的执行顺序是:

  1. 取出一条记录 (遍历表)
  2. 把记录带入条件,判定是否满足
  3. 如果条件满足,再把 select 后面指定的列取出来,并且进行一些表达式运算

上面这个过程是先执行的 where,后执行的表达式取别名操作

模糊查询 like 关键字

需要用到通配符

% : 匹配任意个任意字符, % 也可以匹配到 0 个字符

_ : 只能匹配到一个字符

在这里插入图片描述

where 列名 is (not) null

不能写 列名 = null,但可以写 列名 <=> null, <=> 符号相比于 = 可以进行空值的比较

2.8. 分页查询 select … limit …

limit 限制这次请求返回多少个记录 (一页里有几条)

在这里插入图片描述

还可以使用 offset 描述当前结果从第几条开始获取,不写 offset 默认就是第0条

在这里插入图片描述

3. 修改 update

update 表名 set 列名 = 值 where 条件 / order by / limit;

update 的操作都不是临时表了,都是修改硬盘数据了

此处的 = 就是赋值了

set 设置

where 条件 就是要修改哪些行

进行修改,是要定位到行和列,再修改值

如果条件不写,就是针对所有的行进行修改

对于 update 也可以使用 order by , limit 一些操作的

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

在这里插入图片描述

4. 删除 delete

delete from 表名 where 条件 / order by / limit;

把条件匹配出来的符合要求的记录,给删除掉

在这里插入图片描述

如果删除语句中没有指定任何条件,就会删掉表里的所有数据

删除所有数据,和 删表,还是有一些差别

drop table 是把表 本身 和 表里的数据都给删掉了, delete 则只是删除了表里面的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值