数据库的增删查改(CRUD)基础版

CRUD: create增加、retrieve查询、update更新、delete删除

注意一点:MySQL对大小写是不敏感的

目录

新增(create)

全列插入

指定列插入 

多行插入

查询(Retrieve)

列查询

全列查询

指定列查询

表达式查询

给查询结果指定别名

查询去重

查询的同时进行排序

条件查询(where)

实操

分页查询(limit)

修改(update)

删除(delete)


新增(create)

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

(前提:选定好数据库并创建好表)

全列插入

insert into 表名 values(列,列...)

如果要插入中文,对于MySQL5来说,要显式地设定好字符集

诶我忘记加了怎么办?趁着现在数据库还没啥东西,删了重建就行了(手动滑稽~

⚠插入的列类型要和列头匹配

插入datetime类型的数据时,插入的数据要按照格式 YYYY-MM-DD HH:MM:SS 来填充,数据库会自动把你输入的时间转为8个字节的时间戳

sql是一种编程语言,我们可以使用自带的库函数now()把当前时间插入到里面 


指定列插入 

第二种错误换一种写法就对了

表示这一次插入只插入id这一列(可以指定多个列名,使用","分割即可)

也可以只插入名字到name那一列

现在看看表的状态

没有问题😊


多行插入

每条记录用","分割就行

这种多行插入执行效率会比一行一行插入高

MySQL是一种客户端-服务器结构的程序,通过网络互传数据

如果分多个sql进行,意味这个过程中就会有多次网络交互,服务器收到请求后也要进行多次对应处理(语法检查,数据校验,定位插入数据...),这样效率就很低

如果一次操作,虽然单次操作消耗时间长一点,但是网络开销、服务器检查开销都只用进行1次


查询(Retrieve)

列查询

全列查询

select * from 表名;

这里的*指的是通配符,可以表示任何一列

在公司中一般不要敲select * ,因为一旦数据量很大,这个操作会产生大量的硬盘IO和网络IO,可能把硬盘或网卡的带宽吃满(类似于堵车)

带宽吃满了,此时服务器就无法正常相应其他客户端的请求了

搜狗公司的解决方式:

给每个服务器配上两个网卡,一个用来传输数据,一个用来控制命令

数据网卡吃满了,不耽误另一个控制网卡来接收

阿里巴巴的解决方式:

用钱解决,直接上万兆网卡,相比于千兆网卡,这个更不容易堵死

相当于4条车道扩充到40条车道


指定列查询

指定列查询可以只查一两列,消耗的硬盘/网络带宽只有之前的几分之一

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

这种查询方式也不是万无一失,如果查的列行数巨多,也可能把路堵死


表达式查询

把查询出的每一行带入表达式进行计算

现在有这么一张表

查询每个同学英语成绩+10的情况

1.当前的表达式查询,并不会修改服务器硬盘中存储的数据本体,只是在查询结果的基础上进行计算的,得到的是一个临时表,查询操作结束,临时表里面的数据就消散了

所有的select都只是在操作临时表

2.此处查询出来的临时表,每个列的类型不再受限于原始表

原始表中,english列的数据类型是decimal(3,1),即长度限制为3,小数点后限制1位

但是在临时表中我们发现100.0这已经不符合长度为3这个限制了

=========================================================================

表达式还可以对多个列进行运算,但无法针对行和行之间进行运算

查询的表达式是啥,临时表的列名就是啥,如果列名都很长,最后临时表的列名可读性会变差

那就可以用下面的方法 

给查询结果指定别名

通俗来讲就是起绰号

select 表达式 as 别名 from 表名;

别名不一定要给列起,也可以给表起


查询去重

查询结果中如果存在重复的元素,就只保留一个

select distinct 列名 from 表名;

如果列里面有数据重复就把值相同的记录合并成一个 

如果是多个列一起查重,那只有多个列的值是相同的才算是重复

比如name和math一起去重,虽然math这一列有相同的值,但是name列两个98对应的名字不一样啊,所以就不去重


查询的同时进行排序

select 列名 from 表名 order by 列名;

如果一个查询语句没有order by,那反馈出来的临时表数据之间的顺序是不可预期的

所以一定要有一个order by确定一个顺序

这里默认是一个升序排序,在刚刚查询语句后面加个desc就是降序了

此处的desc ≠ describe 而是 = descand(降序) 

order by可以指定多个列来进行排序,此时排序的列是带有优先级

前面的列(紧跟着order by的)优先级高,后面的列优先级低,优先级高的列值相同才会比较优先级低的列

先按照数学成绩排序,如果数学成绩相同,再按照语文成绩排序


条件查询(where)

查询的时候指定筛选条件,条件满足这个数据就被保留;不满足就直接跳过

注意:

1. = 在条件查询中表示比较是否相等(和C语言的==含义一样)

这里的NULL=NULL=>NULL其实相当于FALSE的意思,表示条件不成立

NULL表示单元格没填,这里的理解是没填和没填是不同的,不具有可比性

而下面的<=>的 NULL=NULL=>TRUE,这里的理解是没填和没填是相同的,都是空嘛~

2. 模糊匹配,指的是不要求完全一样,只要满足一定的规则就算匹配了

逻辑运算符

实操

1.查询英语成绩<60分的同学

2.查询语文成绩逼英语成绩好的同学

3.查询总分200分以下的同学

起个别名能不能让列更简洁呢?

显然不行,这里定义的别名不能被where感知到

⚠SQL执行顺序:

1.取出一条记录(遍历表);

2.把记录带入条件,判定是否满足

3.如果条件满足,再把select后面指定的列取出来,并进行一些表达式运算 

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


4.查询语文成绩大于80分,且英语成绩大于80分的同学

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

6. and的优先级大于or

第一条语句先执行math>70 and english>70,再执行or

对于曹孟德来说,and语句执行是false的,但是Chinese>80这个条件是true的,true or false = true

所以曹孟德同学在这张表里

第二条语句先执行括号里面的or语句,再执行and

曹孟德同学or语句为true,但是english >70 这个条件为false, true and false = false

所以此时曹孟德同学不会在这张表里

其实真正写代码的时候,我们不用过多在乎优先级,我们只要用括号显式表示哪个式子先执行就行了


 7. 查询语文成绩在 [80, 90] 分的同学及语文成绩 (between ... and ...)

第一种方法

第二种方法

8.查询数学成绩是 78 或者 59 或者 98 或者 99 分的同学及数学成绩(in)

9. like

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

_:匹配一个字符

写成%孙就是以孙为结尾;%孙%表示查询名字里有孙的名字

_用法和%差不多,只不过 '_'写在前面只能匹配一个字符

10 is (not) null;

但是不要用 = 号

这里的null = null -> null -> false -> 条件没有满足


分页查询(limit)

我们上面提到select * 这个操作很危险,可能一次查询出来的内容太多辣

分页查询就是解决上面问题的方案。 

我们常见的网站也有分页的效果

分页查询通过关键字limit来限制这一次的查询最多能查多少记录 

offset:描述当前结果从第几条开始获取

 


修改(update)

update 表名 set 列名 = 值 where 条件;

注意:update里面创建出来的表不是临时表!!! 

这里的set是设置的意思,此处的 = 就是赋值了

where 条件:表示要修改哪些行,定位的作用;条件不写就是修改所有了

1. 把孙悟空数学成绩改成80分

2. 把曹孟德数学改成60分,语文改成70分

3. 捞捞同学:将总成绩倒数前三的3位同学数学成绩+30分

先查出总成绩倒数前三的同学分别是何方神圣 

再查出这三位同学数学成绩分别是咋样的

期望通过update给他们数学成绩加30分

但是刘玄德同学+30分后变成115.0不符合decimal(3,1)的类型了

而且第二行一旦出错,第一行和第三行的成绩也加不上去

这个是sql的一个特性:“事务”,给定的一个sql语句就是一个整体,要么整个执行成功,要是失败就全部都不执行。我下一篇博客会讲到😊

🆗我们看到刘玄德同学数学还是挺不错的,捞给他30分怕是顶破天了,我们现在只给他们+10分

update也是蛮危险的操作,因为它撤回不了!!!


删除(delete)

delete from 表名 where 条件;

删掉孙悟空的成绩 

如果删除语句没有指定条件,就会全部删除

注意:这里的delete只是删除了表里面的数据,而drop table则是把表和表里的数据都删掉了

delete也是一个危险操作!!!


后续待更新~~

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

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

相关文章

wsl 命令详解

WSL 简介 WSL全称 Windows Subsystem for Linux &#xff0c;是微软开发的一个运行在Windows上的兼容层&#xff0c;它允许开发人员和用户直接在Windows上运行原生Linux二进制文件&#xff0c;而无需配置或修改系统。 WSL命令是用于管理和操作WSL子系统的工具。 常用WSL命令…

系统设计概念:生产 Web 应用的架构

在你使用的每个完美应用程序背后&#xff0c;都有一整套的架构、测试、监控和安全措施。今天&#xff0c;让我们来看看一个生产就绪应用程序的非常高层次的架构。 CI/CD 管道 我们的第一个关键领域是持续集成和持续部署——CI/CD 管道。 这确保我们的代码从存储库经过一系列测试…

Java核心知识点整理大全22-笔记

目录 19.1.14. CAP 一致性&#xff08;C&#xff09;&#xff1a; 可用性&#xff08;A&#xff09;&#xff1a; 分区容忍性&#xff08;P&#xff09;&#xff1a; 20. 一致性算法 20.1.1. Paxos Paxos 三种角色&#xff1a;Proposer&#xff0c;Acceptor&#xff0c;L…

YOLOv8独家原创改进:自研独家创新MSAM注意力,通道注意力升级,魔改CBAM

💡💡💡本文自研创新改进:MSAM(CBAM升级版):通道注意力具备多尺度性能,多分支深度卷积更好的提取多尺度特征,最后高效结合空间注意力 1)作为注意力MSAM使用; 推荐指数:五星 MSCA | 亲测在多个数据集能够实现涨点,对标CBAM。 在道路缺陷检测任务中,原始ma…

VMware通过ISO镜像安装window2016虚拟机

1.点文件->新建虚拟机 2.进入到下边页面 3.根据你的服务器硬件选择硬件兼容性 4.选择2016版本的windows(注&#xff1a;没有该版本的话选择最高版本) 5.根据你的需求选择引导设备( 启动过程&#xff1a; BIOS&#xff1a; 在计算机启动时&#xff0c;BIOS负责进行自检&#…

华天动力-OA8000 MyHttpServlet 文件上传漏洞复现

0x01 产品简介 华天动力OA是一款将先进的管理思想、 管理模式和软件技术、网络技术相结合&#xff0c;为用户提供了低成本、 高效能的协同办公和管理平台。 0x02 漏洞概述 华天动力OA MyHttpServlet 存在任意文件上传漏洞&#xff0c;未经身份认证的攻击者可上传恶意的raq文件…

Kanna库代码示例

编写一个使用Kanna库的网络爬虫程序。以下是代码的详细解释&#xff1a; swift import Kanna // 创建一个对象 let proxy Proxy(host: ") // 创建一个Kanna对象 let kanna Kanna(proxy: proxy) // 创建一个请求对象 let request Request(url: "") // 使用…

【算法刷题】Day8

文章目录 202. 快乐数解法&#xff1a; 11. 盛最多水的容器解法&#xff1a; 202. 快乐数 原题链接 拿到题&#xff0c;我们先看题干 把一个整数替换为每个位置上的数字平方和&#xff0c;有两种情况&#xff1a; 重复这个过程始终不到 1&#xff08;无限死循环&#xff09;结…

python基于YOLOv7系列模型【yolov7-tiny/yolov7/yolov7x】开发构建钢铁产业产品智能自动化检测识别系统

在前文的项目开发实践中&#xff0c;我们已经以钢铁产业产品缺陷检测数据场景为基准&#xff0c;陆续开发构建了多款目标检测模型&#xff0c;感兴趣的话可以自行阅读即可。 《YOLOv3老矣尚能战否&#xff1f;基于YOLOv3开发构建建钢铁产业产品智能自动化检测识别系统&#xf…

专业的事交给专业的公司来做,文件销毁 数据销毁 硬盘销毁

在当今信息化社会&#xff0c;数据和文件已经成为企业和个人生活中不可或缺的一部分。然而&#xff0c;随着数据量的不断增长&#xff0c;如何确保数据的安全性和隐私性成为了一个亟待解决的问题。为了解决这个问题&#xff0c;文件销毁、硬盘销毁、数据销毁和物料销毁等技术应…

无需部署服务器,如何结合内网穿透实现公网访问导航页工具Dashy

文章目录 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务&#xff0c;具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起&#xff0c;形成自己的导航…

【Python基础】协程(迭代器、生成器、协程、gevent介绍)

&#x1f308;欢迎来到Python专栏 &#x1f64b;&#x1f3fe;‍♀️作者介绍&#xff1a;前PLA队员 目前是一名普通本科大三的软件工程专业学生 &#x1f30f;IP坐标&#xff1a;湖北武汉 &#x1f349; 目前技术栈&#xff1a;C/C、Linux系统编程、计算机网络、数据结构、Mys…

Python爬虫遇到重定向URL问题时如何解决?

什么是重定向 重定向是指当用户请求一个URL时&#xff0c;服务器返回一个中断请求的URL的响应。这种情况通常发生在网站对URL进行了修改或者重定向到其他页面的情况下。其中&#xff0c;如果处理不当开发&#xff0c;可能会导致爬虫无法获取所需的数据&#xff0c;从而影响爬虫…

具有“真实触感”的动捕数据手套mhand pro,提供更精确的动作捕捉

随着人工智能的普及和万物互联&#xff0c;vr虚拟技术备受关注&#xff0c;为了更加真实的虚拟现实交互体验&#xff0c;动捕数据手套的使用逐渐普及&#xff0c;vr手套可以实时采集各手指关节运动数据&#xff0c;使用动捕数据手套可以在虚拟现实的场景中实现对真实手部运动的…

H3C堆叠和聚合配置

因ensp做不了堆叠&#xff0c;所以用了华三的模拟器HCL&#xff0c;下载地址&#xff1a;H3C网络设备模拟器官方免费下载-新华三集团-H3C 拓朴如下&#xff1a; 1、堆叠配置步骤如下&#xff1a; 1、S1和S2配置堆叠过程&#xff1a; [S1] irf domain 1 irf member 1 priority …

如何通过CRM实现客户关系管理?

——“小米加步枪是打不赢现代化战争的。” ——”CRM系统已成为企业掘金未来的必备。“ 数字化转型已经成为了企业发展的重要方向&#xff0c;然而数字化转型不仅仅是把线下搬到线上&#xff0c;更重要的是&#xff0c;真正的数字化转型应该以客户的连接和客户的数字化作为突破…

义无反顾马督工,Bert-vits2V210复刻马督工实践(Python3.10)

Bert-vits2更新了版本V210&#xff0c;修正了日/英的bert对齐问题&#xff0c;效果进一步优化&#xff1b;对底模使用的数据进行优化和加量&#xff0c;减少finetune失败以及电音的可能性&#xff1b;日语bert更换了模型&#xff0c;完善了多语言推理。 更多情报请参考Bert-vi…

【Openstack Train安装】五、Memcached/Etcd安装

本文介绍Memcached/Etcd安装步骤&#xff0c;Memcached/Etcd仅需在控制节点安装。 在按照本教程安装之前&#xff0c;请确保完成以下配置&#xff1a; 【Openstack Train安装】一、虚拟机创建 【Openstack Train安装】二、NTP安装 【Openstack Train安装】三、openstack安装…

PC端ssh连接到Android手机的Termux部署http服务器

1. 下载并安装Termux至Android手机 Releases termux/termux-app (github.com) https://github.com/termux/termux-app/releases 2. 手机端启动Termux&#xff0c;安装openssh #更新仓库 pkg up pkg install openssh #安装好后&#xff0c;启动sshd sshd问题1&#xff1a;如…

光学3D表面轮廓仪超0.1nm纵向分辨能力,让显微形貌分毫毕现

在工业应用中&#xff0c;光学3D表面轮廓仪超0.1nm的纵向分辨能力能够高精度测量物体的表面形貌&#xff0c;可用于质量控制、表面工程和纳米制造等领域。 与其它表面形貌测量方法相比&#xff0c;光学3D表面轮廓仪达到纳米级别的相移干涉法(PSI)和垂直扫描干涉法(VSI)&#x…