永洪社区

标题: [个人分享]sql语句的关键词 [打印本页]

作者: 钮祜禄甄嬛    时间: 2022-12-7 17:15
标题: [个人分享]sql语句的关键词
一.left join

1.定义:

     left join:是SQL语言中的查询类型,即连接查询。它的全称为左外连接(left outer join),是外连接的一种。

2.用法:

     连接通常可以在select语句的from子句或where子句中建立,其语法格式为:

        from join_table join_type join_table

        [on (join_condition)]

        其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接称为自连接, join_type 为连接类型,可以是left join 或者outer join 或者inner join 。on (join_condition)用来指连接条件,它由被连接表中的列和比较运算符、逻辑运算符等构成。

3.实例:

     表A:                          表B

   ID Num                        ID String

   1 25420                       1  sadadf

   2 98781                       2  asada

   3 56506                       4  String

  sql语句:select * from A left join B on A.ID = B.ID;

  结果:

   ID Num  ID String

     1 25420  1 sadadf

     2 98781  2 asada

     3 56506  null null

4.总结:  left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的。换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID)。B表记录不足的地方均为NULL。



二.GroupBy

     1.定义:

     语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。

     2.用法:

      Group By [Expressions]:

      Group By + [分组字段](可以有多个)。在执行了这个操作以后,数据集将根据分组字段的值将一个数据集划分成各个不同的小组。

       Group By All [expressions] :

       Group By All + 分组字段, 这个和前面提到的Group By [Expressions]的形式多了一个关键字ALL。这个关键字只有在使用了where语句且where条件筛选掉了一些组的情况下才可以看出效果。

     3.实例:

     FruitName   ProductPlace   Price   Discount  

     Apple   China   $1.1   0.8  

     Apple   USA   $2.5   1.0  

     Orange   China   $0.8   NULL  

     Banana   China   $3.1   NULL  

    sql语句:SELECT COUNT(*) AS ProductCount, Discount FROM T_TEST_FRUITINFO GROUP BY Discount WITH ROLLUP

      结果:

      ProductCount   Discount  

      2                       NULL

      1                       0.8

      1                       0.1



三.order by      

   1.定义:SQL语句中的关键字,用于对查询结果的排序。SQL ORDER BY 子句Previous PageNext Page,ORDER BY 语句用于对结界集进行排序。

   2.实例:   

  表:

Company
OrderNumber
IBM
3532
W3School
2356
Apple
4698
W3School
6953
       ORDER BY Company:

结果:

Company
OrderNumber
Apple
4698
IBM
3532
W3School
6953
W3School
2356


四.having

  1.用法:

   HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 子句和 SELECT 语句交互的方式类似。WHERE 子句搜索条件在进行分组操作之前应用;而 HAVING 搜索条件在进行分组操作之后应用。HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。HAVING 子句可以引用选择列表中出现的任意项。

  2.区别:

   WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。

   GROUP BY 子句用来分组 WHERE 子句的输出。

   HAVING 子句用来从分组的结果中筛选行。



五.总结:

    Group By, Having, Where, Order by几个语句的执行顺序。一个SQL语句往往会产生多个临时视图,那么这些关键字的执行顺序就非常重要了,必须了解这个关键字是在对应视图形成前的字段进行操作还是对形成的临时视图进行操作,这个问题在使用了别名的视图尤其重要。以上列举的关键字是按照如下顺序进行执行的:Where, Group By, Having, Order by。首先where将最原始记录中不满足条件的记录删除(所以应该在where语句中尽量的将不符合条件的记录筛选掉,这样可以减少分组的次数),然后通过Group By关键字后面指定的分组条件将筛选得到的视图进行分组,接着系统根据Having关键字后面指定的筛选条件,将分组视图后不满足条件的记录筛选掉,然后按照Order By语句对视图进行排序,这样最终的结果就产生了。在这四个关键字中,只有在Order By语句中才可以使用最终视图的列名,如:

SELECT FruitName, ProductPlace, Price, ID AS IDE, Discount

FROM T_TEST_FRUITINFO

WHERE (ProductPlace = N'china')

ORDER BY IDE

这里只有在ORDER BY语句中才可以使用IDE,其他条件语句中如果需要引用列名则只能使用ID,而不能使用IDE。
————————————————

转载的转载的


作者: 十有八九    时间: 2022-12-8 09:09

作者: 176739645678    时间: 2023-1-8 11:00
  
作者: yhdata    时间: 2023-2-22 22:25





欢迎光临 永洪社区 (https://club.yonghongtech.com/) Powered by Discuz! X3.4