SELECT

Name

SELECT -- �ӱ����ͼ��ȡ��������

Synopsis

SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
    * | expression [ AS output_name ] [, ...]
    [ FROM from_item [, ...] ]
    [ WHERE condition ]
    [ GROUP BY expression [, ...] ]
    [ HAVING condition [, ...] ]
    [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]
    [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ]
    [ LIMIT { count | ALL } ]
    [ OFFSET start ]
    [ FOR UPDATE [ OF table_name [, ...] ] ]

���� from_item �����ǣ�

    [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
    ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]
    function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ]
    function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )
    from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]

����

SELECT ����һ���������з��ؼ�¼�С� SELECT ͨ���Ĵ������£�

  1. �����г��� FROM �е�����Ԫ�ء���FROM �е�ÿ��Ԫ�ض���һ�������Ļ�������ı�������� FROM �б��������˶��һ��Ԫ�أ���ô���Ǿͽ���������һ�𡣣���������� FROM �Ӿ�����

  2. ��������� WHERE �Ӿ䣬��ô��������������� �������������С������������ WHERE �Ӿ�����

  3. ��������� GROUP BY �Ӿ䣬����ͷֳ�ƥ��һ��������ֵ�IJ�ͬ��� ��������� HAVING �Ӿ䣬��ô��������Щ����������������顣����������� GROUP BY �Ӿ� �� HAVING �Ӿ�����

  4. ʵ������е�ʱ��SELECT ��Ϊÿ��ѡ�����м���������ʽ ����������� SELECT �б�����

  5. ʹ�� UNION��INTERSECT�� �� EXCEPT�����ǿ��԰Ѷ�� SELECT ��������ϲ���һ���������UNION �����������������������������һ���е��У� INTERSECT �����������ϸ��������������ж��е��С� EXCEPT �����������ڵ�һ��������У����Dz��ڵڶ���������е��С�������������� �ظ����ж���ɾ�������������� ALL������������� UNION �Ӿ��� INTERSECT �Ӿ����� EXCEPT �Ӿ�����

  6. ��������� ORDER BY �Ӿ䣬��ô���ص����ǰ���ָ����˳������ġ� ���û�и��� ORDER BY����ô�������ǰ���ϵͳ��Ϊ����������ɵķ��������ġ� ����������� ORDER BY �Ӿ�����

  7. DISTINCT �ӽ����ɾ����Щ�ظ����С� DISTINCT ON ɾ����Щƥ������ָ�����ʽ���С� ALL ��ȱʡ�����������к�ѡ�У������ظ��ġ� ����������� DISTINCT �Ӿ�����

  8. ��������� LIMIT ���� OFFSET �Ӿ䣬��ô SELECT ���ֻ���ؽ���е�һ���Ӽ��� ����������� LIMIT �Ӿ�����

  9. FOR UPDATE �Ӿ䵼�� SELECT ���Բ����ĸ�����סѡ�����С������������ FOR UPDATE �Ӿ�����

������� SELECT Ȩ�������ӱ��ж�ȡ��ֵ�� ʹ�� FOR UPDATE ��Ҫ�� UPDATE Ȩ�ޡ�

����

FROM �Ӿ�

FROM �Ӿ�Ϊ SELECT ����һ�����߶��Դ�� ��������˶��Դ����ô�����������Դ��ĵѿ��������������ӣ��� ����ͨ�����ǻ����һЩ�������ѷ��������Ƴɵѿ�������һ��С�Ľ������

FROM �Ӿ���԰�������Ԫ�أ�

table_name

һ���ִ�ı����ͼ�����֣�������ģʽ���Σ��� ���������ONLY����ֻɨ��ñ� ���û������ONLY���ñ������������������еĻ�������ɨ�衣 �����ڱ��������һ��*����ʾɨ���������� ����Ŀǰ�İ汾�����ȱʡ���ԡ� ���� PostgreSQL 7.1 ��ǰ�İ汾�ONLY��ȱʡ���ԡ��� ȱʡ�����Կ���ͨ���޸�����ѡ�� sql_inheritance ���ı䡣

alias

Ϊ��Щ���������� FROM ��Ŀȡ�ı���������������д���������������������壨�������ͬһ����ɨ���˶�Σ��� ����ṩ�˱�������ô���ͻ���ȫ���ر���ߺ�����ʵ�����֣� ���磬������� FROM foo AS f����ô SELECT ʣ�µĶ����������� FROM ���� f ������ foo ���á����д�˱����� ����Ҳ�����ṩһ���ֶα����б����������滻����һ�����߶���ֶε����֡�

select

һ���� SELECT �� FROM �Ӿ�����ֵġ� ����������ú�����Ϊ���� SELECT ���������������ﴴ��һ����ʱ�� ��ע������� SELECT ������԰������Χ�� �������������ӱ�����

function_name

�������ÿ��Գ����� FROM �Ӿ�� ��������Щ���ؽ�����ĺ����ر����ã������κκ��������á��� ��ô���ͺ�������� SELECT ������������У� �Ѻ������������Ϊһ����ʱ��һ��������Ҳ����ʹ�ñ��������д�˱����� ���ǻ�����дһ���ֶα����б�Ϊ�������صĸ������͵�һ�����������ṩ�����滻�� �����������Ϊ�� record �������ͣ� ��ô�������һ�� AS �ؼ��ֻ��߱������������һ���ֶζ����б� ���磺( column_name data_type [, ... ])�� ����ֶζ����б����ƥ�亯�����ص��ֶε�ʵ����Ŀ�����͡�

join_type

  • [ INNER ] JOIN

  • LEFT [ OUTER ] JOIN

  • RIGHT [ OUTER ] JOIN

  • FULL [ OUTER ] JOIN

  • CROSS JOIN

֮һ�� �� INNER �� OUTER �������ͣ� ���DZ�������һ������������Ҳ����˵һ�� NATURAL�� ON join_condition�� ���� USING (join_column [, ...])�� �����Ļ�ȡ���ǵĺ��壬���� CROSS JOIN����Щ�Ӿ䶼���ܳ��֡�

һ�� JOIN �Ӿ䣬��������� FROM � ��Ҫʱʹ��Բ�����Ծ���Ƕ�׵�˳�� ���û��Բ������JOIN ��Ƕ�״������ҡ� ���κ�����£�JOIN ���ȶ��ŷָ��� FROM ��󶨵ø�����

CROSS JOIN �� INNER JOIN ����һ���򵥵ĵѿ������������� FROM �Ķ����г�������Ľ����ͬ�� CROSS JOIN ��Ч�� INNER JOIN ON (true)�� Ҳ����˵��û�б�����ɾ�����С�������������ֻ�Ƿ����ϵķ��㣬 ��Ϊ���Ǻ����ü򵥵� FROM �� WHERE �ɵ�������һ���ġ�

LEFT OUTER JOIN �����������ĵѿ�������Ҳ����˵�� ������ϳ������ж�ͨ���������������е��У��������ֱߵı���û�ж�Ӧ�����ֱ߱���п���һ��ƥ��ͨ��������������Щ�С� ���������ֱߵ�����չ���������ɱ��ȫ��������������Щ���ֱ߱��Ӧ���ֶ�λ�����Ͽա���ע�⣬ֻ���ھ�����Щ����ƥ���ʱ�� ֮���� JOIN �Ӿ��Լ�����������������������֮��ʩ�ӵġ�

��Ӧ���ǣ�RIGHT OUTER JOIN �����������ӳ������У� ����ÿ����ƥ������ֱ��У�����ÿ�ֵ��չ������ֻ��һ�������ϵı�������Ϊ�������ǿ��԰���ת����һ�� LEFT OUTER JOIN�� ֻҪ����ߺ��ұߵ�����Ե�һ�¼��ɡ�

FULL OUTER JOIN �����������ӳ������У�����ÿ����ƥ������ֱߵ��У��ұ��ÿ�ֵ��չ���� ����ÿ����ƥ������ֱߵ��У�����ÿ�ֵ��չ����

join_condition

join_condition��һ�����ʽ�� ��������Ϊ boolean �Ľ��������WHERE �Ӿ䣩�� ��ʾ��������Щ�б���Ϊ��ƥ��ġ�

USING (join_column [, ...])

һ������ USING ( a, b, ... ) ���Ӿ䣬 ��ON left_table.a = right_table.a AND left_table.b = right_table.b ... ����д��ͬ����USING �̺��ţ�ÿ�Ե�Ч�ֶ���ֻ��һ����������������У��������������������˼��

NATURAL

NATURAL ��һ�� USING �б����д������б�˵������������ͬ���ĵ��ֶΡ�

WHERE �Ӿ�

��ѡ�� WHERE ���������³�������ʽ��

WHERE condition

���� condition ������������������Ϊ boolean �ı��ʽ�� �κβ���������������ж���������ɾ�������һ���е���ֵ�滻�������������м������������Ϊ�棬��ô���о�������������

GROUP BY �Ӿ�

��ѡ�� GROUP BY �Ӿ��һ����ʽ

GROUP BY expression [, ...]

GROUP BY ��������������˵ı��ʽ�Ϲ���ͬ����ֵ����ѹ����һ�С� expression ������һ�������ֶ����֣� ������һ�������ֶΣ�SELECT �б�����ţ�����Ҳ����������������ֶ�ֵ�γɵ�������ʽ�� �������������£�һ�� GROUP BY �����ֽ������ͳ������ֶε����֣�����������ֶε����֡�

���ʹ���˾ۼ���������ô�ͻ�����һ��������н��м��㣬Ϊÿ��������һ��������ֵ�������û�� GROUP BY�� ��ô�ۼ���ѡ�����������м����һ��ֵ������������� GROUP BY�� ��ô SELECT �б���ʽ����������Щû�з�����ֶξ��ǷǷ��ģ� ���Ƿ��ھۼ��������Ϊ����δ������ֶΣ����ܻ᷵�ض����ֵ��

HAVING �Ӿ�

��ѡ�� HAVING �Ӿ���������ʽ��

HAVING condition

���� condition ��Ϊ WHERE �Ӿ�����������ͬ��

HAVING ȥ����һЩ���������������С� HAVING �� WHERE ��ͬ�� WHERE ��ʹ�� GROUP BY ֮ǰ���˳��������У��� HAVING ������ GROUP BY �������С� �� condition �����õ�ÿ���ֶζ����������������һ��������У��������ó�����һ���ۼ������

SELECT �б�

SELECT �б��� SELECT �� FROM ֮��Ĺؼ��֣� �����γ� SELECT ��������еı��ʽ�� ��Щ���ʽ���ԣ�����ͨ��Ҳ�ᣩ������ FROM �Ӿ��������������ֶΡ� ͨ��ʹ���Ӿ� AS output_name�� ���ǿ���Ϊ����ֶ������������и����֡� ��������ڸ��ֶ������ʾ�����ر����á� ��ҳ���������� ORDER BY �� GROUP BY �Ӿ��������ֶ�ֵ�� ���Dz����� WHERE ���� HAVING �Ӿ���ʹ�ã� �����������д���ʽ����

���˱��ʽ������Ҳ����������б���дһ�� *�� ��ʾ��������ֶε���д�����У����ǿ����� table_name.* ��Ϊ���Ըñ�������ֶε���д��

UNION �Ӿ�

UNION �Ӿ��һ����ʽ�ǣ�

select_statement UNION [ ALL ] select_statement

���� select_statement ������û�� ORDER BY��LIMIT������ FOR UPDATE �Ӿ�� SELECT��䡣 �������Բ������Χ��ORDER BY �� LIMIT ���Ը������ӱ��ʽ� ���û��Բ��������Щ�Ӿ佫���� UNION �Ľ��ʹ�ã� �����Ǹ��������ֱߵ�������ʽ����

UNION ������������Щ�漰�������� SELECT ��䷵�ص��еĽ�����ϡ� һ�����������������������е�һ��������֣���ô���ͻ���������������ļ��������С� ������Ϊ UNION ֱ�Ӳ�������SELECT����������ͬ��Ŀ���ֶΣ� ���Ҷ�Ӧ���ֶα����м��ݵ��������͡�

ȱʡ�أ�UNION �Ľ���������κ��ظ����У����������� ALL �Ӿ䡣 ALL ��ֹ�������ظ��Ķ����� ����ˣ�UNION ALL ͨ���� UNION ����Ҫ�죬���ܵ�����¾���ʹ�� ALL����

ͬһSELECT����еĶ�� UNION �������Ǵ������Ҽ���ģ� ������Բ���������˱�ʶ��

Ŀǰ��FOR UPDATE ������ UNION �Ľ����������������

INTERSECT �Ӿ�

INTERSECT �Ӿ��һ����ʽ�ǣ�

select_statement INTERSECT [ ALL ] select_statement

select_statement ���κβ��� ORDER BY�� LIMIT������ FOR UPDATE �Ӿ�� SELECT ��䡣

INTERSECT �����漰�� SELECT ��䷵�ص��еļ��Ͻ����� ���һ����������������ж����֣���ô����������������Ľ����С�

INTERSECT �Ľ���������κ��ظ��У������������� ALL ѡ� ���� ALL �Ժ�һ�������ֱߵı����� m ���ظ��������ֱ߱����� n ���ظ����н����� min(m,n) �Ρ�

������Բ����ָ��˳�� ͬһ SELECT ����еĶ�� INTERSECT �������Ǵ������Ҽ���ġ� INTERSECT �� UNION �󶨵ø��� — Ҳ����˵ A UNION B INTERSECT C ������ A UNION (B INTERSECT C)����������Բ����������

Ŀǰ�����ܸ� INTERSECT �Ľ�������κ� INTERSECT ���������� FOR UPDATE��

EXCEPT �Ӿ�

EXCEPT �Ӿ������µ�ͨ����ʽ��

select_statement EXCEPT [ ALL ] select_statement

���� >select_statement ���κ�û�� ORDER BY��LIMIT������ FOR UPDATE �Ӿ�� SELECT ���ʽ��

EXCEPT������������������SELECT ������������������ұ����������С�

EXCEPT �Ľ���������κ��ظ����У����������� ALL ѡ� ʹ�� ALL ʱ��һ�������ֱ߱����� m ���ظ��������ֱ߱����� n ���ظ����н����� max(m-n,0) �Ρ�

������Բ����ָ��˳��ͬһ SELECT ����еĶ�� EXCEPT �������Ǵ������Ҽ���ġ� EXCEPT �� UNION �󶨼�����ͬ��

Ŀǰ�����ܸ� EXCEPT �Ľ�������κ� EXCEPT ���������� FOR UPDATE �Ӿ䡣

ORDER BY �Ӿ�

��ѡ�� ORDER BY �Ӿ��������һ����ʽ��

ORDER BY expression [ ASC | DESC | USING operator ] [, ...]

expression ������һ������ֶΣ�SELECT �б������ֻ�����ţ� ����Ҳ�������������ֶε���ֵ��ɵ�������ʽ��

ORDER BY �Ӿ䵼�½���и���ָ���ı��ʽ�������� �����������ߵı��ʽ�����еĽ����ͬ����ô�͸�����һ�����ʽ���бȽϣ� �������ơ�����������������ı��ʽ���Ƕ���ͬ����ô�����˳�򷵻ء�

����ָ������/�ֶΰ�˳�򣨴����ң���λ�á� ������������ǿ��Զ�û��Ψһ���Ƶ���/�ֶν������� ��һ��������DZ���ģ� ��Ϊ���ǿ���ͨ�� AS �Ӿ��һ��Ҫ�������/�ֶθ���һ�����ơ�

�� ORDER BY �ﻹ����ʹ��������ʽ�� ������Щû�г�����SELECT����б�������ֶΡ� ����������������ǺϷ��ģ�

SELECT name FROM distributors ORDER BY code;

������Ե�һ�����޾���Ӧ���� UNION��INTERSECT�� ���� EXCEPT ��ѯ�� ORDER BY �Ӿ�ֻ����һ������ֶ���������������������������һ�����ʽ��������

��ע�����һ�� ORDER BY ���ʽ��һ�������ƣ� ͬʱƥ�����ֶκ������ֶΣ� ORDER BY ���������ͳɽ���ֶ����ơ� ��� GROUP BY ��ͬ�����������ѡ�����෴�� �����IJ�һ������ SQL ��׼ǿ�Ƶġ�

���ǿ��Ը� ORDER BY �Ӿ���ÿ����/�ֶμ�һ���ؼ��� DESC �����򣩻� ASC�����򣩡������������ ASC ��ȱʡ�� ���ǻ������� USING �Ӿ�������һ�������������ʵ������ ASC ��Ч��ʹ�� USING < �� DESC ��Ч��ʹ�� USING >��

��һ�������ֵ����ʱ����������ֵǰ�档���仰˵����������ʱ�� ��ֵ����ĩβ������������ʱ��ֵ���ڿ�ͷ��

�ַ����͵������ǰ���������ص��ַ���˳������ģ���������������ݿ⼯Ⱥ��ʼ����ʱ�����ġ�

DISTINCT �Ӿ�

��������� DISTINCT����ô�ʹӽ������ɾ�������ظ����У�ÿ�����ظ����鶼����һ�У��� ALL �����෴�����ã������ж��������������ȱʡ��

DISTINCT ON ( expression [, ...] ) ֻ������Щ�ڸ����ı��ʽ���������ͬ������м����еĵ�һ�С� DISTINCT ON ���ʽ��ʹ���� ORDER BY �������ģ� ��ͬ�Ĺ�����н��͵ġ���ע�⣬ ��������ʹ���� ORDER BY ����֤������Ҫ�������ȳ��֣�����ÿ�� "��һ��" �Dz���Ԥ��ġ� ���磬

SELECT DISTINCT ON (location) location, time, report
    FROM weather_reports
    ORDER BY location, time DESC;

Ϊÿ���ص����������������档�����������û��ʹ�� ORDER BY ��ǿ�ƶ�ÿ���ص��ʱ��ֵ���н���������ô���Ǿͻ�õ�ÿ���ص�IJ�֪��ʲôʱ��ı��档

DISTINCT ON ���ʽ����ƥ������ߵ� ORDER BY ���ʽ�� ORDER BY �Ӿ佫ͨ����������ı��ʽ���ж�ÿ�� DISTINCT ON ��������Ҫ���е����ȼ���

LIMIT �Ӿ�

LIMIT �Ӿ��������������Ӿ���ɣ�

LIMIT { count | ALL }
OFFSET start 

���� count �������ص���������� �� start ������ʼ������֮ǰ���Ե�������

LIMIT ����������ɲ�ѯ�����������ɵ��е�ijһ���֡� ������������Ƽ�������ô���ص��������ᳬ���ĸ����ơ� ���������һ��ƫ��������ô��ʼ������֮ǰ������Ǹ��������С�

��ʹ�� LIMIT ʱ�� һ����ϰ����ʹ��һ�� ORDER BY �Ӿ�ѽ�������Ƴ�һ��Ψһ��˳�� �������õ��޷�Ԥ�ϵIJ�ѯ���ص��Ӽ� — �������Ҫ��ʮ�е��ڶ�ʮ�У� ����ʲô˳�򣿳��������� ORDER BY�������㲻֪��ʲô˳��

��ѯ�Ż��������ɲ�ѯ�滮ʱ�� LIMIT ���ǽ�ȥ�ˣ� ��������п���������� LIMIT �� OFFSET ֵ��ͬ���õ���ͬ�Ĺ滮�����ɲ�ͬ�����򣩡� ����ò�ͬ�� LIMIT/OFFSET ֵѡ��ͬ�IJ�ѯ������Ӽ����������һ�µĽ���� �������� ORDER BY ǿ������һ����Ԥ�ƵĽ��˳�� ��ɲ���ë�������� SQL �������ص㣬��Ϊ�������� ORDER BY Լ��˳�� SQL ����֤��ѯ���ɵĽ�����κ��ض���˳��

FOR UPDATE �Ӿ�

FOR UPDATE �Ӿ����������ʽ

FOR UPDATE [ OF table_name [, ...] ]

FOR UPDATE ����Щ�� SELECT �������������б���ס������Ҫ����һ���� �����ͱ��������ڵ�ǰ�������ǰ�����������޸Ļ���ɾ���� Ҳ����˵��������ͼ UPDATE��DELETE�� ���� SELECT FOR UPDATE ��Щ�е����񽫱������� ֱ����ǰ���������ͬ�������һ��������������� UPDATE�� DELETE������ SELECT FOR UPDATE �Ѿ���ס��ij����ijЩѡ�����У�SELECT FOR UPDATE ���ȵ���Щ��������� ���ҽ������ס�����ظ��µ��У����߲������У�������Ѿ���ɾ��������������۲��� Chapter 12��

����ض��ı��� FOR UPDATE �У���ôֻ��������Щ���е��вű���ס�� �κ��� SELECT ��ʹ�õ�������ֻ�Ǻ�ƽ��һ����ȡ��

FOR UPDATE ��������Щ�޷�ʹ�ö����ı�������������ʶ�����еĻ���� ���磬�����ܺ;ۼ�һ��ʹ�á�

FOR UPDATE ������ LIMIT ǰ����֣� ��Ҫ��Ϊ�˺� 7.3 ֮ǰ�� PostgreSQL ���ݡ� ���������� LIMIT ����ִ�и���Ч��������ǽ������ LIMIT ���档

����

���� films �ͱ� distributors ������һ��

SELECT f.title, f.did, d.name, f.date_prod, f.kind
    FROM distributors d, films f
    WHERE f.did = d.did

       title       | did |     name     | date_prod  |   kind
-------------------+-----+--------------+------------+----------
 The Third Man     | 101 | British Lion | 1949-12-23 | Drama
 The African Queen | 101 | British Lion | 1951-08-11 | Romantic
 ...

ͳ����kind ��������е�Ӱ�������/�ֶε� len�����ȣ��ĺͣ�

SELECT kind, sum(len) AS total FROM films GROUP BY kind;

   kind   | total
----------+-------
 Action   | 07:34
 Comedy   | 02:58
 Drama    | 14:28
 Musical  | 06:42
 Romantic | 04:38

ͳ�����е�Ӱ��films���������/�ֶ� len�����ȣ��ĺͣ��� kind ���鲢����ʾС��5Сʱ�����ܺͣ�

SELECT kind, sum(len) AS total
    FROM films
    GROUP BY kind
    HAVING sum(len) < interval '5 hour';

   kind   | total
----------+-------
 Comedy   | 02:58
 Romantic | 04:38

�������������Ǹ��ݵڶ��У�name�������ݶԵ����Ľ������ľ���ķ�����

SELECT * FROM distributors ORDER BY name;
SELECT * FROM distributors ORDER BY 2;

 did |       name
-----+------------------
 109 | 20th Century Fox
 110 | Bavaria Atelier
 101 | British Lion
 107 | Columbia
 102 | Jean Luc Godard
 113 | Luso films
 104 | Mosfilm
 103 | Paramount
 106 | Toho
 105 | United Artists
 111 | Walt Disney
 112 | Warner Bros.
 108 | Westward

�������������ʾ��λ�ñ� distributors �� actors�����ӣ� ֻ��ÿ����������ĸ W ��ͷ��ȡ������ ��Ϊֻȡ�˲���ص��У����Թؼ��� ALL ��ʡ���ˣ�

distributors:               actors:
 did |     name              id |     name
-----+--------------        ----+----------------
 108 | Westward               1 | Woody Allen
 111 | Walt Disney            2 | Warren Beatty
 112 | Warner Bros.           3 | Walter Matthau
 ...                         ...

SELECT distributors.name
    FROM distributors
    WHERE distributors.name LIKE 'W%'
UNION
SELECT actors.name
    FROM actors
    WHERE actors.name LIKE 'W%'

      name
----------------
 Walt Disney
 Walter Matthau
 Warner Bros.
 Warren Beatty
 Westward
 Woody Allen

���������ʾ������� FROM �Ӿ���ʹ��һ�������� �������кͲ����ֶζ����б�ġ�

CREATE FUNCTION distributors(int) RETURNS SETOF distributors AS $$
    SELECT * FROM distributors WHERE did = $1;
$$ LANGUAGE SQL;

SELECT * FROM distributors(111);
 did |    name
-----+-------------
 111 | Walt Disney

CREATE FUNCTION distributors_2(int) RETURNS SETOF record AS $$
    SELECT * FROM distributors WHERE did = $1;
$$ LANGUAGE SQL;

SELECT * FROM distributors_2(111) AS (f1 int, f2 text);
 f1  |     f2
-----+-------------
 111 | Walt Disney

������

��Ȼ��SELECT ���� SQL ��׼���ݡ����ǻ���һЩ��չ��һЩȱ�ٵ����ԡ�

ʡ�� FROM �Ӿ�

PostgreSQL ����������һ����ѯ��ʡ�� FROM �Ӿ䡣 ������ֱ����;���Ǽ���򵥵ij������ʽ�Ľ����

SELECT 2+2;

 ?column?
----------
        4

������Щ SQL ���ݿⲻ����ô������������һ�����е�α���� SELECT ������Դ��

������Ե�����һ����̫���Ե���;�ǰ�һ����ͨ�Ĵ�һ��������� SELECT ��д��

SELECT distributors.* WHERE distributors.name = 'Westward';

 did |   name
-----+----------
 108 | Westward

����Ҳ������������Ϊ���Ǹ� SELECT �������˵�û���� FROM ���ᵽ��ÿ��������һ�������� FROM �

�������Ǹ��ܷ����д��������ȴ�������á� ���磬����IJ�ѯ

SELECT distributors.* FROM distributors d;

���ܾ��Ǹ������û����п��ܵ���˼��

SELECT d.* FROM distributors d;

�����������ʵ���ϵõ�����Լ��������

SELECT distributors.* FROM distributors d, distributors distributors;

Ϊ�˰���������ִ��� PostgreSQL �Լ��Ժ�İ汾������ʹ��һ���������� FROM ����������ȷ�� FROM �Ӿ��SELECT���ʱ��������档 ͬ��������Ҳ����ͨ������ add_missing_from ����Ϊ false ���ر������� FROM ���ԡ�

AS �ؼ���

�� SQL ��׼���ѡ�Ĺؼ��� AS �Ƕ���ģ����Ժ��Ե��������������κ�Ӱ�졣 PostgreSQL ����������������/�ֶ�ʱ��Ҫ����ؼ��֣� ��Ϊ������չ�����Իᵼ�����������������塣 ������AS �� FROM �����ǿ�ѡ�ġ�

GROUP BY �� ORDER BY ����õ����ֿռ�

�� SQL-92 ��׼�ORDER BY �Ӿ�ֻ��ʹ�ý���ֶ������߱�ţ� �� GROUP BY �Ӿ�ֻ���û��������ֶ����ı��ʽ�� PostgreSQL ���������Ӿ䶼��������չ�� ��������һ��ѡ�񣨵�������������壬��ʹ�ñ�׼�Ľ��ͣ��� PostgreSQL �����������Ӿ���������ı��ʽ�� ��ע���ڱ��ʽ�г��ֵ�����ǿ���DZ����������ֶ����������ǽ���ֶ�����

SQL:1999 һ����΢��ͬ�Ķ��壬�� SQL-92 ��������ȫ���ϼ��ݡ� �������ڴ��������£�PostgreSQL ����һ�� ORDER BY ���� GROUP BY ���ʽ������Ϊ SQL:1999 �ƶ���������

�DZ�׼�Ӿ�

DISTINCT ON��LIMIT �� OFFSET ��û���� SQL ��׼�ж��塣