From adaa4b32a61c2809d86491d0145e597156fd64a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E9=A3=98?= <2422417047@qq.com> Date: Tue, 13 Sep 2022 23:34:27 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\347\220\206\357\274\210go\357\274\211.md" | 34 +++++++---- ...42\344\270\216\346\216\222\345\272\217.md" | 59 +++++++++++++++++++ 2 files changed, 81 insertions(+), 12 deletions(-) rename "40\345\221\250\351\243\230/\347\254\224\350\256\260/2022.09.07 \347\254\254\344\272\224\350\212\202\350\257\276-\345\255\220\346\237\245\350\257\242\344\270\216\346\211\271\345\244\204\347\220\206\357\274\210go\357\274\211.md" => "40\345\221\250\351\243\230/\347\254\224\350\256\260/2022.09.07 \347\254\254\344\272\224\350\212\202\350\257\276-\345\255\220\346\237\245\350\257\242\357\274\210\345\210\227\357\274\214\350\241\214\357\274\214\346\240\207\351\207\217\357\274\211\344\270\216\346\211\271\345\244\204\347\220\206\357\274\210go\357\274\211.md" (71%) create mode 100644 "40\345\221\250\351\243\230/\347\254\224\350\256\260/2022.09.08 \347\254\254\345\205\255\350\212\202\350\257\276-exists\345\255\220\346\237\245\350\257\242\344\270\216\346\216\222\345\272\217.md" diff --git "a/40\345\221\250\351\243\230/\347\254\224\350\256\260/2022.09.07 \347\254\254\344\272\224\350\212\202\350\257\276-\345\255\220\346\237\245\350\257\242\344\270\216\346\211\271\345\244\204\347\220\206\357\274\210go\357\274\211.md" "b/40\345\221\250\351\243\230/\347\254\224\350\256\260/2022.09.07 \347\254\254\344\272\224\350\212\202\350\257\276-\345\255\220\346\237\245\350\257\242\357\274\210\345\210\227\357\274\214\350\241\214\357\274\214\346\240\207\351\207\217\357\274\211\344\270\216\346\211\271\345\244\204\347\220\206\357\274\210go\357\274\211.md" similarity index 71% rename from "40\345\221\250\351\243\230/\347\254\224\350\256\260/2022.09.07 \347\254\254\344\272\224\350\212\202\350\257\276-\345\255\220\346\237\245\350\257\242\344\270\216\346\211\271\345\244\204\347\220\206\357\274\210go\357\274\211.md" rename to "40\345\221\250\351\243\230/\347\254\224\350\256\260/2022.09.07 \347\254\254\344\272\224\350\212\202\350\257\276-\345\255\220\346\237\245\350\257\242\357\274\210\345\210\227\357\274\214\350\241\214\357\274\214\346\240\207\351\207\217\357\274\211\344\270\216\346\211\271\345\244\204\347\220\206\357\274\210go\357\274\211.md" index 80e089c..4e3e150 100644 --- "a/40\345\221\250\351\243\230/\347\254\224\350\256\260/2022.09.07 \347\254\254\344\272\224\350\212\202\350\257\276-\345\255\220\346\237\245\350\257\242\344\270\216\346\211\271\345\244\204\347\220\206\357\274\210go\357\274\211.md" +++ "b/40\345\221\250\351\243\230/\347\254\224\350\256\260/2022.09.07 \347\254\254\344\272\224\350\212\202\350\257\276-\345\255\220\346\237\245\350\257\242\357\274\210\345\210\227\357\274\214\350\241\214\357\274\214\346\240\207\351\207\217\357\274\211\344\270\216\346\211\271\345\244\204\347\220\206\357\274\210go\357\274\211.md" @@ -19,15 +19,27 @@ -### 三、单行子查询 + + +### 三,标量子查询 : + +**通常可以使用连接查询替代** + +1,标量子查询是指子查询返回的是**单一值**,如一个数字或一个字符串。 + + + +### 四、行子查询 #### 1、单行子查询概念 -* 单行子查询指子查询的**返回结果只有一行数据**。当在主查询的条件语句中引用子查询的结果时,可使用单行比较符(如=、>、<、>=、<= 和 < >)进行比较 +* 单行子查询指子查询的**返回结果一行n列**。当在主查询的条件语句中引用子查询的结果时,可使用单行比较符(如=、>、<、>=、<= 和 < >)进行比较 -### 四、多行子查询 +### 五、列子查询 + +* **返回结果n行1列** #### 1、in关键字 @@ -37,26 +49,24 @@ * all 关键字位于多行比较运算符之后,通过 all 关键字将一个表达式或列的值与子查询所返回的一列值中的每一行进行比较,只要有一次比较的结果为 false,则 all 测试返回 false,主查询不执行;否则返回 true,执行主查询 -#### (1)all 含义: +##### (1)all 含义: * 当 all 时,表示大于最大值 -### 五、any|some 关键字子查询 - -#### 1,any|some关键字 +#### 3,any/some 关键字 ​ **any 与 some 的查询功能相同** * any 或 some 用于子查询之前,通过 any|some 比较运算符,将一个表达式或列的值与子查询所返回的一列值中的每一行进行比较,只要有一次比较的结果为 true,则 any 或 some 测试返回 true,主查询执行;否则结果为false,主查询不执行 -#### 2,any|some 运算符的含义如下: +##### (1)含义 -* 当 any|some 时,表示大于最小值 -* any与in用法相同 +* 当 >any/some 时,表示大于最小值 +* any与in等价 diff --git "a/40\345\221\250\351\243\230/\347\254\224\350\256\260/2022.09.08 \347\254\254\345\205\255\350\212\202\350\257\276-exists\345\255\220\346\237\245\350\257\242\344\270\216\346\216\222\345\272\217.md" "b/40\345\221\250\351\243\230/\347\254\224\350\256\260/2022.09.08 \347\254\254\345\205\255\350\212\202\350\257\276-exists\345\255\220\346\237\245\350\257\242\344\270\216\346\216\222\345\272\217.md" new file mode 100644 index 0000000..4a520e0 --- /dev/null +++ "b/40\345\221\250\351\243\230/\347\254\224\350\256\260/2022.09.08 \347\254\254\345\205\255\350\212\202\350\257\276-exists\345\255\220\346\237\245\350\257\242\344\270\216\346\216\222\345\272\217.md" @@ -0,0 +1,59 @@ +### 一,exists子查询 + +* 用于检查子查询是否至少会返回一行数据,返回值为true或false +* not exists 的作用与exists正好相反。如果子查询没有返回行,则满足了not exists 中的 where子句。 +* exists后括号里的查询语句也可以看成是某个条件 + +列; + +```sql +if exists(select stu_num from tb_record where stu_num in (select stu_num from tb_student where name='黄弘') and return_time is null) + print '有' +else + print '没有' +``` + + + +### 二、排序函数 + +#### 1、排序函数 over + +**其中asc表示升序排列(默认值),desc 表示降序,在处理select语句时,order by 子句是处理的子句,因此可以在order by 子句中引用select 句子中定义的列别名** + +* 排序函数 : OVER( [分组子句] 排序子句[DESC][ASC] ) + +* 排序子句 :ORDER BY 排序列,排序列… + + + +#### 2、ROW_NUMBER(),RANK(),DENSE_RANK() 的区别 + +* ROW_NUMBER()函数生成的排序根据排序子句给出**递增连续的序号** + +* RANK()函数生成的排序根据排序子句给出**递增的序号,但是存在并列并且跳空** + +* DENSE_RANK() 函数生成的排序根据排序子句给出**递增的序号,但是存在并列不跳空** + +```sql +--row_number()函数 +select StuName 姓名,ROW_NUMBER() over(order by score desc) 排名,score 分数 from StuScore +join stuinfo on StuInfo.StuID = StuScore.StuID +where subject = 'Java' + + + +--rank()函数 +select StuName 姓名,rank() over(order by score desc) 排名,score 分数 from StuScore +join stuinfo on StuInfo.StuID = StuScore.StuID +where subject = 'Java' + + + +--DENSE_RANK()函数 + select StuName 姓名,dense_rank() over(order by score desc) 排名,score 分数 from StuScore +join stuinfo on StuInfo.StuID = StuScore.StuID +where subject = 'Java' + +``` + -- Gitee