openGauss学习笔记-17 openGauss 简单数据管理-表达式

文章目录

    • openGauss学习笔记-17 openGauss 简单数据管理-表达式
      • 17.1 简单表达式
      • 17.2 条件表达式
      • 17.3 子查询表达式
      • 17.4 数组表达式
      • 17.5 行表达式

openGauss学习笔记-17 openGauss 简单数据管理-表达式

表达式类似一个公式,我们可以将其应用在查询语句中,用来查找数据库中指定条件的结果集。

17.1 简单表达式

  • 逻辑表达式

    逻辑表达式的操作符和运算规则,详情请参见逻辑操作符

  • 比较表达式

    常用的比较操作符,请参见操作符

    除比较操作符外,还可以使用以下句式结构:

    • BETWEEN操作符

      a BETWEEN x AND y等效于a >= x AND a <= y

      a NOT BETWEEN x AND y等效于a < x OR a > y

    • 检查一个值是不是NULL,可使用:

      expression IS NULL

      expression IS NOT NULL

      或者与之等价的句式结构,但不是标准的:

      expression ISNULL

      expression NOTNULL

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-POZ5jYzX-1689988049820)(https://docs.opengauss.org/zh/docs/5.0.0/docs/BriefTutorial/public_sys-resources/icon-notice.gif)] 须知: 不要写expression=NULL或expression<>(!=)NULL,因为NULL代表一个未知的值,不能通过该表达式判断两个未知值是否相等。

  • is distinct from/is not distinct from

    • is distinct from

      A和B的数据类型、值不完全相同时为true。

      A和B的数据类型、值完全相同时为false。

      将空值视为相同。

    • is not distinct from

      A和B的数据类型、值不完全相同时为false。

      A和B的数据类型、值完全相同时为true。

      将空值视为相同。

  • 伪列(ROWNUM)

    ROWNUM是一个伪列,它返回一个数字,表示从查询中获取结果的行编号。第一行的ROWNUM为1,第二行的为2,依此类推。ROWNUM的返回类型为numeric。ROWNUM可以用于限制查询返回的总行数,例如下面语句限制查询从customer_t1表中返回最多3条记录。

    openGauss=# SELECT * FROM customer_t1 WHERE ROWNUM <= 3;c_customer_sk | c_customer_id | c_first_name | c_last_name | amount
    ---------------+---------------+--------------+-------------+--------3869 | hello         | Grace        |             |   10003869 | hello         | Grace        |             |   10003869 |               | Grace        |             |
    (3 rows)
    

17.2 条件表达式

在执行SQL语句时,可通过条件表达式筛选出符合条件的数据。

条件表达式主要有以下几种:

  • CASE

    CASE表达式是条件表达式,类似于其他编程语言中的CASE语句。

    CASE表达式的语法图请参考图1

    图 1

    img

    CASE子句可以用于合法的表达式中。condition是一个返回BOOLEAN数据类型的表达式:

    • 如果结果为真,CASE表达式的结果就是符合该条件所对应的result。
    • 如果结果为假,则以相同方式处理随后的WHEN或ELSE子句。
    • 如果各WHEN condition都不为真,表达式的结果就是在ELSE子句执行的result。如果省略了ELSE子句且没有匹配的条件,结果为NULL。

    示例:

    注:如果模式tpcds不存在。请创建模式tpcds后,再进行建表操作。

    openGauss=# CREATE TABLE tpcds.case_when_t1(CW_COL1 INT);openGauss=# INSERT INTO tpcds.case_when_t1 VALUES (1), (2), (3);openGauss=# SELECT * FROM tpcds.case_when_t1;
    cw_col1 
    ---------123
    (3 rows)openGauss=# SELECT CW_COL1, CASE WHEN CW_COL1=1 THEN 'one' WHEN CW_COL1=2 THEN 'two' ELSE 'other' END FROM tpcds.case_when_t1 ORDER BY 1;cw_col1 | case  
    ---------+-------1 | one2 | two3 | other
    (3 rows)openGauss=# DROP TABLE tpcds.case_when_t1;
    
  • DECODE

    DECODE的语法图请参见图2

    图 2
    decode

    将表达式base_expr与后面的每个compare(n) 进行比较,如果匹配返回相应的value(n)。如果没有发生匹配,则返回default。

    示例:

    openGauss=# SELECT DECODE('A','A',1,'B',2,0);case 
    ------1
    (1 row)
    
  • COALESCE

    COALESCE的语法图请参见图3

    图 3
    coalesce

    COALESCE返回它的第一个非NULL的参数值。如果参数都为NULL,则返回NULL。它常用于在显示数据时用缺省值替换NULL。和CASE表达式一样,COALESCE只计算用来判断结果的参数,即在第一个非空参数右边的参数不会被计算。

    示例:

    注:如果模式tpcds不存在。请创建模式tpcds后,再进行建表操作。

    openGauss=# CREATE TABLE tpcds.c_tabl(AboutopenGauss varchar(10), short_AboutopenGauss varchar(10), last_value varchar(10)) ;openGauss=# INSERT INTO tpcds.c_tabl VALUES('abc', 'efg', '123');
    openGauss=# INSERT INTO tpcds.c_tabl VALUES(NULL, 'efg', '123');openGauss=# INSERT INTO tpcds.c_tabl VALUES(NULL, NULL, '123');openGauss=# SELECT AboutopenGauss, short_AboutopenGauss, last_value, COALESCE(AboutopenGauss, short_AboutopenGauss, last_value) FROM tpcds.c_tabl ORDER BY 1, 2, 3, 4;AboutopenGauss | short_AboutopenGauss | last_value | coalesce
    -------------+-------------------+------------+----------abc         | efg               | 123        | abc| efg               | 123        | efg|                   | 123        | 123
    (3 rows)openGauss=# DROP TABLE tpcds.c_tabl;
    

    如果AboutopenGauss不为NULL,则返回AboutopenGauss的值,否则计算下一个参数short_AboutopenGauss;如果short_AboutopenGauss不为NULL,则返回short_AboutopenGauss的值,否则计算下一个参数last_value;如果last_value不为NULL,则返回last_value的值,否则返回(none)。

    openGauss=# SELECT COALESCE(NULL,'Hello World');coalesce    
    ---------------Hello World
    (1 row)
    
  • NULLIF

    NULLIF的语法图请参见图4

    图 4
    nullif

    只有当value1和value2相等时,NULLIF才返回NULL。否则它返回value1。

    示例:

    注:如果模式tpcds不存在。请创建模式tpcds后,再进行建表操作。

    openGauss=# CREATE TABLE tpcds.null_if_t1 (NI_VALUE1 VARCHAR(10),NI_VALUE2 VARCHAR(10)
    );openGauss=# INSERT INTO tpcds.null_if_t1 VALUES('abc', 'abc');
    openGauss=# INSERT INTO tpcds.null_if_t1 VALUES('abc', 'efg');openGauss=# SELECT NI_VALUE1, NI_VALUE2, NULLIF(NI_VALUE1, NI_VALUE2) FROM tpcds.null_if_t1 ORDER BY 1, 2, 3;ni_value1 | ni_value2 | nullif 
    -----------+-----------+--------abc       | abc       | abc       | efg       | abc
    (2 rows)
    openGauss=# DROP TABLE tpcds.null_if_t1;
    

    如果value1等于value2则返回NULL,否则返回value1。

    openGauss=# SELECT NULLIF('Hello','Hello World');nullif 
    --------Hello
    (1 row)
    
  • GREATEST(最大值),LEAST(最小值)

    GREATEST的语法图请参见图5

    图 5
    greatest

    从一个任意数字表达式的列表里选取最大的数值。

    openGauss=# SELECT greatest(9000,155555,2.01);greatest 
    ----------155555
    (1 row)
    

    LEAST的语法图请参见图6

    图 6
    least

    从一个任意数字表达式的列表里选取最小的数值。

    以上的数字表达式必须都可以转换成一个普通的数据类型,该数据类型将是结果类型。

    列表中的NULL值将被忽略。只有所有表达式的结果都是NULL的时候,结果才是NULL。

    示例:

    openGauss=# SELECT least(9000,2);least 
    -------2
    (1 row)
    
  • NVL

    NVL的语法图请参见图7

    图 7
    nvl

    如果value1为NULL则返回value2,如果value1非NULL,则返回value1。

    示例:

    openGauss=# SELECT nvl(null,1);
    nvl 
    -----1
    (1 row)openGauss=# SELECT nvl ('Hello World' ,1);nvl      
    ---------------Hello World
    (1 row)
    

17.3 子查询表达式

子查询表达式主要有以下几种:

  • EXISTS/NOT EXISTS

    EXISTS/NOT EXISTS的语法图请参见图8

    图 8
    EXISTS-NOT-EXISTS

    EXISTS的参数是一个任意的SELECT语句,或者说子查询。系统对子查询进行运算以判断它是否返回行。如果它至少返回一行,则EXISTS结果就为"真";如果子查询没有返回任何行, EXISTS的结果是"假"。

    这个子查询通常只是运行到能判断它是否可以生成至少一行为止,而不是等到全部结束。

    示例:

    注:下面查询语句中tpcds是模式名。

    openGauss=# SELECT sr_reason_sk,sr_customer_sk FROM tpcds.store_returns WHERE EXISTS (SELECT d_dom FROM tpcds.date_dim WHERE d_dom = store_returns.sr_reason_sk and sr_customer_sk <10);
    sr_reason_sk | sr_customer_sk 
    --------------+----------------13 |              222 |              517 |              725 |              73 |              731 |              57 |              714 |              620 |              45 |              610 |              31 |              515 |              24 |              126 |              3
    (15 rows)
    
  • IN/NOT IN

    IN/NOT IN的语法请参见图9

    图 9
    IN-NOT-IN

    右边是一个圆括弧括起来的子查询,它必须只返回一个字段。左边表达式对子查询结果的每一行进行一次计算和比较。如果找到任何相等的子查询行,则IN结果为"真"。如果没有找到任何相等行,则结果为"假"(包括子查询没有返回任何行的情况)。

    表达式或子查询行里的NULL遵照SQL处理布尔值和NULL组合时的规则。如果两个行对应的字段都相等且非空,则这两行相等;如果任意对应字段不等且非空,则这两行不等;否则结果是未知(NULL)。如果每一行的结果都是不等或NULL ,并且至少有一个NULL ,则IN的结果是NULL 。

    示例:

    注:下面查询语句中tpcds是模式名。

    openGauss=# SELECT sr_reason_sk,sr_customer_sk  FROM tpcds.store_returns WHERE sr_customer_sk IN (SELECT d_dom FROM tpcds.date_dim WHERE d_dom < 10);
    sr_reason_sk | sr_customer_sk 
    --------------+----------------10 |              326 |              322 |              531 |              51 |              532 |              532 |              54 |              115 |              213 |              233 |              420 |              433 |              85 |              614 |              617 |              73 |              725 |              77 |              7
    (19 rows)
    
  • ANY/SOME

    ANY/SOME的语法图请参见图10

    图 10 any/some::=
    any-some

    右边是一个圆括弧括起来的子查询,它必须只返回一个字段。左边表达式使用operator对子查询结果的每一行进行一次计算和比较,其结果必须是布尔值。如果至少获得一个真值,则ANY结果为“真”。如果全部获得假值,则结果是“假”(包括子查询没有返回任何行的情况)。SOME是ANY的同义词。IN与ANY可以等效替换 。

    示例:

    注:下面查询语句中tpcds是模式名。

    openGauss=# SELECT sr_reason_sk,sr_customer_sk  FROM tpcds.store_returns WHERE sr_customer_sk < ANY (SELECT d_dom FROM tpcds.date_dim WHERE d_dom < 10);
    sr_reason_sk | sr_customer_sk 
    --------------+----------------26 |              317 |              732 |              532 |              513 |              231 |              525 |              75 |              67 |              710 |              31 |              514 |              64 |              13 |              722 |              533 |              420 |              433 |              815 |              2
    (19 rows)
    
  • ALL

    ALL的语法请参见图11

    图 11
    all

    右边是一个圆括弧括起来的子查询,它必须只返回一个字段。左边表达式使用operator对子查询结果的每一行进行一次计算和比较,其结果必须是布尔值。如果全部获得真值,ALL结果为"真"(包括子查询没有返回任何行的情况)。如果至少获得一个假值,则结果是"假"。

    示例:

    注:下面查询语句中tpcds是模式名。

    openGauss=# SELECT sr_reason_sk,sr_customer_sk  FROM tpcds.store_returns WHERE sr_customer_sk < all(SELECT d_dom FROM tpcds.date_dim WHERE d_dom < 10);sr_reason_sk | sr_customer_sk 
    --------------+----------------
    (0 rows)
    

17.4 数组表达式

  • IN

    expression **IN ** (value [, …])

    右侧括号中的是一个表达式列表。左侧表达式的结果与表达式列表的内容进行比较。如果列表中的内容符合左侧表达式的结果,则IN的结果为true。如果没有相符的结果,则IN的结果为false。

    示例:

    openGauss=# SELECT 8000+500 IN (10000, 9000) AS RESULT;result 
    ----------f
    (1 row)
    

    如果表达式结果为null,或者表达式列表不符合表达式的条件且右侧表达式列表返回结果至少一处为空,则IN的返回结果为null,而不是false。这样的处理方式和SQL返回空值的布尔组合规则是一致的。

  • NOT IN

    expression NOT IN (value [, …])

    右侧括号中的是一个表达式列表。左侧表达式的结果与表达式列表的内容进行比较。如果在列表中的内容没有符合左侧表达式结果的内容,则NOT IN的结果为true。如果有符合的内容,则NOT IN的结果为false。

    示例:

    openGauss=# SELECT 8000+500 NOT IN (10000, 9000) AS RESULT;result 
    ----------t
    (1 row)
    

    如果查询语句返回结果为空,或者表达式列表不符合表达式的条件且右侧表达式列表返回结果至少一处为空,则NOT IN的返回结果为null,而不是false。这样的处理方式和SQL返回空值的布尔组合规则是一致的。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rpif6ubg-1689988049828)(https://docs.opengauss.org/zh/docs/5.0.0/docs/BriefTutorial/public_sys-resources/icon-note.gif)] 说明: 在所有情况下X NOT IN Y等价于NOT(X IN Y)。

  • ANY/SOME(array)

    expression operator **ANY ** (array expression)

    expression operator **SOME ** (array expression)

    右侧括号中的是一个数组表达式,它必须产生一个数组值。左侧表达式的结果使用操作符对数组表达式的每一行结果都进行计算和比较,比较结果必须是布尔值。

    • 如果对比结果至少获取一个真值,则ANY的结果为true。
    • 如果对比结果没有真值,则ANY的结果为false。
    • 如果结果没有真值,并且数组表达式生成至少一个值为null,则ANY的值为NULL,而不是false。这样的处理方式和SQL返回空值的布尔组合规则是一致的。
    • SOME是ANY的同义词。

    示例:

    openGauss=# SELECT 8000+500 < SOME (array[10000,9000]) AS RESULT;result 
    ----------t
    (1 row)openGauss=# SELECT 8000+500 < ANY (array[10000,9000]) AS RESULT;result 
    ----------t
    (1 row)
    
  • ALL(array)

    expression operator **ALL ** (array expression)

    右侧括号中的是一个数组表达式,它必须产生一个数组值。左侧表达式的结果使用操作符对数组表达式的每一行结果都进行计算和比较,比较结果必须是布尔值。

    • 如果所有的比较结果都为真值(包括数组不含任何元素的情况),则ALL的结果为true。
    • 如果存在一个或多个比较结果为假值,则ALL的结果为false。
    • 如果数组表达式产生一个NULL数组,则ALL的结果为NULL。如果左边表达式的值为NULL ,则ALL的结果通常也为NULL(某些不严格的比较操作符可能得到不同的结果)。另外,如果右边的数组表达式中包含null元素并且比较结果没有假值,则ALL的结果将是NULL(某些不严格的比较操作符可能得到不同的结果), 而不是真。这样的处理方式和SQL返回空值的布尔组合规则是一致的。

    示例

    openGauss=# SELECT 8000+500 < ALL (array[10000,9000]) AS RESULT;result
    ----------t
    (1 row)
    

17.5 行表达式

语法如下:

row_constructor operator row_constructor

两边都是一个行构造器,两行值必须具有相同数目的字段,每一行都进行比较,行比较允许使用=,<>,<,<=,>=等操作符,或其中一个相似的语义符。

=<>和别的操作符使用略有不同。如果两行值的所有字段都是非空并且相等,则认为两行是相等的;如果两行值的任意字段为非空并且不相等,则认为两行是不相等的;否则比较结果是未知的(null)。

对于<,<=,>,> =的情况下,行中元素从左到右依次比较,直到遇到一对不相等的元素或者一对为空的元素。如果这对元素中存在至少一个null值,则比较结果是未知的(null),否则这对元素的比较结果为最终的结果。

示例:

openGauss=# SELECT ROW(1,2,NULL) < ROW(1,3,0) AS RESULT;result
----------t
(1 row)

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

image-20230404214304392

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

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

相关文章

25 MFC 数据库

文章目录 导入ADO库 导入ADO库 #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")void CADODlg::OnBnClickedBtnQuery() {//导入ADO库::CoInitialize(NULL);//初始化COM库_ConnectionPtr pCo…

《面试1v1》如何提高远程用户的吞吐量

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…

Flutter动画库:animations(路由过渡动画或者页面切换动画)

animations animations 是一个 Flutter 库&#xff0c;它提供了一组用于创建动画效果的工具和组件。这个库的核心重点是路由过渡动画或者页面切换动画 地址 https://pub-web.flutter-io.cn/packages/animations 安装 flutter pub add animations看了下官方文档和官方例子&a…

计科web常见错误排错【HTTP状态404、导航栏无法点开、字符乱码及前后端数据传输呈现、jsp填写的数据传到数据库显示null、HTTP状态500】

web排错记录 在使用javaweb的过程中会出现的一些错误请在下方目录查找。 目录 错误1&#xff1a;HTTP状态404——未找到 错误2&#xff1a;导航栏下拉菜单无法点开的问题 错误3&#xff1a;字符乱码问题 错误4&#xff1a;jsp网页全部都是&#xff1f;&#xff1f;&#x…

【单片机】MSP430F149单片机,晨启,音乐播放器,蜂鸣器音乐

四、音乐播放器 任务要求&#xff1a; 设计制作一个简易音乐播放器&#xff08;通过手柄板上的蜂鸣器发声&#xff0c;播放2到4首音 乐&#xff09;&#xff0c;同时LED模块闪烁&#xff0c;给人视、听觉美的感受。 评分细则&#xff1a; 按下播放按键P15开始播放音乐&#x…

【C++】继承基础知识及简单应用,使用reportSingleClassLayout(在Visual Studio开发人员命令提示窗口)查看派生类详细信息

author&#xff1a;&Carlton tag&#xff1a;C topic&#xff1a;【C】继承基础知识及简单应用&#xff0c;使用reportSingleClassLayout&#xff08;在Visual Studio开发人员命令提示窗口&#xff09;查看派生类详细信息 website&#xff1a;黑马程序员C date&#xf…

微信小程序原生上传图片和预览+云函数上传

1.前台页面 1.1wxml问阿金 <!-- 说明一个上传页面的按钮 --> <button type"primary" bindtap"uploadPage">上传页面展示</button> <!-- 声明一个上传服务器的按钮 --> <button type"warn" bindtap"uploadSeve…

第四讲:MySQL中DDL一些基本数据类型及表的创建、查询

目录 1、创建表:2、DDL一些基本数据类型&#xff1a; 1、创建表: 部分单词及解析&#xff1a; 1、tables:表 2、comment:评论&#xff0c;解释 3、gender:性别 4、neighbor&#xff1a;邻居 1、创建表&#xff1a;&#xff08;注&#xff1a;在自定义数据库操作&#xff0c;…

spring中bean实例化的三种方式 -- Spring入门(二)

文章目录 前言1.Bean实例化简介2.bean的实例化 -- 构造方法3.bean的实例化 -- 静态工厂实例化4.bean实例化 -- 实例工厂和FactoryBean5.三种bean实例化方式的区别 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。…

Leetcode 112. 路径总和

题目链接&#xff1a;https://leetcode.cn/problems/path-sum/description/ 思路 递归&#xff0c;先序遍历二叉树&#xff0c;每遍历一个节点便减去当前存储值&#xff08;targetSum targetSum - root.val&#xff09;&#xff1b;当到达某个节点等于targetSum (targetSum…

labview 子画面插入面板

1.前言 在前面一篇文章中描述了弹框式显示子画面&#xff0c; labview 弹窗(子vi)_weixin_39926429的博客-CSDN博客 本文介绍插入式显示子画面。 本文的主题在以前的文章中介绍过&#xff0c; labview 插入子面板_labview插入子面板_weixin_39926429的博客-CSDN博客 借用…

机器学习算法分类

机器学习根据任务的不同&#xff0c;可以分为监督学习、无监督学习、半监督学习、强化学习。 1. 无监督学习 训练数据不包含任何类别信息。无监督学习里典型例子是聚类。要解决的问题是聚类问题和降维问题&#xff0c;聚类算法利用样本的特征&#xff0c;将具有相似特征的样本…

微服务 云原生:搭建 K8S 集群

为节约时间和成本&#xff0c;仅供学习使用&#xff0c;直接在两台虚拟机上模拟 K8S 集群搭建 踩坑之旅 系统环境&#xff1a;CentOS-7-x86_64-Minimal-2009 镜像&#xff0c;为方便起见&#xff0c;直接在 root 账户下操作&#xff0c;现实情况最好不要这样做。 基础准备 关…

React18和React16合成事件原理(附图)

&#x1f4a1; React18合成事件的处理原理 “绝对不是”给当前元素基于addEventListener做的事件绑定&#xff0c;React中的合成事件&#xff0c;都是基于“事件委托”处理的&#xff01; 在React17及以后版本&#xff0c;都是委托给#root这个容器&#xff08;捕获和冒泡都做了…

【java】java中注解的简介,如何自定义注解,有哪些类型,有什么作用

java注解 注解的定义 Java 注解用于为 Java 代码提供元数据。作为元数据&#xff0c;注解不直接影响你的代码执行&#xff0c;但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 Java5 开始添加到 Java 的。 首先要明确一点的是&#xff0c;注解并没有实际的作用&…

八股文(消息队列)

文章目录 1. RabbitMQ特点2. 如何保证消息的可靠性3. RabbitMQ消息的顺序性4. 实现RabbitMQ的高可用性5. 如何解决消息队列的延时以及过期失效问题&#xff1f;6. RabbitMQ死信队列7. RabbitMQ延迟队列8.RabbitMQ的工作模式9. RabbitMQ消息如何传输10. 核心概念10.1 生产者和消…

SpringBoot整合Spring Security实现权限控制

文章目录 Spring Security介绍Spring Security案例1、快速搭建一个springboot工程2、导入SpringSecurity整合springboot工程3、认证3.1、登录流程校验3.2、入门案例的原理3.3、实现思路3.4、实现认证流程&#xff08;自定义&#xff09;3.5、正式实现3.5.1 实现数据库的校验3.5…

python node Ubuntu 安装软件、删除软件 、更新软件 中的 软件源概念

在Node 用npm 安装软件 在Python 用 pip 安装软件 在Ubuntu 用 apt 、apt-get 、snap 安装软件 因为这三款软件 都是国外的&#xff0c; 软件包&#xff08;模块&#xff09;都放在国外的&#xff0c; 安装 、更新 特别慢 Node中配置 下载源 在 node 中 要配置 下载的的地址…

【C语言初阶】指针的运算or数组与指针的关系你了解吗?

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《快速入门C语言》《C语言初阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 &#x1f4cb; 前言&#x1f4ac; 指针运算&#x1f4ad; 指针-整数&#x1f4ad; 指针-指针&#x1f4ad; 指针…

关于K8s的Pod的详解(一)

关于K8s的Pod的详解&#xff08;一&#xff09; Pod和API server的通信加快Pod启动更改Pod的资源Pod 的持久卷的单个访问模式Pod 拓扑分布约束Pod 拓扑分布中的最小域数 Pod 作为k8s创建&#xff0c;调度&#xff0c;管理的基本单位。由上级的Controller对Node上安装的Kubelet发…