mysql curd_mysql 基础之CURD

article/2025/9/26 10:09:45

原文:mysql 基础之CURD

增删改查基本语法学习

增: insert

Insert 3问:

1: 插入哪张表?

2: 插入哪几列?

3: 这几列分别插入什么值?

Insert into TableName

(列1,列2....列n)

Values

(值1,值2,....值n)

值 与 列,按顺序,一一对应

特殊: insert语句 允不允许不写列名

答:允许.

如果没有声明列明,则默认插入所有列.

因此,值应该与全部列,按顺序一一对应.

例:建一张工资登记表

13b340b352941d871f1154fa3d258155.png

2:插入部分列

d12c5860aab8cdec723aa560ce1b356c.png

注:文中的set names gbk;是为了告诉服务器,客户端用的GBK编码,防止乱码.

4:插入所有的列的简单写法.

1298335be1d7970fb3e82c0d9f92f41d.png

insert 中数字不需要加单引号,会降低解析速度,字符窜必须加单引号,不然会报错!

改: Update语句

Update 4问

改哪张表?

改哪几列的值?

分别改为什么值?

在哪些行生效?

语法:

Update 表名

Set

列1 =新值1,

列2 =新值2,

列n =新值n.....

Where  expr

7ed717c0265b3687bff98011ee7718af.png

删除: delete

Delete 2问

从哪张表删除数据?

要删除哪些行?

语法:

Delete from 表名where  expr

0b13393833a508f8de767af61d68d083.png

查: select

查询3问

1:查哪张表的数据?

2:查哪些列的数据?

3:查哪些行的数据?

语法:

Select 列1,列2,列3,...列n

From 表名

Where expr;

e52b6198bd8f12954327a04fd0411411.png

排序:

磁盘里的数据可能排好序,也可能没排序,就需要到内存里面进行排序,这就比较浪费时间了。

当最终结果集出来后,可以进行排序.

排序的语法:

Order by 结果集中的列名desc/asc

例:order by shop_price desc ,按价格降序排列

Order by add_time asc ,按发布时间升序排列.

多字段排序也很容易

Order by 列1 desc/asc, 列2 desc/asc, 列3 desc,asc

Limit 在语句的最后,起到限制条目的作用,在分页类中发挥很大作用

Limit [offset,] N

Offset: 偏移量,----跳过几行

N: 取出条目

Offset,如果不写,则相当于limit 0,N

子查询

Where型子查询:指把内层查询的结果作为外层查询的比较条件.

典型题:查询最大商品,最贵商品

Where型子查询

如果 where列=(内层sql),则内层sql返回的必是单行单列,单个值

如果 where列in (内层sql),则内层sql只返回单列,可以多行.

From 型子查询:把内层的查询结果当成临时表,供外层sql再次查询

典型题:查询每个栏目下的最新/最贵商品

Exists子查询:把外层的查询结果,拿到内层,看内层的查询是否成立.

典型题:查询有商品的栏目

模糊查询:

案例:想查找"诺基亚"开头的所有商品

Like->像

% --> 通配任意字符

'_' --> 单个字符

查询模型(重要)

列就是变量,在每一行上,列的值都在变化.

Where条件是表达式,在哪一行上表达式为真,

哪一行就取出来

比如下面的条件, shop_price在不同的行,有不同的值.

在哪一行时,shop_price>5000如果为真,则这行取出来.

查询结果集--在结构上可以当成表看

select count(*) from 表名,查询的就是绝对的行数,哪怕某一行所有字段全为NULL,也计算在内.

而select couht(列名) from表名,

查询的是该列不为null的所有行的行数.

用count(*),count(1),谁好呢?

其实,对于myisam引擎的表,没有区别的.

这种引擎内部有一计数器在维护着行数.

Innodb的表,用count(*)直接读行数,效率很低,因为innodb真的要去数一遍.

437a6300215cffd40c3cb82d78fa6f93.png

左连接的语法:

假设A表在左,不动,B表在A表的右边滑动.

A表与B表通过一个关系来筛选B表的行.

语法:

A left join B on 条件  条件为真,则B表对应的行,取出

A left join B on 条件

这一块,形成的也是一个结果集,可以看成一张表 设为C

既如此,可以对C表作查询,自然where,group ,having ,order by ,limit照常使用

问:C表的可以查询的列有哪些列?

答: A B的列都可以查

/*

左连接 右连接,内连接的区别在哪儿?

*/

888a073ba18c6579f4859e61c324fd0a.png

主持人大声说:

所有的男士,站到舞台上,带上自己的配偶,(没有的拿块牌子,上写NULL)

思考:张三上不上舞台呢?

答:上,

问:张三没有对应的行怎么办?

答:用NULL补齐

结果如下

a4fd1a95b965d6e14c3b50f3e3b0be12.png

这种情况就是  男生  left join女生.

主持人说:所有女生请上舞台,有配偶的带着,没有的,写个NULL补齐.

Select 女生left join男生on条件

左右连接是可以互换的

A left join B, 就等价于B right join A

注意:既然左右连接可以互换,尽量用左连接,出于移植时兼容性方面的考虑.

内连接的特点

主持人说: 所有有配偶的男生/女生,走到舞台上来

这种情况下: 屌丝和宝钗都出局

83174f3cb2d99ecb87df4fb777710b76.png

如果从集合的角度

A inner join B

和 left join /rightjoin的关系

答: 内连接是左右连接的交集

主持人说:所有男生/女生,走上舞台.

有配偶的,带着配偶;

没配偶的,拿牌子写NULL

即:结果是左右连接的并集

这种叫做外连接,但是,在mysql中不支持外连接

Union:合并2条或多条语句的结果

语法:

Sql1 union sql2

能否从2张表查询再union呢?

答:可以,union合并的是"结果集",不区分在自于哪一张表.

问:取自于2张表,通过"别名"让2个结果集的列一致.

那么,如果取出的结果集,列名字不一样,还能否union.

答:可以,如下图,而且取出的最终列名,以第1条sql为准

58681cba8367b6c86a4c75b43e64fb7f.png

问:union满足什么条件就可以用了?

答:只要结果集中的列数一致就可以.

问: union后结果集,可否再排序呢?

答:可以的.

Sql1 union sql2 order by 字段

注意: order by是针对合并后的结果集排的序.

思考如下语句:

(SELECT goods_id,cat_id,goods_name,shop_price FROM goods WHERE cat_id = 4 ORDER BY shop_price DESC)

UNION

(SELECT goods_id,cat_id,goods_name,shop_price FROM goods WHERE cat_id = 5 ORDER BY shop_price DESC)

order by shop_price asc;

外层语句还要对最终结果,再次排序.

因此,内层的语句的排序,就没有意义.

因此:内层的order by语句单独使用,不会影响结果集,仅排序,

在执行期间,就被Mysql的代码分析器给优化掉了.

内层的order by必须能够影响结果集时,才有意义.

5830e0917532bd910eb5f0e6b01a38fb.png

这一次:内层的order by发挥了作用,因为有limit ,order会实际影响结果集,有意义.

如果Union后的结果有重复(即某2行,或N行,所有的列,值都一样),怎么办?

答:这种情况是比较常见的,默认会去重.

问:如果不想去重怎么办?

答: union all


http://chatgpt.dhexx.cn/article/IjZsPVWc.shtml

相关文章

小白入门:什么是CURD?

CRUD是CREATE、READ、UPDATE和DELETE的首字母缩写词,在数据库操作中频繁出现,本文针对小白,如果你已经是开发人员或者对数据库有一定认识的工程师可以默默离开了。让我直接走进CURD的世界。 为什么 CRUD 如此重要? CRUD 经常用于…

大龄焦虑?如何看待程序员35岁职业危机?

往期精选(欢迎转发~~) Java全套学习资料(14W字),耗时半年整理 消息队列:从选型到原理,一文带你全部掌握 肝了一个月的ETCD,从Raft原理到实践 我肝了三个月,为你写出了…

Sitemesh前段框架基础

用sitemesh框架解决项目统一布局的解决方案 Sitemesh装饰框架 Sitemesh项目简介: Sitemesh是一个用来在jsp中实现页面布局和装饰(layout and decoration)的框架组件,能够帮助网站开发人员较容易实现页面中动态和静态装饰外观的分…

Sitemesh Demo

简介 sitemesh是一个网页布局与装饰体系,主要应用于创建具有大量一致性用户界面、导航与布局框架的站点。sitemesh拦截一切经过web server的静态或动态生成的HTML页面请求,处理页面内容,并将其与一个或多个装饰页面进行融合,生成最终页面。sitemesh也可用于构建由多个部分小…

spring集成sitemesh3

1、SiteMesh是什么? SiteMesh是一个网页布局和修饰的框架,利用它可以将网页的内容和页面结构分离,以达到页面结构共享的目的。 SiteMesh是基于Servlet的filter,通过截取response,并进行装饰后再交付给客户。 2、SiteMe…

sitemesh框架的简单使用(springboot+maven+jsp+sitemesh)

一 简单介绍 sitemesh是一种模板框架,是为了解决页面重复代码而设计的sitemesh的设计思想是装饰者设计模式 二 简单使用 目录结构,因为我这个项目本来是用来学习flowable的,后面为了方便快速学习,直接把sitemesh集成到这里了&a…

SiteMesh3简介及使用

最近项目用到SiteMesh3,研究学习一段时间后决定写篇博文来记录收获。 SiteMesh SiteMesh 介绍工作原理配置及使用 下载1添加maven依赖2webxml中添加SiteMesh过滤器3创建一个装饰页面decorator page4创建一个被装饰页面content page5配置 1XML方式1Java方式 6查看…

sitemesh初步

sitemesh小项目 1.工程目录 2.需要的lib:sitemesh-2.4.2.jar http://wiki.sitemesh.org/wiki/display/sitemesh/Download 3.配置 decorators.xml[sitemesh的配置文件] <?xml version"1.0" encoding"ISO-8859-1"?><!-- 在defaultdir目录…

SiteMesh框架统一布局用法介绍

SiteMesh 是一个网页布局和修饰的框架&#xff0c;基于 Servlet 中的 Filter&#xff0c;类似于 ASP.NET 中的‘母版页’技术。 介绍&#xff1a; 1&#xff0c;SiteMesh是OpenSymphony团队开发的JEE框架之一,它是一个非常优秀的页面装饰器框架。它通过对所有的用户请求进行过…

SIteMesh介绍

转自:http://javauu.com/thread-27-1-1.html 一、SIteMesh介绍 一、SiteMesh简介 SiteMesh是由一个基于Web页面布局、装饰以及与现存Web应用整合的框架。它能帮助我们在由大量页面构成的项目中创建一致的页面布局和外观&#xff0c;如一致的导航条&#xff0c;一致的banner&a…

【CSRF】学习关于CSRF攻击和防范

文章目录 1.CSRF攻击是什么2.CSRF攻击如何实现2.1 使用GET请求的CSRF的攻击例子2.2 使用post请求的CSRF攻击 3.如何防御CSRF攻击3.1 什么是CSRF令牌3.2 反-CSRF令牌工作流程3.3 同站Cookie策略 4.结论 高质量原文&#xff1a; CSRF Attacks: Anatomy, Prevention, and XSRF To…

CSRF攻击简述

一.CSRF是什么&#xff1f; CSRF&#xff08;Cross-site request forgery&#xff09;&#xff0c;中文名称&#xff1a;跨站请求伪造&#xff0c;也被称为&#xff1a;one click attack/session riding&#xff0c;缩写为&#xff1a;CSRF/XSRF。 二.CSRF可以做什么&#xff…

如何防止CSRF攻击?

文章目录 一、什么是CSRF&#xff1f;二、CSRF的几种类型1、GET类型的CSRF2、POST类型的CSRF3、链接类型的CSRF 三、CSRF的特点四、防护策略1、同源检测如何阻止外域请求无法确认来源域名情况 2、CSRF Token原理1&#xff09;将CSRF Token输出到页面中2&#xff09;页面提交的请…

CSRF攻击原理以及防御方法

CSRF攻击原理以及防御方法 CSRF概念&#xff1a;CSRF跨站点请求伪造(Cross—Site Request Forgery)&#xff0c;跟XSS攻击一样&#xff0c;存在巨大的危害性&#xff0c;你可以这样来理解&#xff1a; 攻击者盗用了你的身份&#xff0c;以你的名义发送恶意请求&#xff0c;对服…

csrf攻击 java_Web常见攻击手段-CSRF攻击

什么是CSRF攻击&#xff1f; 跨站请求伪造(Cross-Site Request Forgery, CSRF)&#xff0c;恶意网站通过脚本向当前用户浏览器打开的其它页面的 URL 发起恶意请求&#xff0c;由于同一浏览器进程下 Cookie 可见性&#xff0c;导致用户身份被盗用&#xff0c;完成恶意网站脚本中…

什么是CSRF攻击?

什么是 CSRF 攻击&#xff1f; CSRF 概念&#xff1a;CSRF&#xff08;Cross-site request forgery&#xff09;跨站请求伪造&#xff0c;也被称为“One Click Attack”或者 Session Riding&#xff0c;通常缩写为 CSRF 或者 XSRF&#xff0c;是一种对网站的恶意利 用。 尽…

【Web 安全】CSRF 攻击详解

文章目录 一、CSRF 简介二、CSRF 原理三、CSRF 的危害四、CSRF 的攻击类型1. GET型2. POST型 五、CSRF 的防御1. 验证 HTTP Referer 字段2. 在请求地址中添加 token 并验证3. 在 HTTP 头中自定义属性并验证 六、WAF 防御 CSRF参考链接 一、CSRF 简介 CSRF&#xff08;Cross Si…

如何强制卸载软件,强制卸载的工具。

日常使用电脑过程中经常会遇到一些流氓捆绑软件&#xff0c;今天我们教大家如何轻松的强制卸载流氓软件。非常小巧而且强大的一款强制卸载工具&#xff0c;干净清爽。 工具/原料 Geek Uninstaller 方法/步骤 首先我们下载工具&#xff0c;百度输入geek点击搜索&#xff0c;如下…

HTML文件命名_没有删不掉的文件:强制终止、一键解锁,样样精通

微信搜一搜 麦克NO1 日常在使用电脑的时候&#xff0c;经常会遇到这样一个问题&#xff1a;想要删除某文件夹里的文件是&#xff0c;系统弹出&#xff1a;该文件无法删除、被系统占用等。那么&#xff0c;一旦遇到该问题该如何应对呢&#xff1f;以后不再担心&#xff0c;接下来…

使用管理员权限强制删除文件夹

1、鼠标右键要删除的文件&#xff0c;选择属性&#xff0c;如图所示&#xff1a;2、在界面中&#xff0c;切换到安全选项&#xff0c;点击编辑按钮&#xff0c;如图所示&#xff1a; 3、在窗口中&#xff0c;点击添加&#xff0c;接着在界面中输入对象名称来选择里面输入Admin…