diff --git "a/25\346\235\250\344\270\260\345\215\216/\347\254\224\350\256\260/9.8\347\254\254\345\205\255\350\212\202\350\257\276 \345\255\220\346\237\245\350\257\242\344\270\213.md" "b/25\346\235\250\344\270\260\345\215\216/\347\254\224\350\256\260/9.8\347\254\254\345\205\255\350\212\202\350\257\276 \345\255\220\346\237\245\350\257\242\344\270\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..4e6e910c388e93ca2ffeb24b8f454e8b55353595 --- /dev/null +++ "b/25\346\235\250\344\270\260\345\215\216/\347\254\224\350\256\260/9.8\347\254\254\345\205\255\350\212\202\350\257\276 \345\255\220\346\237\245\350\257\242\344\270\213.md" @@ -0,0 +1,42 @@ +### 一、子查询 + +##### 1、exists子查询 + +EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False + +关键字EXISTS构造子查询时,当子查询的结果集不为空时,则EXISTS返回的结果为TRUE,外层查询语句进行查询;当子查询的结果集为空时,则EXISTS返回的结果为FALSE,外层查询语句不进行查询。 + + + +##### 2、例题 + +``` +--(1)查询学生表(tb-student)中,是否有学生读者的姓名是"黄弘" +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 '没有' + +--(2)查询书目表(tb-bibliography)中,库存数为0的书目名称(name) +``` + +NOT EXISTS 的作用与 EXISTS 正好相反。如果子查询没有返回行,则满足了 NOT EXISTS 中的 WHERE 子句。 + +### 二、排序函数 + +##### 1、排序函数 OVER + +其中ASC表示升序排列(默认值),DRSC 表示降序,在处理SELECT语句时,ORDER BY子句是处理的子句,因此可以在ORDRE BY 子句中引用SELECT 句子中定义的列别名 + +排序子句:ORDER BY + +##### 2、 + +ROW_NUMBER()函数生成的排序根据排序子句给出**递增连续的序号** + +RANK()函数生成的排序根据排序子句给出**递增的序号,但是存在并列并且跳空** + +DENSE_RANK() 函数生成的排序根据排序子句给出**递增的序号,但是存在并列不跳空** + + +