当前位置:   article > 正文

05-1 SQL语言数据查询_单表查询_sql表查询

sql表查询

目录

0.概述

1.单表查询

1.1选择若干列

1.2选择若干元组

1.2.1 比较

 1.2.2确定集合 IN、NOT IN

 1.2.3字符匹配

1.2.4空值

1.2.5ORDER BY子句

1.2.6聚集函数

1.2.7GROUP BY子句

1.2.8 限定分组having


上节讲解了SQL语言的数据定义和数据更新部分,介绍了基本的命令和注意事项,很多概念需要大家多加巩固,本节将讲解SQL语言的数据查询部分,该部分是SQL语言的重点,也是使用频率最多的板块。由于SQL查询内容较多,我们将拆分成多篇文章进行讲解(抱拳)。


0.概述

数据查询,顾名思义,就是从庞大的数据库中查询到所需要的信息,提取的作用。

SELECT [ALL|DISTINCT] {*|<表达式>,…,<表达式>}

FROM <表名>[, <表名>…]

[WHERE <条件表达式>]

[GROUP BY <列名>[, <列名>…][HAVING <谓词>]]

[ORDER BY <列名> [ASC|DESC] [, <列名> [ASC|DESC]…]

以上是查询语句的基本组成部分,

select语句执行的过程:

根据where子句的检索条件,从from子句指定的对象范围中选取满足条件的元组,再根据select子句指定的列投影到结果表。

如果有group子句,则将查询结果按照列名相同的值进行分组

如果group子句后面有Having短语,则只输出满足having条件的分组

如果有order子句,查询结果还要按照列名的值进行排序。

 接下来对应以上思维导图,逐个学习不同的查询语句。

1.单表查询

1.1选择若干列

SELECT [ALL|DISTINCT] {*|<表达式>,…,<表达式>}

distinct 在查询语句中起到去除重复的作用,举例,select distinct dept_name from instructor,不重复的列出instructor表中的所有dept_name属性.

select子句的<表达式>可以为算术表达式/字符串常量/函数/列别名

举例,

算术表达式,

 函数,

 

 列别名 (命名作用),(as可以省略)

 

 加入字符串常量,

 

1.2选择若干元组

1.1讲了如何从数据库中挑出自己想要的列,这里呢其实就是在挑行,数据库中的行叫做元组,一行就是一个元组(多个属性的集合)。

1.2.1 比较

Attention!开始使用where子句了

举例,找出instructor表中salary介于90000~10000的元组,输出他们的姓名和工资

 1.2.2确定集合 IN、NOT IN

举例,找出instructor表中salary大于70000并且dept_name是Com.Sci或者Physics的元组,

 

 等价于:

 1.2.3字符匹配

匹配固定字符串—like

通配符

%代表任意长度(长度可以为0)的字符串,例如a%b表示以a开头b结尾的任意长度的字符串

_代表任意单个字符,例如a_b表示以a开头b结尾的长度为3的任意字符串

当查询的字符串本身就含有%或_时,使用escape’<换码字符>‘对通配符进行转义

like ’ab\%cd%’escape‘\’匹配所有以”ab%cd“开头的字符串

like ’ab\\%cd%’escape‘\’匹配所有以”ab\cd"开头的字符串

 

 *注意,SQL字符串相等运算大小写敏感,MySQL匹配字符串时不区分大小写

1.2.4空值

涉及空值的算术运算结果为空

涉及空值的比较运算结果为unknown

涉及空值的逻辑运算 unknown or true=true ,unknown or false=unknown,unknown or unknown=unknown

unknown and true=unknown ,unknown and false=false,unknown and unknown=unknown

not unknown=unknown

如果where子句对一个元组计算出false或unknown,该结果不能被加入到结果集中

使用 IS NULL和IS NOT NULL测试空值

1.2.5ORDER BY子句

可以按一个或多个属性列排序,升序ASC,降序DESC,缺省为升序

当排序含空值时,ASC空值最先显示,DESC空值最后显示

 

1.2.6聚集函数

聚集函数是以值的一个集合作为输入、返回单个值的函数 ,AVG.MIN.MAX.SUM.COUNT(*)

distinct计算时取消指定列中的重复值,all短语不取消重复值,all为缺省值

 

 

除count(*)外的所有聚集函数都忽略输入集合中的空值 

1.2.7GROUP BY子句

作用对象:未对查询结果分组,聚集函数将作用于整个查询结果

对查询结果分组后,聚集函数将分别作用于每个组

按照指定的一列或多列值分组,值相等的为一组

1.2.8 限定分组having

 

Having短语与Where子句的区别:

作用对象不同,having短语用于分组,从中选择满足条件的分组,where作用于基本表或视图,从中选择满足条件的元组

分组时select语句中的属性:

保证出现在select语句中但没有被聚集的属性只能是出现在groupby子句中的那些属性

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/703809
推荐阅读
相关标签
  

闽ICP备14008679号