当前位置: 首页 > news >正文

MySQL基础--表的增删改查

目录

  • 一、前言
  • 二、新增(Create)
    • 2.1 单行数据+全列插入
    • 2.2 单行数据+全列插入(简写)
    • 2.3 指定列插入
    • 2.4 多行插入
  • 三、查询
    • 3.1 全列查询
    • 3.2 指定列查询
    • 3.3 查询的结果是一个表达式
      • 3.3.1 把所有的语文成绩在原本的基础上加一分
      • 3.3.2 列与列之间的计算
      • 3.3.3 表达式的别名
      • 3.3.4 结果集中的字段名起别名的语法
    • 3.4去重(distinct)
    • 3.5 排序(order by)
      • 3.5.1 排序规则(升序、降序):
      • 3.5.2 NULL排序规则
      • 3.5.3 使用表达式别名进行排序
      • 3.5.4 注意
    • 3.6 条件查询(where)
      • 3.6.1 原理
      • 3.6.2 比较运算符
      • 3.6.3 逻辑运算符
      • 3.6.4 基本查询
      • 3.6.5 and与or
      • 3.6.5 范围查询
      • 3.6.6 模糊查询 --like
      • 3.6.7 null的查询
    • 3.7 分页查询:LIMIT
      • 3.7.1语法
      • 3.7.2 案例
  • 四、修改(Update)
    • 4.1语法
  • 五、删除(Delete)
    • 5.1语法
    • 5.2 注意

一、前言

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

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

二、新增(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(值,值),(值,值)...

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

三、查询

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语句都会被记录到日志之中,把日志中的操作,再执行一遍基本上可以恢复。
在这里插入图片描述
欧耶我学会啦!!!!!


http://www.mrgr.cn/news/38518.html

相关文章:

  • 算法复杂度-空间
  • 找不到msvcp110.dll怎么办,总结6种解决msvcp110.dll的方法
  • 大数据毕业设计选题推荐-食品销售数据分析系统-Hive-Hadoop-Spark
  • css 数字比汉字要靠上
  • 【刷点笔试面试题试试水】 i++与++i哪个效率更高?
  • webpack 和 vite 区别
  • Accelerate单卡,多卡config文件配置
  • 对小白友好的与易我同级别四款剪辑工具推荐:
  • Xshell连接服务器
  • Spring Boot 整合 Keycloak
  • 花都狮岭寄宿自闭症学校:开启孩子的生命之门
  • 使用python获取百度一下,热搜TOP数据详情
  • 芝士AI写作有什么特色? 大模型支撑,智能改写续写,让写作更轻松
  • RHCS认证-Linux(RHel9)-Ansible
  • Python自学查漏9.28
  • [论文阅读] ChartInstruct: Instruction Tuning for Chart Comprehension and Reasoning
  • Java高效编程(10):重写equals时必须遵循通用约定
  • MySQL(面试题 - 同类型归纳面试题)
  • MySQL 之多表设计详解
  • 优雅使用 MapStruct 进行类复制