跳转至

Lecture 15. The HAVING Operator, The LIMIT Operator, Table Constraints 运算符 HAVING、运算符 LIMIT、表限制

~~那天我在睡大觉,旷课了~~

HAVING 语法

SELECT <colName>, <aggFunc()>
    FROM <tableName>
    [WHERE <condition>]
    GROUP BY colName
    HAVING <aggFunc()> <condition>
    [ORDER BY <colName> <option>]

HAVING 是用来给 GROUP BY 得到的东西设置限制的。

注意,假如有 COUNT(*) AS cntHAVING 里面不能写 cnt,还得写 COUNT(*)。这是一个语法问题:HAVING 里面必须要包含 agg 函数。

LIMIT 语法

LIMIT 是用来限制返回的数量的。比如不想返回全部数据,只想看前 10 行数据,就可以用 LIMIT 关键字(配合 ORDER BY 使用)。为了保证每一次相同的询问都返回同样的数据,必须配合 ORDER BY,也就是保持 consistency。

限制(CONSTRAINT

在创建表的时候,之前已经见过关于主键的限制了。现在来介绍关于值的限制:

CREATE TABLE <tableName> (
    <col1> INT NOT NULL,
    CONSTRAINT <tableName>_pkey PRIMARY KEY (<col1>),
    CONSTRAINT <consName> CHECK (<col1> > 10)
)

像这个 CREATE 最后的 CONSTRAINT 意思就是限制这一列所有的值,必须大于 10. 如果插入、修改的时候不满足这个限制条件将会报错。