¾�ΥС�������ʸ�� �� 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

SELECT

̾��

SELECT -- �ơ��֥�⤷���ϥӥ塼����Ԥ򸡺�����

����

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 | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]

" -->
������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��0�İʾ�Υơ��֥뤫��Ԥ��֤��ޤ��� SELECT�ΰ���Ū�ʽ����ϰʲ����̤�Ǥ���

  1. FROM�ꥹ�Ȥˤ��������Ǥ��׻�����ޤ� ��FROM�ꥹ�Ȥ����Ǥϼ¥ơ��֥뤫���ۥơ��֥�Τ����줫�Ǥ��ˡ� FROM�ꥹ�Ȥ�ʣ�������Ǥ����ꤵ�줿��硢�����ϥ�������礵��ޤ� �ʸ�Ҥ�FROM���򻲾Ȥ��Ƥ��������ˡ�

  2. WHERE�礬���ꤵ�줿��硢�����������ʤ��Ԥ����ƽ��Ϥ����������ޤ� �ʸ�Ҥ�WHERE���򻲾Ȥ��Ƥ��������ˡ�

  3. GROUP BY�礬���ꤵ�줿��硢1�Ĥޤ���ʣ�����ͤ����˹礦�Ԥ��Ȥ˥��롼�פ�ʬ���ƽ��Ϥ���ޤ��� HAVING�礬���ꤵ�줿��硢���ꤷ�������������ʤ����롼�פϼ�������ޤ� �ʸ�Ҥ�GROUP BY����HAVING���򻲾Ȥ��Ƥ��������ˡ�

  4. �ºݤˤϡ����򤵤줿�ƹԤ��Ф��ơ�SELECT���ϼ�����Ѥ��Ʒ׻�������̤ιԤ����Ϥ���ޤ� �ʸ�Ҥ�SELECT�ꥹ���򻲾Ȥ��Ƥ��������ˡ�

  5. UNION��INTERSECT��EXCEPT�黻�Ҥ���Ѥ���ȡ�ʣ����SELECTʸ�ν��Ϥ�1�Ĥη�̽���ˤޤȤ�뤳�Ȥ��Ǥ��ޤ��� UNION�黻�Ҥϡ�ξ���η�̽����¸�ߤ���Ԥȡ������η�̽����¸�ߤ���Ԥ������֤��ޤ��� INTERSECT�黻�Ҥϡ�ξ���η�̽����¸�ߤ���Ԥ��֤��ޤ��� EXCEPT�黻�Ҥϡ��ǽ�η�̽���ˤ��ꡢ2���ܤη�̽���ˤʤ��Ԥ��֤��ޤ��� 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�ޤ���FOR SHARE�����ꤹ��ȡ�SELECTʸ�ϰ���³���Ԥ��빹��������������Ԥ���å����ޤ� �ʾܤ����ϡ���Ҥ�FOR UPDATE/FOR SHARE���򻲾Ȥ��Ƥ��������ˡ�

�ơ��֥뤫���ͤ��ɤ߼��ˤ�SELECT���¤�ɬ�פǤ��� FOR UPDATE�ޤ���FOR SHARE����Ѥ���ˤϡ�����ˡ�UPDATE���¤�ɬ�פǤ���

�ѥ�᡼��

FROM��

FROM��ˤ�SELECT���оݤȤʤ륽�����ơ��֥��1�İʾ���ꤷ�ޤ��� ʣ���Υ����������ꤵ�줿��硢��̤����ƤΥ�������ľ�ѡʥ��������ˤȤʤ�ޤ��� ���������̾����������դ��ơ�ľ�ѤΤ����������֤��褦�˷�̹Ԥ���ꤷ�ޤ���

FROM��ˤϰʲ������Ǥ����Ǥ��ޤ���

table_name

��¸�Υơ��֥�⤷���ϥӥ塼��̾���Ǥ��ʥ������޽���̾��ġˡ� ONLY�����ꤵ�줿��硢���Υơ��֥�Τߤ�������󤵤�ޤ��� ONLY�����ꤵ��ʤ���硢�ơ��֥�ȡ�¸�ߤ���Сˤ����Ѿ��������ƤΥơ��֥뤬������󤵤�ޤ��� �ҥơ��֥�Υ������ϡ��ơ��֥�̾��*���դ��������ǻ��ꤹ�뤳�Ȥ�Ǥ��ޤ��������ߤΥС������Ǥϥǥե���ȤǹԤ��ޤ� ��7.1������Υ�꡼���Ǥϡ�ONLY���ǥե���ȤǤ����ˡ� �ǥե���Ȥο��񤤤��ѹ�����ˤϡ�sql_inheritance���ꥪ�ץ������ѹ����ޤ���

alias

��̾��ޤ�FROM�����ƥ������̾�Ǥ��� ��̾�ϡ������ʷ�ˤ��뤿�ᡢ�⤷���ϡ����ʷ���Ʊ���ơ��֥��ʣ���󥹥���󤹤���ˤ�ۣ�椵��ʤ�������˻Ȥ��ޤ��� ��̾�����ꤵ��Ƥ�����ϡ�������̾�ˤ�äƼºݤΥơ��֥�̾�ޤ��ϴؿ�̾�������˱�����ޤ��� �㤨�С�FROM foo AS f�Ȼ��ꤵ��Ƥ����硢�ʹߤ�SELECTʸ�ǤϤ���FROM�����ƥ��foo�ǤϤʤ�f�Ȥ��ƻ��Ȥ���ɬ�פ�����ޤ��� �ơ��֥����̾������С����Υơ��֥��ʣ�������̾�����֤������������̾�ꥹ�Ȥ򵭽Ҥ��뤳�Ȥ��Ǥ��ޤ���

select

FROM��Ǥϡ���SELECT��Ȥ����Ȥ��Ǥ��ޤ��� SELECT���ޥ�ɤμ¹��桢��SELECT�ν��Ϥϰ���ơ��֥�Ǥ��뤫�Τ褦��ư��ޤ��� ��SELECT�ϳ�̤ǰϤޤ�ʤ���Фʤ�ޤ��󡣤ޤ���ɬ����̾��Ϳ���Ƥ����ʤ���Фʤ�ޤ��� VALUES���ޥ�ɤ򤳤��ǻ��Ѥ��뤳�Ȥ�Ǥ��ޤ���

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��緿�Ǥϡ��������ʤ����NATURAL, ON join_condition��USING (join_column [, ...])�Τ����줫1�ĤΤߤ���ꤹ��ɬ�פ�����ޤ��� ���줾��ΰ�̣�ϸ�Ҥ��ޤ��� CROSS JOIN�Ǥϡ������ζ�򵭽Ҥ��ʤ��Ƥ⹽���ޤ���

JOIN��ϡ�2�Ĥ�FROM�����ƥ�����դ��ޤ��� ����Ҥν��֤���뤿��ˡ�ɬ�פʤ�г�̤���Ѥ��Ƥ��������� ��̤��ʤ��ȡ�JOIN�Ϻ����鱦������Ҥˤ��ޤ��� �ɤΤ褦�ʾ��Ǥ�JOIN�ϡ�����ޤ�ʬ����줿FROM���ܤ��⶯������դ�������ޤ���

CROSS JOIN��INNER JOIN��ľ�Ѥ�1���������ޤ�������ϡ�FROM�κǾ�̤�2�Ĥι��ܤ��礷����̤�Ʊ��Ǥ��� ���������ʻ��ꤹ��С˷����ˤ�ä����¤򤫤��뤳�Ȥ��Ǥ��ޤ��� CROSS JOIN��INNER JOIN ON (true)�������Ǥ��ꡢ���ˤ�äƺ�������ԤϤ���ޤ��� �����η�緿�ϵ��Ҿ���ص��Τ���������Ѱդ���Ƥ��ޤ��� �������äơ��̾��FROM��WHERE��¹Ԥ��ʤ���в���Ԥ��ޤ���

LEFT OUTER JOIN�ϡ����˹礦ľ�Ѥ����ƤιԡʤĤޤꡢ���η��������������Ƥ��Ȥ߹�碌�ˤ˲ä�����¦�ơ��֥����ǡ���¦�ơ��֥�ˤϷ������������Ԥ�¸�ߤ��ʤ��ä��ԤΥ��ԡ����֤��ޤ��� ���κ�¦�ơ��֥�ιԤ����̤Υơ��֥�����˳�ĥ���뤿��ˡ���¦�ơ��֥뤬������ˤ�NULL�ͤ���������ޤ��� �ޥå�����Ԥ������ϡ�JOIN�缫�Ȥξ��Τߤ���θ����뤳�Ȥ����դ��Ƥ��������� ¾�γ��������ϸ��Ŭ�Ѥ���ޤ���

�դˡ�RIGHT OUTER JOIN�ϡ����Ƥη��Ԥȡ���¦�ơ��֥�����ƤϤޤ��Τ��ʤ��ä���¦�ιԡʺ�¦��NULL�dz�ĥ����Ƥ��ޤ��ˤ�1�Ԥ��Ĥ��֤��ޤ��� �����Υơ��֥�������ؤ����LEFT OUTER JOIN���Ѵ��Ǥ���Τǡ�RIGHT OUTER JOIN�ϵ��Ҿ���ص���ޤ뤿���Ѱդ���Ƥ���˲᤮�ޤ���

FULL OUTER JOIN�ϡ����Ƥη��Ԥ˲ä������פ��ʤ��ä���¦�ιԡʱ�¦��NULL�dz�ĥ�ˡ����פ��ʤ��ä���¦�ιԡʺ�¦��NULL�dz�ĥ�ˤ������֤��ޤ���

ON 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�ϡ�2�ĤΥơ��֥����Ʊ��̾������ĹԤ����ƻ��ꤷ��USING�ꥹ�Ȥξ�ά���Ǥ���

WHERE��

WHERE����̾�ʲ��η����Ȥʤ�ޤ��ʤ��ζ�Ͼ�ά��ǽ�Ǥ��ˡ�

WHERE condition

condition�ϡ�ɾ���η�̤Ȥ���boolean�����֤�Ǥ�դμ��Ǥ��� ���ξ����������ʤ��Ԥ����ƽ��Ϥ����������ޤ��� ���Ƥ��ѿ��˼ºݤιԤ��ͤ��������ơ����������֤���硢���ιԤϾ����������Ȥߤʤ���ޤ���

GROUP BY��

GROUP BY����̾�ʲ��η����Ȥʤ�ޤ��ʤ��ζ�Ͼ�ά��ǽ�Ǥ��ˡ�

GROUP BY expression [, ...]

GROUP BY�ϡ����롼�ײ��Τ����Ϳ����줿����ɾ��������̤�Ʊ���ͤˤʤä��Ԥ�1�ĤιԤˤޤȤ�뵡ǽ������ޤ��� expression�ˤϡ��������̾�����������SELECT�ꥹ�ȹ��ܡˤ�̾��/���������뤤����������ͤ�׻�����Ǥ�դμ����뤳�Ȥ��Ǥ��ޤ��� Ƚ�Ǥ��Ĥ��ʤ����ϡ�GROUP BY��̾���Ͻ�����̾�ǤϤʤ�������̾�Ȥ��Ʋ�ᤵ��ޤ���

����ؿ������Ѥ��줿��硢�ƥ��롼��������ƤιԤ��оݤ˷׻����Ԥ�졢��̤Ȥ��ƥ��롼�פ��Ȥ��ͤ���������ޤ� �ʰ���GROUP BY���ʤ���С�����ؿ������򤵤줿���ƤιԤ��оݤ˷׻���Ԥ���1�Ĥ��ͤ��������ޤ��ˡ� GROUP BY��¸�ߤ����硢����ؿ������ʳ��ǡ����롼�ײ�����Ƥ��ʤ���򻲾Ȥ���SELECT�ꥹ�Ȥ�̵���ˤʤ�ޤ��� ���롼�ײ�����Ƥ��ʤ���ˤĤ����֤�����ͤ�ʣ�����ͤˤʤäƤ��ޤ���ǽ�������뤫��Ǥ���

HAVING��

HAVING���̾�ʲ��η��ˤʤ�ޤ��ʤ��ζ�Ͼ�ά��ǽ�Ǥ��ˡ�

HAVING condition

condition��WHERE��ǻ��ꤹ���Τ�Ʊ���Ǥ���

HAVING�ϡ����롼�ײ����줿�Ԥ���ǡ������������ʤ��Ԥ��������ǽ������ޤ��� HAVING��WHERE�ϼ��������ۤʤ�ޤ��� WHERE����GROUP BY��Ŭ�����˸ġ��ιԤ��Ф��ƥե��륿��ݤ���Τ��Ф���HAVING�ϡ�GROUP BY��Ŭ�Ѹ���������줿���롼�ײ����줿�Ԥ��Ф��ƥե��륿�򤫤��ޤ��� condition��ǻ��Ѥ�����ϡ�����ؿ���ǻ��Ѥ��줿��Τ���������롼�ײ����줿����դ˻��Ȥ����ΤǤʤ���Фʤ�ޤ���

HAVING�礬����ȡ�GROUP BY�礬�ʤ��ä��Ȥ��Ƥ��䤤��碌�ϥ��롼�ײ����줿�䤤��碌�ˤʤ�ޤ��� GROUP BY�������ʤ��䤤��碌������ؿ���ޤ����Ʊ�ͤǤ��� ���򤵤줿�ԤϤ��٤ơ�1�ĤΥ��롼�פ���������ΤȤߤʤ���ޤ����ޤ���SELECT�ꥹ�Ȥ�HAVING��Ǥϡ�����ؿ������Ϥ���ơ��֥��󤷤����Ȥ��뤳�Ȥ��Ǥ��ޤ��� ���������䤤��碌�Ǥϡ�HAVING�����ξ��ˤ�ñ��ιԤ򡢿��ʳ��ξ���0�Ԥ���Ϥ��ޤ���

SELECT�ꥹ��

SELECT�ꥹ�ȡ�SELECT��FROM�δ֤ˤ��륭����ɡˤϡ�SELECTʸ�ν��ϹԤ�������뼰����ꤹ���ΤǤ��� ���μ��Ǥϡ�FROM��ǽ��������򻲾Ȥ��뤳�Ȥ��Ǥ��ޤ����̾�ϼºݤ˻��Ȥ��ޤ��ˡ� AS output_name����Ѥ���ȡ�������˸���̾���Ȥ��̤�̾�����դ��뤳�Ȥ��Ǥ��ޤ��� ����̾���ϡ����ɽ���Ѥ����٥�Ȥ��ƻȤ��ޤ��� �ޤ���ORDER BY���GROUP BY���������ͤ򻲾Ȥ�����⡢����̾������ѤǤ��ޤ��� ��������WHERE��HAVING��Ǥϻ��ѤǤ��ޤ��󡣤����Ǥϼ���񤫤ʤ���Фʤ�ޤ���

�ꥹ�Ȥˤϡ����򤵤줿�Ԥ����Ƥ����ɽ����ά���Ȥ��ơ����ǤϤʤ�*�Ƚ񤯤��Ȥ��Ǥ��ޤ��� �ޤ������Υơ��֥��ͳ�褹����Τߤ�ɽ����ά���Ȥ��ơ�table_name.*�Ƚ񤯤��Ȥ�Ǥ��ޤ���

UNION��

UNION���̾�ʲ��η����Ȥʤ�ޤ���

select_statement UNION [ ALL ] select_statement

select_statement�ˤϡ�ORDER BY��LIMIT��FOR UPDATE��FOR SHARE�������ʤ�Ǥ�դ�SELECTʸ������ޤ� ��ORDER BY��LIMIT�ϡ���̤ǰϤ��ʣ���Ȥ�����Ϳ���뤳�Ȥ��Ǥ��ޤ��� ��̤��ʤ���硢�����ζ�ϱ�¦���֤��줿���ϼ��ǤϤʤ���UNION�η�̤��Ф���Ŭ�Ѥ���Ƥ��ޤ��ޤ��ˡ�

UNION�黻�Ҥϡ�2�Ĥ�SELECTʸ���֤��Ԥ��½����������ޤ��� �����½���ˤϡ�2�Ĥ�SELECTʸ�η�̽���Τ����줫�ʤޤ���ξ���ˤ�¸�ߤ���Ԥ����ƴޤޤ�Ƥ��ޤ��� UNION��ľ�ܤΥ��ڥ��ɤȤʤ�SELECTʸƱ�Τ��֤�����ϡ�Ʊ���Ǥʤ���Фʤ�ޤ��󡣤ޤ����б�������Υǡ������ˤϸߴ�����¸�ߤ���ɬ�פ�����ޤ���

ALL���ץ���󤬻��ꤵ��Ƥ��ʤ��¤ꡢUNION�η�̤ˤϽ�ʣ�Ԥϴޤޤ�ޤ��� ALL����ꤹ��Ȥ��Τ褦�ʽ�ʣ����Ԥ��ޤ��� �ʤ������äơ��̾�UNION ALL��UNION��꤫�ʤ��®�Ǥ��� �Ǥ������ALL����Ѥ��Ƥ��������ˡ�

1�Ĥ�SELECTʸ��ʣ����UNION�黻�Ҥ������硢��̤��ʤ��¤ꡢ�����Ϻ����鱦��ɾ������ޤ���

�������Ǥϡ�UNION�η�̤�UNION���Ф������Ϥˡ�FOR UPDATE�ޤ���FOR SHARE����ꤹ�뤳�ȤϤǤ��ޤ���

INTERSECT��

INTERSECT���̾�ʲ��η����Ȥʤ�ޤ���

select_statement INTERSECT [ ALL ] select_statement

select_statement�ˤϡ�ORDER BY��LIMIT��FOR UPDATE��FOR SHARE�������ʤ���Ǥ�դ�SELECTʸ������ޤ���

INTERSECT�ϡ�2�Ĥ�SELECTʸ���֤��Ԥ��ѽ����׻����ޤ��� �����ѽ���˴ޤޤ��Τϡ�2�Ĥ�SELECTʸ�η�̽����ξ����¸�ߤ���ԤǤ���

ALL���ץ�������ꤷ�ʤ��¤ꡢINTERSECT�η�̤˽�ʣ�Ԥϴޤޤ�ޤ��� ALL�����ꤵ�줿��硢��¦�ơ��֥��m�ġ���¦�ơ��֥��n�Ĥν�ʣ������Ԥϡ���̽���Ǥ�min(m,n)�Ľи����ޤ���

1�Ĥ�SELECTʸ��ʣ����INTERSECT�黻�Ҥ������硢��̤��ʤ��¤ꡢ�����Ϻ����鱦��ɾ������ޤ��� INTERSECT��UNION���⶯������դ�������ޤ��� �ĤޤꡢA UNION B INTERSECT C ��A UNION (B INTERSECT C)�Ȳ�ᤵ��ޤ���

�������Ǥϡ�INTERSECT�η�̤�INTERSECT���Ф������Ϥˡ�FOR UPDATE�ޤ���FOR SHARE����ꤹ�뤳�ȤϤǤ��ޤ���

EXCEPT��

EXCEPT���̾�ʲ��η����Ȥʤ�ޤ���

select_statement EXCEPT [ ALL ] select_statement

select_statement�ˤϡ�ORDER BY��LIMIT��FOR UPDATE��FOR SHARE�������ʤ���Ǥ�դ�SELECTʸ������ޤ���

EXCEPT�ϡ���¦��SELECTʸ�η�̤ˤ�¸�ߤ�����¦��SELECTʸ�η�̤ˤ�¸�ߤ��ʤ��Ԥν�����������ޤ���

ALL���ץ���󤬻��ꤵ��Ƥ��ʤ��¤ꡢEXCEPT�η�̤ˤϽ�ʣ�Ԥϴޤޤ�ޤ��� ALL�������硢��¦�ơ��֥��m�ġ���¦�ơ��֥��n�Ĥν�ʣ������Ԥϡ���̽���Ǥ�max(m-n,0)�Ľи����ޤ���

1�Ĥ�SELECTʸ��ʣ����EXCEPT�黻�Ҥ������硢��̤��ʤ��¤ꡢ�����Ϻ����鱦��ɾ������ޤ��� EXCEPT�η���դ��ζ�����UNION��Ʊ���Ǥ���

�������Ǥϡ�EXCEPT�η�̤�EXCEPT���Ф������Ϥˡ�FOR UPDATE�ޤ���FOR SHARE����ꤹ�뤳�ȤϤǤ��ޤ���

ORDER BY��

ORDER BY����̾�ʲ��η����Ȥʤ�ޤ��ʤ��ζ�Ͼ�ά��ǽ�Ǥ��ˡ�

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

expression�ˤϡ��������SELECT�ꥹ�ȹ��ܡˤ�̾��/���������뤤���������ͤ�����������Ǥ�դμ����뤳�Ȥ��Ǥ��ޤ���

ORDER BY���Ȥ��ȡ���̹Ԥ���ꤷ�����˽��äƥ����Ȥ��뤳�Ȥ��Ǥ��ޤ��� �Ǥ⺸¦�μ���Ȥä���Ӥ�����̡�2�ĤιԤ���������Ƚ�Ǥ��줿���ϡ�1�ı�¦�μ���Ȥä���Ӥ��ޤ������η�̤���������С�����˼��μ��˿ʤߤޤ��� ���ꤷ�����Ƥμ�����������Ƚ�Ǥ��줿���ϡ������˰�¸�������֤��֤���ޤ���

�����ϡ������ΰ��֡ʺ����鱦�˳�����Ƥ��ޤ��ˤ򼨤��ޤ��� �����Ȥ��ȡ���դ�̾��������ʤ���ν����������뤳�Ȥ��Ǥ��ޤ��� AS�����Ѥ���з�����̾���������Ƥ뤳�Ȥ��Ǥ���Τǡ�����Ϥɤ����Ƥ�ɬ�פʵ�ǽ�Ȥ����櫓�ǤϤ���ޤ���

�ޤ���ORDER BY��ˤϡ�SELECT��̥ꥹ�Ȥ˽и����ʤ����ޤࡢǤ�դμ�����ѤǤ��ޤ��� �������äơ��ʲ���ʸ��ͭ���Ǥ���

SELECT name FROM distributors ORDER BY code;

��������UNION��INTERSECT��EXCEPT�η�̤�ORDER BY��Ŭ�Ѥ�����ϡ����ϻ��ѤǤ������������̾���������Τߤ����Ǥ���Ȥ������¤�����ޤ���

ORDER BY�μ��Ȥ��Ʒ����̾��������̾��ξ���˰��פ���ñ�ʤ�̾����Ϳ����줿��硢ORDER BY�Ϥ��������̾�Ȥ��ư����ޤ��� ����ϡ�Ʊ�������ˤ�����GROUP BY������Ȥ�ȿ�ФǤ��� ����������ϡ�ɸ��SQL�Ȥθߴ������ݻ����뤿���ȯ�����Ƥ��ޤ���

ORDER BY���Ǥ�դμ��θ�ˡ���ά��ǽ�ʥ������ASC�ʾ���ˡ�DESC�ʹ߽�ˤ��ղä��뤳�Ȥ��Ǥ��ޤ��� ���꤬�ʤ���С��ǥե���Ȥ�ASC�������ΤȤ��ư����ޤ��� ����¾���������ꤹ��黻��̾��USING��˻��ꤹ����ˡ�⤢��ޤ��� �̾ASC��USING <�ȡ�DESC��USING >��Ʊ���Ǥ� �ʤ��������桼������ǡ������κ������ˤϡ��ǥե���ȤΥ����Ƚ��������뤳�Ȥ��Ǥ��ޤ����ޤ����ۤʤ�̾���α黻�Ҥ��б��դ����뤳�Ȥ�Ǥ��ޤ��ˡ�

NULL�ͤ�¾���ͤ����̤��ͤȤ��ƥ����Ȥ���ޤ��� ����������ȡ������Ƚ礬����λ���NULL�ͤϺǸ�ˡ��߽�λ���NULL�ͤϺǽ�˥����Ȥ���ޤ���

ʸ�����ǡ����Ǥϡ��ǡ����١������饹���ν�������˷��ꤵ�������������ξȹ��˽��äƥ����Ȥ���ޤ���

DISTINCT��

DISTINCT�����ꤵ���ȡ���ʣ����Ԥ����Ʒ�̥��åȤ���������ޤ� �ʤ��줾��1�ԤΤߤ��ݻ�����ޤ��ˡ� ALL�Ϥ���ȿ�Фǡ����ƤιԤ��ݻ�����ޤ��� �ǥե���ȤϤ�����Ǥ���

DISTINCT ON ( expression [, ...] )�ϳƹԽ������ǡ����ꤷ��������������ɾ�������ǽ�ιԤΤߤ��ݻ����ޤ��� DISTINCT ON���ϡ���Ҥ�ORDER BY��Ʊ����§�ǰ����ޤ��� �ƽ����"�ǽ�ι�"�ϡ�ORDER BY����Ѥ�����Ū�ιԤ��μ¤˺ǽ�˸����褦�ˤ��ʤ��¤�ͽ¬���뤳�ȤϤǤ��ޤ��� �㤨�С�������ϳ������κǿ��ε��ݾ������Ф��ޤ���

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

ORDER BY����Ѥ��Ƴ���������֤ˤ�äƹ߽�˥����Ȥ��ʤ���С��������ˤĤ�����������󤬤��ĤΤ�Τ��Ϥ狼��ޤ���

DISTINCT ON�˻��ꤹ�뼰��ORDER BY�κǤ⺸¦�μ��Ȱ��פ��ʤ���Фʤ�ޤ��� ORDER BY��ϡ��̾��DISTINCT ON���롼�פ���ǤιԤ�ͥ���̤���ꤹ���ɲ�Ū�ʼ���ޤߤޤ���

LIMIT��

LIMIT���2�Ĥ���Ω�������礫�鹽������ޤ���

LIMIT { count | ALL }
OFFSET start

count�ˤ��֤����Ԥκ�����򡢰�����start�ˤϹԤ��֤��Ϥ���������Ф��Կ�����ꤷ�ޤ��� ξ���Ȥ���ꤵ�줿��硢start��ʬ�����Ф��졢�������������count�Ԥ��֤���ޤ���

LIMIT��Ȥ����ϡ���̹Ԥ��դʽ��֤˶�������ORDER BY���Ȥ��Ȥ褤�Ǥ��礦�� �������ʤ��ȡ��䤤��碌��̤Τɤ���ʬ���֤����Τ����狼��ޤ��� 10��20���ܤޤǤ���Ϥ���Ȥ��Ƥ⡢�ɤν��֤��¤٤�����10��20���ܤʤΤǤ��礦���� ORDER BY����ꤷ�ʤ��¤ꡢ�Ԥ��֤������֤������Ǥ���

�䤤��碌�ץ��ʤ��䤤��碌�ײ������������LIMIT���θ����Τǡ�LIMIT��OFFSET�λ���ˤ�äưۤʤä��ײ�����뤳�Ȥˤʤ�Ǥ��礦���ײ褬�ۤʤ�С��ۤʤ���֤ǹԤ��֤�ޤ��� �������äơ�LIMIT/OFFSET�ͤ��ѹ��ˤ�äưۤʤ��̹Ԥ����򤷤褦�Ȥ���ȡ�ORDER BY�ǽ�����¤��ؤ��ʤ��¤ꡢ̷�⤷����̤��֤����Ȥˤʤ�ޤ��� ����ϥХ��ǤϤ���ޤ��� ��SQL�ϡ�ORDER BY�ǽ�������椵��ʤ��¤ꡢ�䤤��碌��̤��֤��������«���ʤ��פȤ������¤������ε���ʤΤǤ���

FOR UPDATE/FOR SHARE��

FOR UPDATE�ϰʲ��η����Ȥʤ�ޤ���

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

������Ϣ����FOR SHARE��ϰʲ��η����Ȥʤ�ޤ���

FOR SHARE [ OF table_name [, ...] ] [ NOWAIT ]

FOR UPDATE����Ѥ���ȡ��䤤��碌�ˤ�äƸ������줿�Ԥ������Ѥ˥��å�����ޤ��� ����ˤ�ꡢ���ԤΥȥ�󥶥�����󤬽�λ����ޤǤϡ������ιԤ�¾�Υȥ�󥶥������ˤ�ä��ѹ����줿�������줿�ꤹ�뤳�Ȥ��ʤ��ʤ�ޤ��� �Ĥޤꡢ���ԤΥȥ�󥶥�����󤬽�λ����ޤǤϡ�¾�Υȥ�󥶥�����󤬤����ιԤ��Ф���UPDATE��DELETE��SELECT FOR UPDATE���Ԥ��Ƥ���ݤ���ޤ��� �ޤ���¾�Υȥ�󥶥�����󤫤��UPDATE��DELETE��SELECT FOR UPDATE�ˤ�ä����򤷤��Ԥ����å�����Ƥ����硢SELECT FOR UPDATE��¹Ԥ��褦�Ȥ���ȡ�SELECT FOR UPDATE�Ϥ��Υȥ�󥶥�����󤬽�λ����Τ��ԤäƤ��顢���θ�Ԥ���å����ƹ������줿�Ԥ��֤��ޤ��ʹԤ�������줿�����֤��ޤ���ˡ� �ܺ٤���12���򻲾Ȥ��Ƥ���������

¾�Υȥ�󥶥������Υ��ߥåȤ��Ե����뤳�Ȥʤ�����ʤ��ˤϡ�NOWAIT���ץ�������Ѥ��Ƥ��������� ����ԤΥ��å���¨�¤˳����Ǥ��ʤ�����SELECT FOR UPDATE NOWAIT���Ե������ˡ����顼����𤷤ޤ��� NOWAIT�Ϲԥ�٥���å��ˤΤߤ�Ŭ�Ѥ�����������դ��Ƥ��������� �Ĥޤꡢɬ�פ�ROW SHARE�ơ��֥��٥���å����̾��̤����ˡ�� ��12�����ȡˤdz�������ޤ��� �⤷���ơ��֥��٥�Υ��å����Ե������˳������ʤ���Фʤ�ʤ��ΤǤ���С�LOCK��NOWAIT���ץ�������Ѥ��Ƥ���������

FOR SHARE��Ʊ�ͤ˿��񤤤ޤ��������ꤹ��Ԥ��Ф���¾Ū���å����������ΤǤϤʤ���ͭ���å���������������ۤʤ�ޤ��� ��ͭ���å��ˤ�ꡢ¾�ȥ�󥶥������ˤ�뤽�ιԤ��Ф���UPDATE��DELETE��SELECT FOR UPDATE���ϥ֥��å�����ޤ��� ��������¾�ȥ�󥶥������ˤ��SELECT FOR SHARE�����ɤ��ޤ���

FOR UPDATE�ޤ���FOR SHARE�������Υơ��֥뤬���ꤵ��Ƥ�����ϡ����Υơ��֥�ιԤΤߤ����å�����ޤ��� SELECT���¾�Υơ��֥���̾��̤���ɤ߹��ޤ�ޤ��� �ơ��֥�ꥹ�Ȥ�����ʤ�FOR UPDATE�⤷����FOR SHARE��ϡ����Υ��ޥ�ɤǻ��Ѥ���뤹�٤ƤΥơ��֥�˱ƶ���Ϳ���ޤ��� FOR UPDATE�⤷����FOR SHARE���ӥ塼�ޤ������䤤��碌�ǻ��Ѥ��줿��硢���Υӥ塼�����䤤��碌�ǻ��Ѥ���뤹�٤ƤΥơ��֥�˱ƶ���Ϳ���ޤ���

�ۤʤ���å�������ۤʤ�ơ��֥�˻��ꤹ��ɬ�פ�����С�ʣ����FOR UPDATE��FOR SHARE��򵭽Ҥ��뤳�Ȥ��Ǥ��ޤ��� FOR UPDATE���FOR SHARE���ξ���ǡ�Ʊ��Υơ��֥�򵭽Ҥ����ʤޤ��ϰ���Ū�˱ƶ���Ϳ����줿�˾�硢FOR UPDATE�Ȥ��ƽ�������ޤ��� Ʊ�ͤˡ�����ơ��֥�˱ƶ���Ϳ�����Τ����줫��NOWAIT�����ꤵ�줿��硢���Υơ��֥��NOWAIT�Ȥ��ƽ�������ޤ���

FOR UPDATE�����FOR SHARE�ϡ��֤����Ԥ��ơ��֥�ΤɤιԤ��б�����Τ������Τ˼��̤Ǥ��ʤ����ˤϻ��Ѥ��뤳�Ȥ��Ǥ��ޤ��� �㤨�С�����ˤϻ��ѤǤ��ޤ���

����

�Ԥ���å����Ƥ����Υ����֥ݥ���Ȥ�PL/pgSQL�㳰�֥��å��Ǥ��ιԤ��Խ����뤳�Ȥ��򤱤Ƥ��������� ��Υ�����Хå��ǥ��å��������Ƥ��ޤ��ޤ��� �ʲ�����򼨤��ޤ���

BEGIN;
SELECT * FROM mytable WHERE key = 1 FOR UPDATE;
SAVEPOINT s;
UPDATE mytable SET ... WHERE key = 1;
ROLLBACK TO s;

ROLLBACK�塢�Ԥϡ������֥ݥ�������Υ��å����줿�������ξ��֤���餺���¼����å�����ޤ��� ���ߤΥȥ�󥶥������ǥ��å����줿�Ԥ��������줿�������줿�ꤷ�����䡢��ͭ���å�����¾���å��˸��夷����硢����ϴ����Ǥ��� ���٤Ƥξ��ˤ����ơ������Υ��å����֤�˺����Ƥ��ޤ��� �ȥ�󥶥�����󤬤��θ塢���Υ��å����ޥ�ɤ�³�������δ֤ξ��֤˥�����Хå�������硢���ιԤϥ��å�����Ƥ��ʤ����֤Ȥ��Ƹ���ޤ��� ����ϼ����������Ǥ��ꡢ�����PostgreSQL��꡼���ǽ�������ͽ��Ǥ���

����

LIMIT���FOR UPDATE/SHARE���ξ������Ѥ���SELECT���ޥ�ɤǤϡ�LIMIT�ǻ��ꤷ���Կ����⾯�ʤ��Ԥ��֤�����礬����ޤ��� �����LIMIT���ޤ��ǽ��Ŭ�Ѥ���뤿��Ǥ��� ���Υ��ޥ�ɤϻ��ꤷ���Կ�ʬ�ιԤ����򤷤ޤ��������ΰ������뤤�Ϥ��٤Ƥ��Ф�����å��μ������֥��å�������ǽ��������ޤ��� ����SELECT�Υ֥��å���������줿�����ǡ��ԤϺ������Ƥ��뤫�⤷��ޤ��󤷡��ޤ����䤤��碌��WHERE���˹��ʤ��ʤäƤ��뤫�⤷��ޤ��� ���Τ褦�ʾ�硢�Ԥ��֤���ޤ���

��

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
 ...

���ƤαDz��len����פ�kind��ˤ�äƷ�̤򥰥롼�ײ����ޤ���

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

���ƤαDz��len����פ�kind��ˤ�äƷ�̤򥰥롼�ײ�������פ�5���֤�꾯�ʤ����롼�פι�פ�ɽ�����ޤ���

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

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

���ˡ���̤�2���ܤ����name�ˤ����Ƥ˴�Ť��ƥ����Ȥ�����ˡ��2���㼨���ޤ���

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����ά���뤳�Ȥ��Ǥ��ޤ��� ����ˤ�äơ��ʲ��Τ褦��ñ��ʼ���׻������뤳�Ȥ��Ǥ��ޤ���

SELECT 2+2;

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

¾��SQL�ǡ����١����Ǥϡ����Τ褦��SELECT��Ԥ�����ˤϥ��ߡ���1�ԥơ��֥��Ȥ�ʤ���Фʤ�ޤ���

FROM��λ��꤬�ʤ���硢�䤤��碌�Ǥϥǡ����١����ơ��֥�򻲾Ȥ��뤳�Ȥ��Ǥ��ޤ��� �㤨�С��ʲ����䤤��碌��̵���Ǥ���

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

PostgreSQL��꡼��8.1������ޤǤǤϡ��������������䤤��碌������դ����䤤��碌�ǻ��Ȥ���ƥơ��֥���Ф������Ū�ʹ��ܤ��䤤��碌��FROM����ɲä��Ƥ��ޤ����� ����ϡ�ɸ��SQL�˽��äƤ��餺���ޤ������顼��Ƴ���䤹�����ᡢ�ǥե���Ȥ�ư��ǤϤʤ��ʤ�ޤ����� ����ư��˰�¸���륢�ץꥱ�������ˤ�����ߴ������ݤĤˤϡ�add_missing_from�����ѿ���ͭ���ˤ��Ƥ���������

AS�������

ɸ��SQL�Ǥϡ���ά��ǽ�ʥ�����ɤǤ���AS��ñ�ʤ�Υ����Ȥ��ư���졢��ά���Ƥ�ƶ��Ϥ���ޤ��� PostgreSQL�Υѡ����Ͻ������̾�����ѹ�����ݤˤ��Υ�����ɤ�ɬ�פȤ��ޤ��� �ʤ��ʤ顢���γ�ĥ��ǽ��ͤ���ȡ����Υ�����ɤ��ʤ��ȹ�ʸ���Ϥ������Ƥ��ˤĤʤ��뤫��Ǥ��� ��������FROM���ܤǤ�AS�Ͼ�ά��ǽ�Ǥ���

GROUP BY��ORDER BY�ˤ��������Ѳ�ǽ��̾������

ɸ��SQL-92�Ǥϡ�ORDER BY��ǻ��ѤǤ���Τϡ���̤���̾�������ΤߤǤ��ꡢGROUP BY��ǻ��ѤǤ���Τϡ�������̾����ʤ뼰�ΤߤǤ��� PostgreSQL�ϡ������ζ��ξ��������Ǥ���褦�˳�ĥ����Ƥ��ޤ� �ʤ������������Ƥ����������ɸ��β�᤬���Ѥ���ޤ��ˡ� ����ˡ�PostgreSQL�ǤϤɤ���ζ�ˤ�Ǥ�դμ������Ǥ��ޤ��� ���ǻȤ���̾���ϡ���˷�����̾���ǤϤʤ��������̾���Ȥߤʤ���뤳�Ȥ����դ��Ƥ���������

SQL:1999�ʹߤǤϡ�SQL-92�Ȥξ�̸ߴ������ޤä����ʤ���¿���ۤʤ���������Ѥ���Ƥ��ޤ��� ���������ۤȤ�ɤξ�硢PostgreSQL��SQL:1999��Ʊ����ˡ��ORDER BY��GROUP BY���ᤷ�ޤ���

��ɸ���

DISTINCT ON��LIMIT��OFFSET���ɸ��SQL�Ǥ��������Ƥ��ޤ���