MySQL基础--表的增删改查

一、前言

                      欢迎大家来到权权的博客~
        欢迎大家对我的博客进行指导,有什么不对的地方,我会及时改进哦~      

博客主页链接点这里–>:权权的博客主页链接

二、新增(Create)


在student 表中新增数据,此时student表为空。
在这里插入图片描述

2.1 单行数据+全列插入

语法:

insert into 表名[(字段1,字段2,字段3)] values(,,);

例如:
在这里插入图片描述
插入成功:
在这里插入图片描述

2.2 单行数据+全列插入(简写)

语法

insert into 表名 values(值,值...);-- 不用在表后面指定列,在values列表中按照表的定义字段的顺序设置相应的值。

例如:
在这里插入图片描述

2.3 指定列插入

语法:

insert into 表名(指定需要插入的字段) values();-- 其他未指定的自动为空。

例如:
在这里插入图片描述

2.4 多行插入

语法:

insert into 表名[(指定列..)] values(值,值),(值,值)...

例如:
在这里插入图片描述

2.5 插入查询结果

新建一张表,把旧的表中的指定列的数据导入到新表中。

语法

INSERT INTO table_name [(column [, column ...])] SELECT ...

目标

把text1的内容复制到text2。
在这里插入图片描述

在这里插入图片描述

三、查询

3.1 全列查询

语法:

select * from 表名;

例如:查询student 表中的所有记录。
在这里插入图片描述
注意:因为在生产环境当中,一个表中的数据量可能会很多很多,有可能达到TB级:
1.当一个查询开始的时候,磁盘开销,网络开销,都是非常紧缺的资源。
2.如果这一条语句开始执行,那么就有可能把服务器资源吃光,其他的程序或者是数据库操作和要等待SQL执行完之后才能继续执行。
3.建议:不加任何限制(结果集的条数)的查询在生产环境不要使用。
初始化数据:
在这里插入图片描述

3.2 指定列查询

语法:

select 列名,列名... from 表名;

举例(只查询姓名跟语文成绩):
在这里插入图片描述

3.3 查询的结果是一个表达式

数值类型,效果就是让所有的列中都包含一个表达式中的值,他本身并不在我们的真实的表里。
在这里插入图片描述

3.3.1 把所有的语文成绩在原本的基础上加一分

在这里插入图片描述

3.3.2 列与列之间的计算

在这里插入图片描述

3.3.3 表达式的别名

在这里插入图片描述
注意:as 关键字可省略,我们表里原来没有总分这一列,所以通过表达式查询出来的结果集是一个临时表返回给我们的,执行完之后临时表就删除了。

3.3.4 结果集中的字段名起别名的语法

select 列名[as]别名,列名[as]别名...from 表名;

举例(修改ID,name,chinese的名字):
在这里插入图片描述

3.4去重(distinct)

语法:

select distinct 列名 from 表名;

在这里插入图片描述
在这里插入图片描述
加上ID后:
在这里插入图片描述
在这里插入图片描述
加上 ID后虽然English是一样的但是那个id不一样,所以那个distinct不会把他们当作相同的行。
我们再插入一条数据:
在这里插入图片描述
在这里插入图片描述
注意: 去重的时候,只有所有的列都相同才会被认定为重复记录,去重后记录只保留一条。

3.5 排序(order by)

语法:

slect 列名 from 表名 order by 列名 [ASC][DESC]; -- 默认是升序

3.5.1 排序规则(升序、降序):

1.升序:ASC
对数学成绩进行升序排序:
在这里插入图片描述
2.降序:DESC
对数学成绩进行降序排序:
在这里插入图片描述
3.没有写排序规则的时候默认为升序排序,强烈建议明确指定排序规则:
在这里插入图片描述

3.5.2 NULL排序规则

null排序规则,视为比任何值都小,升序出现在最上面,降序出现在最下面。
在这里插入图片描述

3.5.3 使用表达式别名进行排序

在这里插入图片描述

3.5.4 注意

MySQL中的null比较特殊:
1.无论和什么值进行计算,返回的值都是null。
2.null始终都判定为false。
3.null的值不是c语言这种编程语言中的0,在MySQL中他就是null。

3.6 条件查询(where)

3.6.1 原理

根据指定的条件,过滤掉不符合条件的记录,把符合条件的记录返回给用户,可以通过一些运算符,比如比较运算符逻辑运算符和Java中的思路是一样的。

3.6.2 比较运算符

在这里插入图片描述

3.6.3 逻辑运算符

在这里插入图片描述
注意:

  1. WHERE条件可以使用表达式,但不能使用别名。
  2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分。

3.6.4 基本查询

查询数学成绩在60分一下的:
在这里插入图片描述

3.6.5 and与or

查询数学成绩大于90分和语文成绩大于90分的人;
在这里插入图片描述
查询数学成绩大于90分或者语文成绩大于90分的人;
在这里插入图片描述

3.6.5 范围查询

1.between and (相当于and):
查询语文成绩在 [90, 100] 分的同学及语文成绩:
在这里插入图片描述
2.in (相当于or):
查询数学成绩是 92或者 100 或者 99 分的同学及数学成绩:
在这里插入图片描述

3.6.6 模糊查询 --like

– % 匹配任意多个(包括 0 个)字符:
在这里插入图片描述
– _ 匹配严格的一个任意字符:
在这里插入图片描述

3.6.7 null的查询

语法:is [not] null

在这里插入图片描述

3.7 分页查询:LIMIT

前面我们说过不加限制记录条数的查询是不安全的,我们就需要给这些查询加一些限制。

3.7.1语法

-- 起始下标为 0
-- 从 0 开始,筛选 n 条结果
SELECT ... FROMtable_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从 s 开始,筛选 n 条结果
SELECT ... FROMtable_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROMtable_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s

3.7.2 案例

按 id 进行分页,每页 3 条记录,分别显示第 1、2、3 页:

-- 第 1 页
SELECT id, name, math, English, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 0;
-- 第 2 页
SELECT id, name, math, English, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 3;
-- 第 3 页,如果结果不足 3 个,不会有影响
SELECT id, name, math, English, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 6;

在这里插入图片描述
第三页的记录s应该取值的公式:
s=(当前页号-1)*每页显示的记录数

四、修改(Update)

4.1语法

UPDATE table_name SET column = expr [, column = expr ...]    [WHERE ...] [ORDERBY ...] [LIMIT ...]

让小肖的语文成绩变成100分:
在这里插入图片描述
让数学成绩按照升序排序并取前面3条记录:
在这里插入图片描述
把所有英语成绩小于60分的更新为60分:
在这里插入图片描述

五、删除(Delete)

5.1语法

DELETE FROM  table_name [WHERE ...] [ORDERBY ...] [LIMIT ...]

删除小强的成绩:
在这里插入图片描述
删除数学成绩前三的所有同学成绩:
在这里插入图片描述

5.2 注意

如果删除的时候不加where条件限制,那整张表的数据都会清空,这是非常危险的,但是这是可以恢复的,每一条执行的SQL语句都会被记录到日志之中,把日志中的操作,再执行一遍基本上可以恢复。
在这里插入图片描述
欧耶我学会啦!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值