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

相关文章:

  • 时间技能物品竞品抢拍拍卖发布h5公众号小程序开源版开发
  • 笔记整理—linux进程部分(2)使用fork创建进程
  • 尚品汇-自动化部署-Jenkins的安装与环境配置(五十六)
  • 十分钟实现内网连接,配置frp
  • JavaWeb图书借阅系统
  • MapBox Android版开发 6 关于Logo
  • [java][代码]DateUtil用于处理日期和时间
  • excel怎么转换json
  • C++初阶:STL详解(九)——stacke和queue的模拟实现
  • kmeans聚类分析 生活使用案例
  • 解决Windows远程桌面 “为安全考虑,已锁定该用户账户,原因是登录尝试或密码更改尝试过多,请稍后片刻再重试,或与系统管理员或技术支持联系“问题
  • Java之多态
  • 关于贪心算法
  • 【系统交付资料】软件文档交付清单整理套用原件(Word,PPT,Excel)
  • 企业如何保护自身通信渠道被黑客攻击
  • php的引用
  • [nginx文档翻译系列] 控制nginx
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • E-HPC支持多队列管理和自动伸缩
  • ES6系统学习----从Apollo Client看解构赋值
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JavaScript中的对象个人分享
  • Java反射-动态类加载和重新加载
  • java正则表式的使用
  • spring security oauth2 password授权模式
  • vue学习系列(二)vue-cli
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 前嗅ForeSpider教程:创建模板
  • 如何优雅地使用 Sublime Text
  • 山寨一个 Promise
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​ssh免密码登录设置及问题总结
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • (007)XHTML文档之标题——h1~h6
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (搬运以学习)flask 上下文的实现
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (分布式缓存)Redis分片集群
  • (附源码)计算机毕业设计大学生兼职系统
  • (七)c52学习之旅-中断
  • (四)鸿鹄云架构一服务注册中心
  • (转)Windows2003安全设置/维护
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • ./configure,make,make install的作用
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .net core 的缓存方案
  • .Net Redis的秒杀Dome和异步执行
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 漏洞分析 | 某ERP系统存在SQL注入
  • .NET/C# 使用 SpanT 为字符串处理提升性能