MySQL表的增删改查(数据库系列3)

news2024/11/13 10:44:14

目录

前言:

1.CRUD的解释

2.表的基本操作

2.1查看数据表

2.2创建表

2.3查看指定表的表结构

2.4删除表

2.5注释

3.新增(Create)

4.查询(Retrieve)

4.1全列查询

4.2指定列查询

4.3查询字段为表达式

4.4指定别名

4.5去重查询

4.6查询结果排序

4.7条件查询 where

4.8范围查询

4.8.1 between...and...

4.8.2 in

4.8.3模糊查询like

4.8.4null的查询:is [not] null

4.8.5分页查询limit

5.修改(Update)

6.删除(Delete)

结束语:


前言:

上一次博客中小编主要给大家讲解了有关于如何创建一个数据库,怎么选中一个数据库,以及有关于表的创建和删除。我们现在来简单的回忆一下吧,查看所有数据库的操作是:show databases; 创建数据库的操作是:create database 数据库名; 选中数据库的操作是:use 数据库名; 删除数据库的操作是:drop database 数据库名;这里我们要注意删除数据库的操作是非常危险的操作,我们在操作的时候一定要小心小心再小心。  那么这节里面我们主要就与大家讨论怎么使用我们所创建出来的这张表,以及表的一些基本的操作(增删改查)我们也称之为CRUD。

1.CRUD的解释

CRUD即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)这四个单词的首字母缩写。那么我们下面就分别给大家来介绍一下这四个在我们MYSQL的客户端中都是怎么使用的,但是在介绍怎么CRUD之前我们先来给大家介绍一下我们究竟如何创建出一个表怎么查看表的结构怎么删除表。

2.表的基本操作

2.1查看数据表

语法:

show tables;

案例演示:

注意:这里由于我们还没有创建出一个表所以表里面显示的是空。 

2.2创建表

语法:

create table 表名(列名 类型, 列名 类型,列名 类型,......)

案例演示:

我们看到我们在上面使用的类型中都是带有符号的(带有正负号),但是MySQL是否有无符号类型呢?答案是有滴,MySQL官方文档中明确地无符号类型有但是不建议使用,而且在未来的版本中就不会在支持了。

还有一个点就是我们发现我们在编写后面的列名和类型的时候是列名在前类型在后,这和我们之前所学习的编码习惯有点违背,大家一定要注意!!!

2.3查看指定表的表结构

语法:

desc 表名;

案例演示:

上图对应列的解释:

 这是有同学就好奇了为什么子啊第二行中int后面我们在定义的时候明明什么都没有写,为什么会出现一个11呢? 这里小编个大家来解释一下,int(11)这里的意思是我们在客户端里查询显示的时候最多显示11个字符,和你到时候存储多大的值无关。

2.4删除表

语法:

drop table 表名;

案例演示:

注意:删除表的操作和删除数据库的操作一样都是一个危险的操作!!!需要我们慎重!!!  

2.5注释

 我们在MySQL客户端的时候也是可以加注释的。

通常我们使用的注释有:

  • comment:这个不太好用一般不太推荐。
  • --或者是#:这个是我们一般经常用到的注释。

如下面的演示所示:

3.新增(Create)

语法:

insert  [into]  表名 values(值,值,.......);

案例演示:

我们还是以上述创建的student为例进行演示。

这样我们就向student表中插入了一条记录,同样我们也可以一次插入多组记录。

我们一般是推荐大家使用一次插入多组记录,这样我们就可以提高我们插入数据的效率了。 

插入的时候我们还可以指定某一列来进行插入。

如下所示:
 

我们也可以插入时间。

我们先来创建一个表。

 然后我们对上述表中插入一行数据。

我们是通过指定的格式来进行插入的:形如上述的‘2023-05-19 10:24:00’来进行插入。我也可以通过now()来获取当前的时间。

如下所示:
 

4.查询(Retrieve)

4.1全列查询

语法:

select * from 表名;

案例演示:

我们就上述我们刚刚插入值的homework表为为例。

注意:

我们这里的查询操作也是非常危险的操作!!!如果我们的数据量非常大的时候就会引起一些问题的。你可以将你的硬盘想象成建筑工地,现在从硬盘上拉取数据,就相当于是大卡车从建筑工地上拉取很多货物,如果车过于多的话,我们的道路又有些窄,那么就会发生堵车,别人想要从这条路走就走不了了,也就是如果还有其他程序想要使用硬盘的话就会导致堵塞使用不了了。,所以查询操作就会比较危险。我们要牢牢记住MySQL是一个客户端服务器结构的程序,当我们在客户端发送一条查询请求的时候服务器就会根据我们的请求将SQL查询到的数据读取出来再通过网络返回给客户端。此时我们所得到的这张表相当于是一个“临时表”,这个“临时表”也叫做“结果集”。 

4.2指定列查询

语法:

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

案例演示:

我们以上述创建的student表为例。

4.3查询字段为表达式

语法:

select 表达式 from 表名;

案例演示:
我们先来创建一个带有成绩或者是数字的表。

如下所示:

我们在对上述的表中插入一些数据。

接下来我们对数学、英语、语文进行相加运算查询。

4.4指定别名

但是我们看到这里面是对三门科目进行了一个相加在表头上面显示的是运算的表达式,这样的显示不够直观我们可以给他起一个别名来进行显示,此时我们就可以通过在表达式后面加上as关键字来进行命名。

如下所示:

这里要注意我们这里的运算都是列和列之间的运算。不是行和行之间的运算,后面我们还会学习行和行之间的运算叫聚合运算。

4.5去重查询

语法:

select distinct 列名 from 表名;

案例演示:
没有去重之前:

去重之后:
 

 注意:distinct指定多个列的时候,要求这些列的值都相同,才视为重复。

4.6查询结果排序

语法:

select ... from 表名 [where ...] order by 子句 [asc | desc];

-- asc 为升序,默认为升序。

--desc 为降序

案例演示: 

升序案例演示: 

降序案例演示: 

注意:这里给大家明确一点我们这里底层的排序是按照归并排序进行排序的,还有我们之前在查看表结构的时候用到的关键字也是的desc,大家就好奇了是不是他两个都是一样的,这里小编给大家说一下之前查看表结构的那个desc是describe英语单词的缩写,而我们这里的是descend的缩写,两个是不一样的,大家不要弄错了。

如果是指定多个列进行排序,则如果这个列越靠前,就是越关键的排序依据。

如下所示:

4.7条件查询 where

条件查询:在查询的时候指定筛选条件,我们将符合条件的数据留下,不符合的直接pass掉。

在SQL中有一系列的运算符来进行表示条件:

比较运算符:

运算符说明
>、>=、<、<=大于,大于等于,小于,小于等于
=等于,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),结果CIA是true(1)。
OR任意一个条件为true(1),结果为true(1)。
NOT条件为true(1),结果为false(0)。

注意:

  • where条件可以使用表达式,但是不能使用别名。
  • and的条件高于or,在同时使用时,需要使用小括号()包裹优先级执行的部分。

案例演示:
以下面的这个表格为例进行查询。

查询英语不及格的同学及成绩(<60)

 

这里的查询就相当于是针对数据库的表进行遍历,取出每一行的数据,把数据带入到条件中看条件是否符合,如果是真,就保留这条记录作为结果集的一部分,如果是假,这个记录就pass掉。

查询语文成绩好于英语成绩的同学。

查询总分在200分以下的同学。

当我们在指定别名的时候在where中使用别名的时候我们就会发现报错。

如下所示:
因此我们不可以在where中使用别名。正确的使用如下所示:

查询语文成绩大于80,或英语成绩大于80分的同学。

查询语文成绩大于80且英语成绩也大于80的同学。

注意:

如果一个where中既有and有存在or,就先执行and后执行or,这个小编不建议大家去背,大家可以在使用这两个的时候给加上()。 

4.8范围查询

4.8.1 between...and...

他约定的是前闭后闭的区间,相当于是我们学习的那个闭区间。

案例演示:
查询语文成绩在[80,90]分的同学及语文成绩。

我们也可以通过and达到同样的目的。

4.8.2 in

查询数学成绩是55或者88或者90分的同学及数学成绩。

其实我们使用or也是可以实现的。

4.8.3模糊查询like

 % 可以匹配任意多个(包括0个)字符。

_ 匹配严格的一个任意字符。

4.8.4null的查询:is [not] null

为了方便演示,我们在之前的表中加入两行空值。

查询语文成绩为空值的同学。

这里我们也可以之间使用<=>来进行判断是不是空值。

这里就有很多同学有疑问了,为什么我们不用=来进行判断呢?

我们先来在MySQL客户端来试一下,看一下会出现什么样的效果。

原因是因为=不能处理null,我们之前说过null与任何值运算都是null,但是我们使用<=> 来进行比较的话MySQL是帮助我们处理了null的这种特殊情况的。

查询数学成绩不为空的同学。

4.8.5分页查询limit

limit的下标为0.

从0开始,筛选n条结果。

从s开始,筛选n条结果。

从s开始,筛选n条结果。

我们也可以使用limit...offset...来进行限制筛选结果。这是我们一般建议使用的。

查询总分前三的同学的总分信息。

5.修改(Update)

语法:

update 表名 set 列名 = 值, 列名 = 值.......[where 条件]; [order by] ; [limit ];

案例演示: 

将孙悟空同学的数学成绩变更为80分。

将曹孟得同学的数学成绩变更为60分,语文成绩变更为70分。

将总成绩倒数前三的3位同学的数学成绩加上10。 

 

 将所有同学的成绩更新为之前的一半。

但是我们发现上面会报有一个警告。

我们可以通过show warnings来查看这个警告的具体内容是什么。

注意:
小编这里再次给大家强调一下update也是一个危险的操作!!!大家在使用的过程中要慎重。 

6.删除(Delete)

删除记录行。

语法:

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

案例演示:

删除所有姓孙的同学的信息。

 

这个操作就相当于删表,只不过是drop删除表操作是直接连表都没有了,而delete操作是删除了表里面的所有内容,但是表还在。由此我们可以看出来delete操作也是非常危险的一个操作!!!

结束语:

好了数据库的CRUD操作小编就给大家介绍到这里啦,下一节小编将会继续给大家介绍一些数据库里的其他知识,大家继续跟紧小编的步伐,一起往前冲!!!希望这节对大家认识数据库有一定的帮助,想要学习的同学记得关注小编和小编一起学习吧!如果文章中有任何错误也欢迎各位大佬及时为小编指点迷津(在此小编先谢过各位大佬啦!)

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

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

相关文章

Linux_Linux基本指令(1)

目录 一、ls指令 二、pwd命令 三、cd指令 四、touch指令 五、mkdir指令 六、rmdir指令&&rm指令 一、ls指令 语法&#xff1a;ls [选项][目录或文件] 对于目录&#xff0c;ls指令是用来列出目录下的所有子目录与文件。对于文件&#xff0c;则是列出文件名及其他信…

zabbix 安装 踩坑记录与解决方案

博主首次安装 zabbix 时&#xff0c;出现了一些错误&#xff0c;特此记录一下&#xff0c;希望帮助到一些 Zabbix freshman. 参考其他博客安装 zabbix 时&#xff0c;运行到如下command 安装zabbix 相关组件出现如下Error: apt installzabbix-server-mysql zabbix-frontend-p…

154个Bug!

持续测试了一个月的H5项目&#xff0c;终于迎来了上线日&#xff0c;在测试H5的过程中&#xff0c;遇到了一些坑&#xff0c;积累了些许经验&#xff0c;想着分享一下&#xff0c;希望对大家有所启发。 主要从以下一个方面展开&#xff1a; 一、项目背景 二、测试环境准备 三…

专项练习18

目录 一、选择题 1、下列选项中&#xff0c;&#xff08;&#xff09;不是网页中的事件 2、下面有关浏览器中使用js跨域获取数据的描述&#xff0c;说法错误的是&#xff1f; 3、请问以下程序的输出是 4、以下哪一项不属于浏览器Response Headers字段&#xff1a; 一、选择题 …

IDEA中集成zookeeper的插件

IDEA中集成zookeeper的插件 一、IDEA中集成插件 搜索插件并安装&#xff1a; 安装完成&#xff0c;重启IDEA 配置zk集群 连接成功

beego 跨域问题处理

这几台在搞前端与后端分离设计&#xff08;之前没接触过&#xff0c;前端vueelementUI&#xff0c; 后端Beego框架&#xff09;&#xff0c;前端要使用到后端数据时&#xff0c;向发送对应的请求&#xff0c;发现提示跨域访问失败&#xff0c;于是需要配置后端支持跨域访问&…

@RequestBody接收不到前端传递过来的json数据

uniRequest.post(/orderParking,{parkingRecord:this.ParkingRecord})我刚开始只是写RequestBody ParkingRecord parkingRecord 一直获取的都是null, 直到用了Map标签才终于获取到参数了 RequestMapping(value "/orderParking",produces"application/json"…

Linux:ssh配置

环境 内网win10 192.168.25.1 服务器centos 内-192.168.25.11 外-192.168.254.11 外网服务器 192.168.254.10 服务名称为&#xff1a;sshd 默认端口号为&#xff1a;22 rpm -qc openssh-server.x86_64 # 查看配置文件 *服务端主程序&#xff1a;/usr/s…

git push origin masterEverything up-to-date解决方法

按住这个看一下很简单的问题&#xff0c;我在网上看了很多就是没找到能用的&#xff0c;最后找到了这个看起来写的很简单的一个文章&#xff0c;但他写的真的有用。 出现的问题 解决步骤第一步 git add . 第二步 git commit -m “message” 第三步 git push origin master…

python代码练习:石头剪刀布猜拳游戏

python代码练习&#xff1a;石头剪刀布猜拳游戏 题目结果展示源代码 题目 使用Python实现人机石头剪刀布猜拳小游戏&#xff0c;并且最后能够统计分数和局数 结果展示 源代码 # -*- coding: utf-8 -*- # Course : python 基础 # Time : 2023/7/2 14:21 # Author : Eden Wei …

7.2.2 【Linux】实体链接与符号链接:ln

在Linux下面的链接文件中有两种&#xff0c;一种是类似Windows的捷径功能的文件&#xff0c;可以快速链接到目标文件&#xff08;或目录&#xff09;&#xff1b;另一种是通过文件系统的inode链接来产生新文件名&#xff0c;而不是产生新文件。这种称为实体链接&#xff08;har…

【webrtc】nack学习笔记

本文大量参考了以下大神的文章,表示感谢:WebRTC 中的NackWebRTC之视频NackModuleWebRtc Video Receiver(三)-NACK丢包重传原理适用场景 Nack , 即丢包重传,在RTT小的情况下,是非常有效的错误恢复手段一般接收端会维护一个列表,用于记录收到的包的序列号,一般这个列表的长…

道路车辆 功能安全第1部分:术语

前言 本文件按照GB/T 1.1—2020《标准化工作导则 第1部分&#xff1a;标准化文件的结构和起草规则》的规定起草。 GB/T 34590-XXXX《道路车辆 功能安全》分为以下部分&#xff1a; —— 第1部分&#xff1a;术语&#xff1b; —— 第2部分&#xff1a;功能安全管理&#xff1b;…

【JUC进阶】09. 关于锁升级

目录 1、前言 2、回顾 2.1、对象头和内存布局 2.2、四大锁回顾 3、状态转换 3.1、锁状态 3.1.1、无锁状态 3.1.2、偏向锁状态 3.1.3、轻量级锁状态 3.1.4、重量级锁状态 3.2、状态转换条件 3.2.1、无锁 -> 偏向锁 3.2.2、偏向锁 -> 无锁 3.2.3、偏向锁 -&g…

SAP 查询字段所存在的表(增强定义)

T-CODE——axtshow DATA:lv_zzbranch TYPE ze_les_branch, ls_aet088 TYPE zlesaet088_bol_attr, lr_adminh TYPE REF TO cl_crm_bol_entity. lr_entity_relationv TYPE REF TO cl_crm_bol_entity. lr_entity_relationv lr_adminh->get_related_entity( …

15. 查询所有用户的连续登录两天及以上的日期区间

文章目录 题目需求思路一实现一题目来源 题目需求 从登录明细表&#xff08;user_login_detail&#xff09;中查询出&#xff0c;所有用户的连续登录两天及以上的日期区间&#xff0c;以登录时间&#xff08;login_ts&#xff09;为准。 期望结果如下&#xff1a; user_id (…

C#与C++编程环境对比:优点与应用场景详解

C#与C是两种常用的编程语言&#xff0c;它们在编程环境方面有一些相同点和不同点。首先&#xff0c;它们都可以用于开发跨平台的应用程序。其次&#xff0c;它们都具有强大的面向对象编程能力。但是&#xff0c;它们在语法、性能和应用领域等方面存在一些不同点 。 在语法方面…

编织魔法:探索Python字符串的奇幻世界

文章目录 前言什么是 python 字符串通过下标(索引)来访问字符串中的字符字符串的切片操作字符串常用的方法find() 查找子串index() 查找子串rfind() / rindex()count() 返回某个子串在字符串中出现的次数replace() 替换split() 按照指定字符分割字符串join() 用一个字符或者子串…

Debian 12 静态IP / 固定IP的设置

环境&#xff1a;Debian 12 amd64-lxde 局域网&#xff1a;PT925E电信光猫 手机APP 网络管家 一般用动态IP就可以了&#xff0c;但如果软件环境比较小众&#xff0c;问题就随之而来。起始问题&#xff1a;路由器无法解析设备名和IP&#xff0c;网络管家也不让设置固定IP&…

炫酷水球图:让数据可视化更生动有趣

水球图是一种独特而引人注目的数据可视化形式&#xff0c;通过模拟水球的形状和大小来展示数据的分布和比例关系。它以其生动的表现形式和直观的视觉效果&#xff0c;吸引了越来越多的关注和应用。在数据可视化领域&#xff0c;水球图为我们提供了一种直观、易于理解的方式来展…