数据库原理——数据的查询

写在开头

使用数据库最常用的就是用SQL语句查询数据了,那具体了解一下有哪些方法可以进行数据查询。

SELECT语句的语法

SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>] …
FROM <表名或视图名>[,<表名或视图名> ]…|(SELECT 语句)
[AS]<别名>
[ WHERE <条件表达式> ]
[ GROUP BY <列名1> [ HAVING <条件表达式> ] ]
[ ORDER BY <列名2> [ ASC|DESC ] ];

image.png

image.png

单表查询

选择表中的若干列

1)查询指定的列
通过在SELECT子句的<目标列表达式>中指定
要查询的属性列。它对应关系代数中的投影运算。
2)查询全部列
*选出所有属性列:

  • 在SELECT关键字后面列出所有列名
  • 将<目标列表达式>指定为 *


    image.png

    3)查询经过计算的值
    SELECT子句的<目标列表达式>不仅可以为表中属性列,也可以是表达式
    SQL对查询的结果不会自动去除重复行,如果要求删除重复行,可以使用限定词DISTINCT。
    若没指定该限定词,则缺省为ALL,即保留查询结果的全部值。

选择表中的若元组

1)比较和逻辑运算
WHERE之后的查询条件中允许出现比较运算符:=(等于)、>(大于)、>=(大于等于)、<(小于)、<=(小于等于)、<>(不等于)和逻辑运算符AND(与)、NOT(非)、OR(或)等。
2)谓询 BETWEEN(确定范围)
谓词: BETWEEN … AND …NOT BETWEEN … AND …
谓词BETWEEN…AND…是“包含于…之中”的意思,用于判断某值是否属于一个指定的区间。
3)字符匹配(LIKE)
谓词: [NOT] LIKE '<匹配串>' [ESCAPE'<换码字符>'],进行字符串的匹配。
其格式如下:
[NOT] LIKE '<匹配串>' [ESCAPE'<换码字符>']
其含义是查找指定的属性列值与<匹配串>相匹配的元组。<匹配串>可以是一个完整的字符串,也可以含有通配符%和_
其中:

  • %(百分号)代表任意长度(长度可为0)的字符串。例
    如:a%t表示以a开头以t结尾的任意长度的字符串。如:at、assist、assistant等都满足该匹配串。
  • _(下划线)代表任意单个字符。
    4)确定集合(谓词IN)
    谓词:IN <值表>, NOT IN <值表>


    image.png

    5)涉及空值的查询
    谓词: IS NULL 或 IS NOT NULL
    “IS” 不能用 “=” 代替
    6)多重条件查询
    逻辑运算符:AND和 OR来连接多个查询条件
    < AND的优先级高于OR,可以用括号改变优先级>

ORDER BY子句

可以按一个或多个属性列排序
升序:ASC;降序:DESC;缺省值为升序
对于空值,排序时显示的次序由具体系统实现来决定

聚集函数
  • 统计元组个数
    COUNT(*)
    统计一列中值的个数
    COUNT([DISTINCT|ALL] <列名>)
    计算一列值的总和(此列必须为数值型)
    SUM([DISTINCT|ALL] <列名>)
    计算一列值的平均值(此列必须为数值型)
    AVG([DISTINCT|ALL] <列名>)
    求一列中的最大值和最小值
    MAX([DISTINCT|ALL] <列名>)
    MIN([DISTINCT|ALL] <列名>)
    如果指定DISTINCT短语,则表示在计算时要取消指定列中的重复值。ALL为缺省值,表示不取消重复值。聚集函数统计或计算时均忽略空值。
GROUP BY子句

作用:细化聚集函数的作用对象

  • 如果未对查询结果分组,聚集函数将作用于整个查询结果
  • 对查询结果分组后,聚集函数将分别作用于每个组
  • 按指定的一列或多列值分组,值相等的为一组


    image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容