[ WITH [ RECURSIVE ] with_query [, ...] ]SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ [ AS ] output_name ] [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ WINDOW window_name AS ( window_definition ) [, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ] [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ] [ LIMIT { count | ALL } ] [ OFFSET start [ ROW | ROWS ] ] [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ] [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ] ������from_item�ϰʲ��Τ����줫�Ǥ��� [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ] ( select ) [ AS ] alias [ ( column_alias [, ...] ) ] with_query_name [ [ 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 [, ...] ) ] �ޤ�with_query�ϰʲ����̤�Ǥ��� with_query_name [ ( column_name [, ...] ) ] AS ( select ) TABLE { [ ONLY ] table_name [ * ] | with_query_name }
SELECT��0�İʾ�Υơ��֥뤫��Ԥ��֤��ޤ��� SELECT�ΰ���Ū�ʽ����ϰʲ����̤�Ǥ���
WITH�ꥹ����Τ��٤Ƥ��䤤��碌��������ޤ��� �����ϼ¼���FROM�ꥹ���⤫�黲�Ȳ�ǽ�ʰ���ơ��֥�Ȥ�������ޤ��� FROM���2��ʾ廲�Ȥ����WITH�䤤��碌�ϰ��٤Τ߷�����ޤ��� �ʸ�Ҥ�WITH���Ȥ��Ƥ�����������
FROM�ꥹ�Ȥˤ��������Ǥ�������ޤ� ��FROM�ꥹ�Ȥ����Ǥϼ¥ơ��֥뤫���ۥơ��֥�Τ����줫�Ǥ��ˡ� FROM�ꥹ�Ȥ�ʣ�������Ǥ����ꤵ�줿��硢�����ϥ�������礵��ޤ� �ʸ�Ҥ�FROM���Ȥ��Ƥ��������ˡ�
WHERE�礬���ꤵ�줿��硢�����������ʤ��Ԥ����ƽ��Ϥ����������ޤ� �ʸ�Ҥ�WHERE���Ȥ��Ƥ��������ˡ�
GROUP BY�礬���ꤵ�줿��硢1�Ĥޤ���ʣ�����ͤ����˹礦�Ԥ��Ȥ˥��롼�פ�ʬ���ƽ��Ϥ���ޤ��� HAVING�礬���ꤵ�줿��硢���ꤷ�������������ʤ����롼�פϼ�������ޤ� �ʸ�Ҥ�GROUP BY����HAVING���Ȥ��Ƥ��������ˡ�
�ºݤˤϡ����줿�ƹԤ��Ф��ơ�SELECT���ϼ�����Ѥ��Ʒ�������̤ιԤ����Ϥ���ޤ� �ʸ�Ҥ�SELECT�ꥹ���Ȥ��Ƥ��������ˡ�
UNION��INTERSECT��EXCEPT�黻�Ҥ���Ѥ���ȡ�ʣ����SELECTʸ�ν��Ϥ�1�Ĥη�̽���ˤޤȤ�뤳�Ȥ��Ǥ��ޤ��� UNION�黻�Ҥϡ�ξ���η�̽����¸�ߤ���Ԥȡ������η�̽����¸�ߤ���Ԥ������֤��ޤ��� INTERSECT�黻�Ҥϡ�ξ���η�̽����¸�ߤ���Ԥ��֤��ޤ��� EXCEPT�黻�Ҥϡ��ǽ�η�̽���ˤ��ꡢ2���ܤη�̽���ˤʤ��Ԥ��֤��ޤ��� ALL�����ꤵ��ʤ��¤ꡢ������ξ��⡢��ʣ����Ԥϼ�������ޤ� �ʸ�Ҥ�UNION����INTERSECT����EXCEPT���Ȥ��Ƥ��������ˡ�
ORDER BY�礬���ꤵ�줿��硢�֤����Ԥϻ��ꤷ�����֤ǥ����Ȥ���ޤ��� ORDER BY�����ꤵ��ʤ����ϡ������ƥब�������Ǹ��Ĥ������֤ǹԤ��֤���ޤ� �ʸ�Ҥ�ORDER BY���Ȥ��Ƥ��������ˡ�
DISTINCT�Ϸ�̤����ʣ�Ԥ�������ޤ��� DISTINCT ON�ϻ��ꤷ�����Ƥμ��˰��פ���Ԥ�������ޤ��� ALL�Ǥϡ���ʣ�Ԥ�ޤᡢ���Ƥθ���Ԥ��֤��ޤ��ʤ��줬�ǥե���ȤǤ��� �ܤ����ϡ���Ҥ�DISTINCT���Ȥ��Ƥ��������ˡ�
LIMIT�ʤޤ���FETCH FIRST�ˤ��뤤��OFFSET�礬���ꤵ�줿��硢SELECTʸ�Ϸ�̹Ԥΰ���ʬ�Τߤ��֤��ޤ� �ʾܤ����ϡ���Ҥ�LIMIT���Ȥ��Ƥ��������ˡ�
FOR UPDATE�ޤ���FOR SHARE�����ꤹ��ȡ�SELECTʸ�ϰ���³���Ԥ��빹��������������Ԥ���å����ޤ� �ʾܤ����ϡ���Ҥ�FOR UPDATE/FOR SHARE���Ȥ��Ƥ��������ˡ�
SELECT���ޥ����ǻȤ����줾����Ф���SELECT���¤�ɬ�פǤ��� FOR UPDATE�ޤ���FOR SHARE����Ѥ���ˤϡ�����ˡ�������Ǥ���褦�˳ƥơ��֥�Ǿ��ʤ��Ȥ�1����Ф����UPDATE���¤�ɬ�פǤ���
WITH��ˤ����䤤��碌���̾���ˤ�껲�Ȳ�ǽ�ʡ�1�İʾ�����䤤��碌����ꤹ�뤳�Ȥ��Ǥ��ޤ��� ���䤤��碌�ϼ¼�Ū�˼��䤤��碌�δ֤ΰ��Ū�ʥơ��֥뤫�ӥ塼�Τ褦��ư��ޤ���
�ʥ������������ʤ���̾�����WITH�䤤��碌�ǻ��ꤷ�ʤ���Фʤ�ޤ��� ��ά��ǽ�Ǥ�������̾�Υꥹ�Ȥ���ꤹ�뤳�Ȥ�Ǥ��ޤ��� ������ά����ȡ���̾�����䤤��碌������ꤵ��ޤ���
RECURSIVE�����ꤵ���ȡ����䤤��碌�ϼ��Ȥ�̾���ˤ�껲�Ȥ��뤳�Ȥ��Ǥ��ޤ��� �����������䤤��碌�ϰʲ��Τ褦�ʷ����Ǥʤ���Фʤ�ޤ���
non_recursive_term UNION [ ALL ] recursive_term
�����ǺƵ�Ū�ʼ��ʻ��Ȥ�UNION�α��դ˸���ʤ���Фʤ�ޤ��� �䤤��碌������1�ĤκƵ�Ū�ʼ��ʻ��ȤΤߤ�������ޤ���
RECURSIVE�ˤ�¾�ˤ⡢WITH�䤤��碌������̤�Ǥʤ��Ƥ��ʤ��Ȥ������̤�����ޤ��� �䤤��碌�ϥꥹ�Ȥθ�ˤ����̤Τ�ΤȤ��뤳�Ȥ��Ǥ��ޤ��� �ʤ�������뻲�Ȥ����Ū�ʻ��Ȥϼ�������Ƥ��ޤ��� RECURSIVE���ʤ��ȡ�WITH�䤤��碌�ϼ��䤤��碌�����̤���WITH�䤤��碌�Τ�����WITH�ꥹ�Ȥ������ˤ����ΤΤߤȤ��뤳�Ȥ��Ǥ��ޤ���
WITH�䤤��碌��ͭ�Ѥ������ϡ� ����餬���䤤��碌��ʣ���Ȥ��Ƥ����Ȥ��Ƥ⡢���䤤��碌�μ¹���������٤Τ�ɾ����������Ǥ���
�ɲþ���ˤĤ��Ƥ�項7.8�Ȥ��Ƥ���������
FROM��ˤ�SELECT���оݤȤʤ륽�����ơ��֥��1�İʾ���ꤷ�ޤ��� ʣ���Υ����������ꤵ�줿��硢��̤����ƤΥ�������ľ�ѡʥ��������ˤȤʤ�ޤ��� ���������̾����������դ��ơ�ľ�ѤΤ����������֤��褦�˷�̹Ԥ���ꤷ�ޤ���
FROM��ˤϰʲ������Ǥ����Ǥ��ޤ���
��¸�Υơ��֥�⤷���ϥӥ塼��̾���Ǥ��ʥ���������̾��ġˡ� ONLY�����ꤵ�줿��硢���Υơ��֥�Τߤ��������ޤ��� ONLY�����ꤵ��ʤ���硢�ơ��֥�Ȥ����Ѿ��������ƤΥơ��֥뤬�������ޤ���
��̾��ޤ�FROM�����ƥ������̾�Ǥ��� ��̾�ϡ������ʷ�ˤ��뤿�ᡢ�⤷���ϡ����ʷ���Ʊ���ơ��֥��ʣ���������ˤ�ۣ�椵��ʤ�������˻Ȥ��ޤ��� ��̾�����ꤵ��Ƥ�����ϡ�������̾�ˤ�äƼºݤΥơ��֥�̾�ޤ��ϴؿ�̾�������˱�����ޤ��� �㤨�С�FROM foo AS f�Ȼ��ꤵ��Ƥ����硢�ʹߤ�SELECTʸ�ǤϤ���FROM�����ƥ��foo�ǤϤʤ�f�Ȥ��ƻ��Ȥ���ɬ�פ�����ޤ��� �ơ��֥����̾������С����Υơ��֥��ʣ�������̾�����֤������������̾�ꥹ�ȤҤ��뤳�Ȥ��Ǥ��ޤ���
FROM��Ǥϡ���SELECT��Ȥ����Ȥ��Ǥ��ޤ��� SELECT���ޥ�ɤμ¹��桢��SELECT�ν��Ϥϰ���ơ��֥�Ǥ��뤫�Τ褦��ư��ޤ��� ��SELECT�ϳ�̤ǰϤޤ�ʤ���Фʤ�ޤ��ޤ���ɬ����̾��Ϳ���Ƥ����ʤ���Фʤ�ޤ��� VALUES���ޥ�ɤ��ǻ��Ѥ��뤳�Ȥ�Ǥ��ޤ���
WITH�䤤��碌�ϡ��䤤��碌��̾������������ơ��֥�̾�Ǥ��뤫�Τ褦�ˡ�̾���Ҥ��뤳�Ȥǻ��Ȥ���ޤ��� �ʼºݤˤ�WITH�䤤��碌�ϼ��䤤��碌���оݤȤ���ơ��֥��Ʊ��̾���μ¥ơ��֥���ä��ޤ��� ɬ�פʤ�Хơ��֥�̾�����������뤳�Ȥ�Ʊ��̾���μ¥ơ��֥�Ȥ��뤳�Ȥ��Ǥ��ޤ����� �ơ��֥��Ʊ�ͤ���ˡ����̾�����뤳�Ȥ��Ǥ��ޤ���
FROM��Ǥϡ��ؿ��ƤӽФ�����Ѥ��뤳�Ȥ��Ǥ��ޤ� �ʤ�����ä˴ؿ�����̥��åȤ��֤�����ͭ�ѤǤ�����Ǥ�դδؿ�����Ѥ��뤳�Ȥ�Ǥ��ޤ��ˡ� SELECT���ޥ�ɤμ¹���ϡ����δؿ��η�̤ϰ���ơ��֥�Ǥ��뤫�Τ褦��ư��ޤ��� �ޤ�����̾����Ѥ��뤳�Ȥ�Ǥ��ޤ��� ��̾�����ꤵ��Ƥ���С�����������̾�ꥹ�Ȥ���ꤷ�ơ��ؿ���ʣ�緿������ͤ�°�����Ф�������̾�����뤳�Ȥ�Ǥ��ޤ��� �ؿ���record�ǡ��������֤����������Ƥ�����ϡ���̾���ʤ��AS������ɤȡ������³����column_name data_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�ĥ�ˤ������֤��ޤ���
join_condition�ϡ����ˤ����ƤɤιԤ����פ��뤫����ꤹ�롢boolean�����ͤ��֤����Ǥ���WHERE���������Ƥ��ޤ��ˡ�
USING ( a, b, ... )���ON left_table.a = right_table.a AND left_table.b = right_table.b ...�ξ�ά���Ǥ��� USING�����������ξ���ǤϤʤ������Τߤ����ν��Ϥ˴ޤޤ�뤳�Ȥ��̣���ޤ���
NATURAL�ϡ�2�ĤΥơ��֥����Ʊ��̾������ĹԤ����ƻ��ꤷ��USING�ꥹ�Ȥξ�ά���Ǥ���
WHERE����̾�ʲ��η����Ȥʤ�ޤ��ʤ��ζ�Ͼ�ά��ǽ�Ǥ��ˡ�
WHERE condition
condition�ϡ�ɾ���η�̤Ȥ���boolean�����֤�Ǥ�դμ��Ǥ��� ���ξ����������ʤ��Ԥ����ƽ��Ϥ����������ޤ��� ���Ƥ��ѿ��˼ºݤιԤ��ͤ��������ơ����������֤���硢���ιԤϾ����������Ȥߤʤ���ޤ���
GROUP BY����̾�ʲ��η����Ȥʤ�ޤ��ʤ��ζ�Ͼ�ά��ǽ�Ǥ��ˡ�
GROUP BY expression [, ...]
GROUP BY�ϡ����롼�ײ��Τ����Ϳ����줿����ɾ��������̤�Ʊ���ͤˤʤä��Ԥ�1�ĤιԤˤޤȤ�뵡ǽ������ޤ��� expression�ˤϡ��������̾�����������SELECT�ꥹ�ȹ��ܡˤ�̾��/���������뤤����������ͤ������Ǥ�դμ����뤳�Ȥ��Ǥ��ޤ��� Ƚ�Ǥ��Ĥ��ʤ����ϡ�GROUP BY��̾���Ͻ�����̾�ǤϤʤ�������̾�Ȥ��Ʋ�ᤵ��ޤ���
����ؿ������Ѥ��줿��硢�ƥ��롼��������ƤιԤ��оݤ˷����Ԥ�졢��̤Ȥ��ƥ��롼�פ��Ȥ��ͤ���������ޤ� �ʰ���GROUP BY���ʤ���С�����ؿ������줿���ƤιԤ��оݤ˷���Ԥ���1�Ĥ��ͤ��������ޤ��ˡ� GROUP BY��¸�ߤ����硢����ؿ������ʳ��ǡ����롼�ײ�����Ƥ��ʤ���Ȥ���SELECT�ꥹ�Ȥ�̵���ˤʤ�ޤ��� ���롼�ײ�����Ƥ��ʤ���ˤĤ����֤�����ͤ�ʣ�����ͤˤʤäƤ��ޤ���ǽ�������뤫��Ǥ���
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�Ԥ���Ϥ��ޤ���
��ά��ǽ��WINDOW��ΰ���Ū�ʹ�ʸ�ϰʲ����̤�Ǥ���
WINDOW window_name AS ( window_definition ) [, ...]
������window_name�ϡ����ΤΤ��Υ�����ɥ������OVER��ǻ��Ȥ��뤳�Ȥ��Ǥ���̾���Ǥ��� �ޤ���window_definition�ϰʲ����̤�Ǥ���
[ existing_window_name ] [ PARTITION BY expression [, ...] ] [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ] [ frame_clause ]
existing_window_name�����ꤵ�줿��硢�����WINDOW�ꥹ�Ȥ����ˤ�����ܤȤ��ʤ���Фʤ�ޤ��� ������������ɥ��Ϥ����ϰϻ����ι��ܤ��饳�ԡ����ޤ��� �������礬���ä�����Ʊ�ͤǤ��� ���ξ�硢������������ɥ��Ǥ��ȼ���PARTITION BY�����ꤹ�뤳�ȤϤǤ��ޤ��� �ޤ������ԡ����줿������ɥ���ORDER BY������ʤ����Τ�ORDER BY����ꤹ�뤳�Ȥ��Ǥ��ޤ��� ������������ɥ��Ͼ���ȼ��Υե졼������Ѥ��ޤ��� ���ԡ����줿������ɥ��ϥե졼������ꤷ�ƤϤʤ�ޤ���
PARTITION BY�ꥹ�Ȥ����Ǥ�GROUP BY�������ǤȤۤȤ��Ʊ���褦�˲�ᤵ��ޤ��� ��������������Ͼ��ñ��ʼ��Ǥ��ꡢ�������̾�����ֹ�ǤϤʤ����Ȥ��ۤʤ�ޤ��� ¾�ˤ�㤤�����ꡢ�����μ��ϡ��̾��GROUP BY��Ǥϵ�����ʤ�������ؿ���ޤ�뤳�Ȥ��Ǥ���Ȥ������Ǥ��� ���롼�ײ�����ӽ�������θ�˥�����ɥ�������ư��뤿�ᡢ�����Ǥϵ�����Ƥ��ޤ���
Ʊ�ͤˡ�ORDER BY�ꥹ�Ȥ����Ǥ�ORDER BY�������ǤȤۤȤ��Ʊ���褦�˲�ᤵ��ޤ��� �����������μ��Ͼ��ñ��ʼ��Ǥ��ꡢ�������̾�����ֹ�ǤϤʤ����Ȥ��ۤʤ�ޤ���
��ά��ǽ��frame_clause�ϡ��ʤ��٤ƤǤϤ���ޤ��˥ե졼��˰�¸���륦����ɥ��ؿ��Ѥ�������ɥ��ե졼����������ޤ��� ������ɥ��ե졼��ϡ��䤤��碌�γƹ�(���ߤι��ȸƤФ�ޤ�)�˴�Ϣ����Ԥν���Ǥ��� frame_clause�ϰʲ��Τ����줫���뤳�Ȥ��Ǥ��ޤ���
[ RANGE | ROWS ] frame_start [ RANGE | ROWS ] BETWEEN frame_start AND frame_end
������frame_start��frame_end�ϰʲ��Τ����줫���뤳�Ȥ��Ǥ��ޤ���
UNBOUNDED PRECEDING value PRECEDING CURRENT ROW value FOLLOWING UNBOUNDED FOLLOWING
frame_end����ά���줿���ǥե���Ȥ�CURRENT ROW�Ȥʤ�ޤ��� frame_start��UNBOUNDED FOLLOWING�Ȥ��뤳�Ȥ��Ǥ��ʤ���frame_end��UNBOUNDED PRECEDING�Ȥ��뤳�Ȥ��Ǥ��ʤ�������ӡ���Υꥹ�Ȥ�frame_end�������frame_start����������˹Ԥ����Ȥ��Ǥ��ʤ��Ȥ������¤�����ޤ��� �㤨��RANGE BETWEEN CURRENT ROW AND value PRECEDING�ϵ�����ޤ���
�ǥե���ȤΥե졼�ಽ���ץ�����RANGE UNBOUNDED PRECEDING�Ǥ��� �����RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW��Ʊ���ǡ� �ѡ��ƥ���������Ƭ����ORDER BY����ˤ����븽�ߤιԤκǸ�Υԥ��ޤǤΤ��٤ƤιԤ�ե졼��Ȥ��ޤ�(ORDER BY���ʤ���Ф��٤ƤιԤ��̣���ޤ�)�� ����Ū��UNBOUNDED PRECEDING�ϥե졼�ब�ѡ��ƥ���������Ƭ����Ϥޤ뤳�Ȥ��̣����Ʊ�ͤ�UNBOUNDED FOLLOWING�ϥե졼�ब�ѡ��ƥ������κǽ��Ԥǽ���뤳�Ȥ��̣���ޤ�(RANGE�⡼�ɤ�ROWS���ϴط�����ޤ���)�� ROWS�⡼�ɤǤϡ�CURRENT ROW�ϥե졼�ब���ߤιԤǻϤޤ롢�ޤ��Ͻ���뤳�Ȥ��̣���ޤ�����RANGE�⡼�ɤǤϡ��ե졼�ब���ߤιԤ�ORDER BY����ˤ�����ǽ�Υԥ��ޤ��ϺǸ�Υԥ��ǻϤޤ롢�ޤ��Ͻ���뤳�Ȥ��̣���ޤ��� �������Ǥ�value PRECEDING�����value FOLLOWING�Ȥ������櫓��ROWS�⡼�ɤ����ǵ�����ޤ��� �����ϡ����ߤιԤβ������ޤ��ϲ��Ը�˥ե졼�ब�Ϥޤ�ޤ��Ͻ���뤳�Ȥ��ޤ��� value���������Ǥʤ���Фʤ餺���ѿ�������ؿ���������ɥ��ؿ���ޤ�뤳�ȤϤǤ��ޤ��� �����ͤ�NULL�ޤ�������뤳�ȤϤǤ��ޤ��� �����������ߤιԼ��Ȥ����를�����뤳�Ȥ��Ǥ��ޤ���
ORDER BY����ˤ�ꤽ�ιԤ��դ˽���դ��Ǥ��ʤ���硢ROWS��ͽ���Ǥ��ʤ���̤�⤿�餹��ǽ�������뤳�Ȥ����դ��Ʋ������� RANGE�ϡ�ORDER BY����ˤ�����ԥ��Ȥʤ�Ԥ�Ʊ���˰����롢�Ĥޤ�Ǥ�դ�2�ĤΥԥ��ϥե졼�����ξ���Ȥ�¸�ߤ��뤫��¸�ߤ��ʤ����Τ����줫�Ȥʤ뤳�Ȥ��μ¤ˤʤ�褦���߷פ���Ƥ��ޤ���
WINDOW�����Ū�ϡ��䤤��碌��SELECT�ꥹ���ޤ���ORDER BY���˵��ܤ����������ɥ��ؿ���ư����ꤹ�뤳�ȤǤ��� �����δؿ��Ϥ���OVER��ˤ�����̾����WINDOW��ι��ܤȤ��뤳�Ȥ��Ǥ��ޤ��� ������WINDOW��ι��ܤ�¾�ǻ��Ȥ���ƤϤʤ�ޤ��� �䤤��碌��ǻ��Ѥ���ʤ��ä���Τϡ�ñ��̵�뤵��ޤ��� ������ɥ��ؿ��ƤӽФ���OVER��ǥ�����ɥ������ľ�ܵ��ꤹ�뤳�Ȥ��Ǥ��ޤ��Τǡ�WINDOW��������Ȥ鷺�˥�����ɥ��ؿ�����Ѥ��뤳�Ȥ��Ǥ��ޤ��� ������WINDOW��ϡ�Ʊ��������ɥ������ʣ���Υ�����ɥ��ؿ���ɬ�פȤ������������̤�ʤ����Ȥ��Ǥ��ޤ���
������ɥ��ؿ��˴ؤ���ܺ٤ˤĤ��Ƥ�項3.5��項4.2.8��項7.2.4�Ȥ��Ƥ���������
SELECT�ꥹ�ȡ�SELECT��FROM�δ֤ˤ��륭����ɡˤϡ�SELECTʸ�ν��ϹԤ�������뼰����ꤹ���ΤǤ��� ���μ��Ǥϡ�FROM��ǽ��������Ȥ��뤳�Ȥ��Ǥ��ޤ����̾�ϼºݤ˻��Ȥ��ޤ��ˡ� AS output_name����Ѥ���ȡ�������˸���̾���Ȥ��̤�̾�����դ��뤳�Ȥ��Ǥ��ޤ���
�ơ��֥�ξ���Ʊ�ͤˡ�SELECT�ν�����Ϥ��٤�̾��������ޤ��� ��ñ��SELECT�Ǥϡ�����̾�������ɽ���ѤΥ�٥���դ��뤿��˻��Ѥ��������Ǥ��� ������SELECT���絬�Ϥ��䤤��碌�����䤤��碌�Ǥ����硢�絬�Ϥ��䤤��碌¦�����䤤��碌���������줿���ۤΥơ��֥����̾�Ȥ��Ƥ���̾�������Ȥ���ޤ��� ������Ȥ��ƻ��Ѥ��뤿���̾������ꤹ�뤿��ˤϡ��θ��AS output_name�ȵ��Ҥ��Ƥ��������� �ʴ�˾������̾��PostgreSQL�Υ�����ɡ�付録C�ȡˤ˰��פ��ʤ����ˤΤ�AS���ά���뤳�Ȥ��Ǥ��ޤ��� ���褢�����륭����ɤ��ɲä������뤿��ˡ����AS�Ҥ��롢���뤤�ϡ�����̾����Ű�����dz�뤳�Ȥ�侩���ޤ����� ��̾����ꤷ�ʤ���硢̾����PostgreSQL�ˤ�꼫ưŪ���դ����ޤ��� ��ñ����ȤǤ���С��Ĥ�����̾���Ϥ������̾����Ʊ����ΤǤ��� ���ʣ���ʾ��Ǥϡ��̾�?columnN?�Τ褦�����������̾�����դ����ޤ���
ORDER BY���GROUP BY���������ͤȤ�����⡢������̾����ѤǤ��ޤ��� ��������WHERE��HAVING��Ǥϻ��ѤǤ��ޤ������Ǥϼ���ʤ���Фʤ�ޤ���
�ꥹ�Ȥˤϡ����줿�Ԥ����Ƥ����ɽ����ά���Ȥ��ơ����ǤϤʤ�*�Ƚ��Ȥ��Ǥ��ޤ��� �ޤ������Υơ��֥��ͳ�褹����Τߤ�ɽ����ά���Ȥ��ơ�table_name.*�Ƚ��Ȥ�Ǥ��ޤ��� ���Τ褦�ʾ�硢AS�ˤ�꿷����̾������ꤹ�뤳�ȤϤǤ��ޤ��� ������̾�ϥơ��֥����̾��Ʊ��ˤʤ�ޤ���
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���̾�ʲ��η����Ȥʤ�ޤ���
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���̾�ʲ��η����Ȥʤ�ޤ���
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 expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...]
ORDER BY���Ȥ��ȡ���̹Ԥ���ꤷ������ʣ���ġˤ˽��äƥ����Ȥ��뤳�Ȥ��Ǥ��ޤ��� �Ǥ⺸¦�μ���Ȥä���Ӥ�����̡�2�ĤιԤ���������Ƚ�Ǥ��줿���ϡ�1�ı�¦�μ���Ȥä���Ӥ��ޤ������η�̤���������С�����˼��μ��˿ʤߤޤ��� ���ꤷ�����Ƥμ�����������Ƚ�Ǥ��줿���ϡ������˰�¸�������֤��֤���ޤ���
expression�ˤϡ��������SELECT�ꥹ�ȹ��ܡˤ�̾���ޤ��Ͻ��������뤤���������ͤ�����������Ǥ�դμ����뤳�Ȥ��Ǥ��ޤ���
�����ϡ�������ΰ��֡ʺ����鱦�˳�����Ƥ��ޤ��ˤ��ޤ��� �����Ȥ��ȡ���դ�̾��������ʤ���ν����������뤳�Ȥ��Ǥ��ޤ��� 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��˻��ꤹ����ˡ�⤢��ޤ��� �������黻�Ҥϲ��餫��B-Tree�黻��²�ξ��ʤ�ޤ�����ʤ�黻�ҤǤʤ���Фʤ�ޤ��� �̾ASC��USING <�ȡ�DESC��USING >��Ʊ���Ǥ� �ʤ��������桼������ǡ������κ������ˤϡ��ǥե���ȤΥ����Ƚ��������뤳�Ȥ��Ǥ��ޤ����ޤ����ۤʤ�̾���α黻�Ҥ��б��դ����뤳�Ȥ�Ǥ��ޤ��ˡ�
NULLS LAST�����ꤵ���ȡ�NULL�ͤϤ��٤Ƥ���NULL�ͤθ�˥����Ȥ���ޤ��� NULLS FIRST�����ꤵ���ȡ�NULL�ͤϤ��٤Ƥ���NULL�ͤ����˥����Ȥ���ޤ��� �ɤ������ꤵ��ʤ����Υǥե����ư��ϡ�����Ū���뤤�ϰ���Ū��ASC�ξ���NULLS LAST��DESC���ξ���NULLS FIRST�Ǥ��� �ʤ������äơ��ǥե���ȤǤϡ�NULL����NULL�����礭���ͤǤ��뤫�Τ褦��ư��ޤ����� USING�����ꤵ���ȡ��ǥե���Ȥ�NULL�ν���ϡ��黻�Ҥ����ʤ�黻�Ҥ���ʤ�黻�Ҥˤ�ä��Ѥ��ޤ���
����դ����ץ�����ľ���α黻�ҤˤΤ�Ŭ�Ѥ���ޤ��� ���Ȥ��С�ORDER BY x, y DESC��ORDER BY x DESC, y DESC��Ʊ��ΰ�̣�ǤϤ���ޤ���
ʸ�����ǡ����Ǥϡ��ǡ����١����κ������˷��ꤵ�������������ξȹ��˽��äƥ����Ȥ���ޤ���
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���2�Ĥ���Ω�������礫�鹽������ޤ���
LIMIT { count | ALL } OFFSET start
count�ˤ��֤����Ԥκ����������start�ˤϹԤ��֤��Ϥ���������Ф��Կ�����ꤷ�ޤ��� ξ���Ȥ���ꤵ�줿��硢start��ʬ�����Ф��졢�������������count�Ԥ��֤���ޤ���
count����NULL��ɾ�����줿��硢LIMIT ALL�Ȥ��ơ��Ĥޤ�����̵���Ȥ��ư����ޤ��� start��NULL��ɾ�����줿��硢OFFSET 0��Ʊ�ͤ˰����ޤ���
SQL:2008�Ǥ�Ʊ�����Ȥ�¸�����ۤʤ빽ʸ��Ƴ������ޤ����� PostgreSQL�Ǥ⥵�ݡ��Ȥ��Ƥ��ޤ��� �ʲ��ι�ʸ�Ǥ���
OFFSET start { ROW | ROWS } FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY
ɸ��˽�����OFFSET��ϡ�FETCH���Ʊ���˻��Ѥ����硢����������¸�ߤ��ʤ���Фʤ�ޤ��� ������PostgreSQL�ϸ�̩�ǤϤʤ����ɤ��餬��Ǥ������ޤ��� ROW�����ROWS��������FIRST�����NEXT�ϰ�̣���ʤ�ñ��ǡ����ζ�˱ƶ���Ϳ���뤳�ȤϤ���ޤ��� ���ι�ʸ�ǡ�start�ޤ���count��ñ�������ʳ�����Ѥ����硢�ۤȤ�ɤξ��˳�̤�ɬ�פˤʤ�ޤ��� FETCH��count���ά����ȡ��ǥե���Ȥ�1�ˤʤ�ޤ���
LIMIT��Ȥ����ϡ���̹Ԥ��դʽ��֤˶�������ORDER BY���Ȥ��Ȥ褤�Ǥ��礦�� �������ʤ��ȡ��䤤��碌��̤Τɤ���ʬ���֤����Τ����狼��ޤ��� 10��20���ܤޤǤ���Ϥ���Ȥ��Ƥ⡢�ɤν��֤��¤٤�����10��20���ܤʤΤǤ��礦���� ORDER BY����ꤷ�ʤ��¤ꡢ�Ԥ��֤������֤������Ǥ���
�䤤��碌�ץ��ʤ��䤤��碌�ײ������������LIMIT���θ����Τǡ�LIMIT��OFFSET�λ���ˤ�äưۤʤä��ײ�����뤳�Ȥˤʤ�Ǥ��礦���ײ褬�ۤʤ�С��ۤʤ���֤ǹԤ��֤�ޤ��� �������äơ�LIMIT/OFFSET�ͤ��ѹ��ˤ�äưۤʤ��̹Ԥ����褦�Ȥ���ȡ�ORDER BY�ǽ�����¤��ؤ��ʤ��¤ꡢ̷�⤷����̤��֤����Ȥˤʤ�ޤ��� ����ϥХ��ǤϤ���ޤ��� ��SQL�ϡ�ORDER BY�ǽ�������椵��ʤ��¤ꡢ�䤤��碌��̤��֤��������«���ʤ��פȤ������¤������ε���ʤΤǤ���
��̩Ū����ʬ����������������ORDER BY���ʤ���С�Ʊ��LIMIT�䤤��碌���֤��¹Ԥ��Ƥ�ơ��֥�Ԥ���ۤʤ���ʬ���礬���Ф�����ǽ�����餢��ޤ��� �����֤��ޤ�����������Զ��ǤϤ���ޤ��� �����������˳��ꤷ����̤�ñ���ݾڤ���Ƥ��ʤ��ΤǤ���
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�Ϥ��Υȥ�������λ����Τ��ԤäƤ��顢���θ�Ԥ���å����ƹ������줿�Ԥ��֤��ޤ��ʹԤ�������줿�����֤��ޤ���ˡ� ������SERIALIZABLE�ȥ�������������Ǥϡ����å��оݤιԤ��ȥ������ϻ������ѹ�����Ƥ�����硢���顼��ȯ�����ޤ��� 第13章�Ȥ��Ƥ���������
FOR SHARE��Ʊ�ͤ˿��ޤ��������ꤹ��Ԥ��Ф���¾Ū���å����������ΤǤϤʤ���ͭ���å���������������ۤʤ�ޤ��� ��ͭ���å��ˤ�ꡢ¾�ȥ�������ˤ�뤽�ιԤ��Ф���UPDATE��DELETE��SELECT FOR UPDATE���ϥ֥��å�����ޤ��� ��������¾�ȥ�������ˤ��SELECT FOR SHARE�����ɤ��ޤ���
¾�Υȥ�������Υ��ߥåȤ��Ե����뤳�Ȥʤ�����ʤ��ˤϡ�NOWAIT���ץ�������Ѥ��Ƥ��������� NOWAIT�Ǥϡ�����ԤΥ��å���¨�¤˳����Ǥ��ʤ�����ʸ���Ե������ˡ����顼����𤷤ޤ��� NOWAIT�Ϲԥ�٥���å��ˤΤߤ�Ŭ�Ѥ�����������դ��Ƥ��������� �Ĥޤꡢɬ�פ�ROW SHARE�ơ��֥��٥���å����̾��̤����ˡ�� 第13章�ȡˤdz�������ޤ��� �⤷���ơ��֥��٥�Υ��å����Ե������˳������ʤ���Фʤ�ʤ��ΤǤ���С��ǽ��LOCK��NOWAIT���ץ�������Ѥ��Ƥ���������
FOR UPDATE�ޤ���FOR SHARE�������Υơ��֥뤬���ꤵ��Ƥ�����ϡ����Υơ��֥�ιԤΤߤ����å�����ޤ��� SELECT���¾�Υơ��֥���̾��̤���ɤ߹��ޤ�ޤ��� �ơ��֥�ꥹ�Ȥ�����ʤ�FOR UPDATE�⤷����FOR SHARE��ϡ�����ʸ�ǻ��Ѥ���뤹�٤ƤΥơ��֥�˱ƶ���Ϳ���ޤ��� FOR UPDATE�⤷����FOR SHARE���ӥ塼�ޤ������䤤��碌�ǻ��Ѥ��줿��硢���Υӥ塼�����䤤��碌�ǻ��Ѥ���뤹�٤ƤΥơ��֥�˱ƶ���Ϳ���ޤ��� ������FOR UPDATE/FOR SHARE�ϼ��䤤��碌�ǻ��Ȥ����WITH�䤤��碌�ˤ�Ŭ�Ѥ���ޤ��� WITH�䤤��碌��Ǥιԥ��å���Ԥ��������ϡ�WITH�䤤��碌���FOR UPDATE�ޤ���FOR SHARE����ꤷ�Ƥ���������
�ۤʤ���å�������ۤʤ�ơ��֥�˻��ꤹ��ɬ�פ�����С�ʣ����FOR UPDATE��FOR SHARE��Ҥ��뤳�Ȥ��Ǥ��ޤ��� FOR UPDATE���FOR SHARE���ξ���ǡ�Ʊ��Υơ��֥�Ҥ����ʤޤ��ϰ���Ū�˱ƶ���Ϳ����줿�˾�硢FOR UPDATE�Ȥ��ƽ�������ޤ��� Ʊ�ͤˡ�����ơ��֥�˱ƶ���Ϳ�����Τ����줫��NOWAIT�����ꤵ�줿��硢���Υơ��֥��NOWAIT�Ȥ��ƽ�������ޤ���
FOR UPDATE�����FOR SHARE�ϡ��֤����Ԥ��ơ��֥�ΤɤιԤ��б�����Τ������Τ˼��̤Ǥ��ʤ����ˤϻ��Ѥ��뤳�Ȥ��Ǥ��ޤ��� �㤨�С�����ˤϻ��ѤǤ��ޤ���
FOR UPDATE�ޤ���FOR SHARE��SELECT�䤤��碌�κǾ�̥�٥��¸�ߤ����硢���å��оݹԤ��䤤��碌���֤��Ԥ����Τ˰��פ��ޤ��� ����䤤��碌��ξ�硢���å��оݹԤ��֤������Ԥ˴�Ϣ����ԤȤʤ�ޤ��� ����ˡ����ʥåץ���åȤ���������䤤��碌�����������ʤ��ʤä������֤���ʤ��ʤ�ޤ������䤤��碌�Υ��ʥåץ���åȻ������䤤��碌�����������Ԥ���å�����ޤ��� LIMIT�����Ѥ��줿��硢���¤��������Ԥ��֤����ȥ��å������ϻߤޤ�ޤ��� �ʤ�������OFFSET�ˤ�����Ф��줿�Ԥϥ��å�����뤳�Ȥ����դ��Ƥ����������� Ʊ�ͤˡ�FOR UPDATE�ޤ���FOR SHARE�����������䤤��碌�ǻ��Ѥ��줿��硢��������ˤ��ºݤ˼�������Ԥޤ��ϲ��˽������줿�ԤΤߤ����å�����ޤ���
FOR UPDATE�ޤ���FOR SHARE����SELECT��¸�ߤ����硢���å��оݹԤ����䤤��碌�γ�¦���䤤��碌���֤����ԤȤʤ�ޤ��� ��¦���䤤��碌����ξ�郎���䤤��碌�¹Ԥκ�Ŭ���˻��Ѥ�����ǽ��������ޤ��Τǡ�����ˤ����䤤��碌���Τθ���������Ԥ�꾯�ʤ��ʤ뤫�⤷��ޤ��� �㤨�С�
SELECT * FROM (SELECT * FROM mytable FOR UPDATE) ss WHERE col1 = 5;
�ϡ����䤤��碌��Ǥ�ʸ���Ȥ��ƾ�郎���ܤ���Ƥ��ʤ��Ƥ⡢col1 = 5����ĹԤΤߤ����å�����ޤ���
注意 |
�Ԥ���å����Ƥ����Υ����֥ݥ���Ȥ�PL/pgSQL�㳰�֥��å��Ǥ��ιԤ��Խ����뤳�Ȥ��Ƥ��������� ��Υ�����Хå��ǥ��å��������Ƥ��ޤ��ޤ��� �ʲ�������ޤ��� BEGIN; SELECT * FROM mytable WHERE key = 1 FOR UPDATE; SAVEPOINT s; UPDATE mytable SET ... WHERE key = 1; ROLLBACK TO s; ROLLBACK�塢�Ԥϡ������֥ݥ�������Υ��å����줿�������ξ��֤���餺���¼����å�����ޤ��� ���ߤΥȥ�������ǥ��å����줿�Ԥ��������줿�������줿�ꤷ�����䡢��ͭ���å�����¾���å��˸��夷����硢����ϴ����Ǥ��� ���٤Ƥξ��ˤ����ơ������Υ��å����֤�˺����Ƥ��ޤ��� �ȥ��������θ塢���Υ��å����ޥ�ɤ�³�������δ֤ξ��֤˥�����Хå�������硢���ιԤϥ��å�����Ƥ��ʤ����֤Ȥ��Ƹ���ޤ��� ����ϼ����������Ǥ��ꡢ�����PostgreSQL�����ǽ�������ͽ��Ǥ��� |
注意 |
ORDER BY���FOR UPDATE/SHARE�����Ѥ���SELECT���ޥ�ɤǤϡ�����̤�ˤʤ�ʤ��Ԥ��֤���ǽ��������ޤ��� ORDER BY���ǽ��Ŭ�Ѥ���뤿��Ǥ��� ���Υ��ޥ�ɤϷ�̤��Ȥ��ޤ��������θ塢1�Ԥޤ���ʣ���ιԤΥ��å��������֥��å�������ǽ��������ޤ��� ����SELECT�Υ֥��å���������줿�����ǡ�����դ��оݤ����ͤΰ������ѹ�����Ƥ��뤫�⤷��ޤ��� ����ˤ�ꤳ�������Ԥ��ʸ������ͤȤ��������ǤϽ���̤�ǤϤ���ޤ������˽���̤�˸���ޤ��� ɬ�פ˱����ơ�����ϰʲ��Τ褦�����䤤��碌���FOR UPDATE/SHARE��Ҥ��뤳�Ȥǡ����뤳�Ȥ��Ǥ��ޤ��� SELECT * FROM (SELECT * FROM mytable FOR UPDATE) ss ORDER BY column1; ����ϡ��Ǿ�̥�٥�ˤ�����FOR UPDATE�ϼºݤ��֤����ԤΤߤ���å�����Τ��Ф��ơ���̤Ȥ���mytable�Τ��٤ƤιԤ���å����뤳�Ȥ����դ��Ƥ��������� ����ϡ��ä�ORDER BY��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 ...
���Ƥα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
�ʲ�����Ǥϴ�ñ��WITH��λ�����ˡ���ޤ���
WITH t AS ( SELECT random() as x FROM generate_series(1, 3) ) SELECT * FROM t UNION ALL SELECT * FROM t x -------------------- 0.534150459803641 0.520092216785997 0.0735620250925422 0.534150459803641 0.520092216785997 0.0735620250925422
WITH�䤤��碌�����٤���ɾ������뤳�Ȥ����դ��Ƥ��������� ���Τ���3�ĤΥ�������ͤ�2�Ĥν�������뤳�Ȥˤʤ�ޤ���
�ʲ�����Ǥ�WITH RECURSIVE����Ѥ��ơ�ľ�ܤ���������ɽ�����ʤ��ơ��֥뤫�顢���Ȱ�Mary�Ρ�ľ�ܤޤ��ϴ���Ū�ʡ������Ȥ��δ����٤Ĥ��Ф��ޤ���
WITH RECURSIVE employee_recursive(distance, employee_name, manager_name) AS ( SELECT 1, employee_name, manager_name FROM employee WHERE manager_name = 'Mary' UNION ALL SELECT er.distance + 1, e.employee_name, e.manager_name FROM employee_recursive er, employee e WHERE er.employee_name = e.manager_name ) SELECT distance, employee_name FROM employee_recursive;
�����³����UNION��������䤤��碌�κƵ���ʬ�Ȥ����Ƶ��䤤��碌��ŵ��Ū�ʹ�ʸ�����դ��Ƥ��������� �䤤��碌�κƵ���ʬ�Ϻǽ�Ū�ˤϥ��ץ���֤��ʤ����Ȥ�μ¤ˤ��Ƥ��������� ����ʤ����䤤��碌��̵�¤˥롼�פ��ޤ��� �ʤ��¿������ˤĤ��Ƥ�項7.8�Ȥ��Ƥ�����������
�����ʤ��顢SELECTʸ��ɸ��SQL�ȸߴ���������ޤ��� ����������ĥ��ǽ��¸�����Ƥ��ʤ���ǽ�⤤���Ĥ�����ޤ���
PostgreSQL�Ǥϡ�FROM����ά���뤳�Ȥ��Ǥ��ޤ��� ����ˤ�äơ��ʲ��Τ褦��ñ��ʼ���������뤳�Ȥ��Ǥ��ޤ���
SELECT 2+2; ?column? ---------- 4
¾��SQL�ǡ����١����Ǥϡ����Τ褦��SELECT��Ԥ�����ˤϥ��ߡ���1�ԥơ��֥��Ȥ�ʤ���Фʤ�ޤ���
FROM��λ��꤬�ʤ���硢�䤤��碌�Ǥϥǡ����١����ơ��֥�Ȥ��뤳�Ȥ��Ǥ��ޤ��� �㤨�С��ʲ����䤤��碌��̵���Ǥ���
SELECT distributors.* WHERE distributors.name = 'Westward';
PostgreSQL����8.1������ޤǤǤϡ��������������䤤��碌������դ����䤤��碌�ǻ��Ȥ���ƥơ��֥���Ф������Ū�ʹ��ܤ��䤤��碌��FROM����ɲä��Ƥ��ޤ����� ����ϵ�����ʤ��ʤ�ޤ�����
ɸ��SQL�Ǥϡ���ά��ǽ�ʥ������AS�ϡ���������̾��ͭ������̾�ʤĤޤ�ͽ��ѤߤΥ�����ɤȰۤʤ��Τ��٤ơˤǤ�����Ͼ�ˡ�������̾��������ʤ����Ȥ��Ǥ��ޤ��� PostgreSQL�ˤ�¿����궯�����¤�����ޤ��� ��������̾��ͽ��Ѥߤ��ݤ��˴ؤ�餺���餫�Υ�����ɤ˰��פ������AS��ɬ�פǤ��� �侩���������ˡ�ϡ�����Υ�����ɤ��ɲäȶ��礹���ǽ����������AS����Ѥ��롢�ޤ��Ͻ�����̾����Ű�����dz�뤳�ȤǤ���
FROM���ܤˤ�����ɸ�प���PostgreSQL�Ǥϡ�̤ͽ��Υ�����ɤǤ�����̾������AS���ά���뤳�Ȥ��Ǥ��ޤ��� ����������ʸ�������ޤ��ˤʤ뤿�ᡢ����̾�Ǥϸ���Ū�ǤϤ���ޤ���
ɸ��SQL�Ǥϡ�SELECT * FROM ONLY (tab1), ONLY (tab2) WHERE ...�Τ褦�ˡ�ONLY��³���ơ��֥�̾��������̤Ǥ����뤳�Ȥ��ᤷ�ޤ��� PostgreSQL�ǤϤ���⥵�ݡ��Ȥ��ޤ�������̤��ά���뤳�Ȥ�Ǥ��ޤ��� �ʤ�������ONLY���ץ����ݡ��Ȥ��뤹�٤Ƥ�SQL���ޥ�ɤ�Ʊ�ͤ�Ŭ�Ѥ���ޤ�����
ɸ��SQL-92�Ǥϡ�ORDER BY��ǻ��ѤǤ���Τϡ�������̾�������ΤߤǤ��ꡢGROUP BY��ǻ��ѤǤ���Τϡ�������̾����ʤ뼰�ΤߤǤ��� PostgreSQL�ϡ������ζ��ξ��������Ǥ���褦�˳�ĥ����Ƥ��ޤ� �ʤ������������Ƥ����������ɸ��β����Ѥ���ޤ��ˡ� ����ˡ�PostgreSQL�ǤϤɤ���ζ�ˤ�Ǥ�դμ������Ǥ��ޤ��� ���ǻȤ���̾���ϡ���˽�����̾�ǤϤʤ��������̾���Ȥߤʤ���뤳�Ȥ����դ��Ƥ���������
SQL:1999�ʹߤǤϡ�SQL-92�Ȥξ�̸ߴ������ޤä����ʤ���¿���ۤʤ���������Ѥ���Ƥ��ޤ��� ���������ۤȤ�ɤξ�硢PostgreSQL��SQL:1999��Ʊ����ˡ��ORDER BY��GROUP BY���ᤷ�ޤ���
ɸ��SQL�Ǥϥ�����ɥ��Ѥ�frame_clause���ץ���������ޤ��� ���ߤ�PostgreSQL�ǤϾ�ҤΥ��ץ����Τߤݡ��Ȥ��ޤ���
LIMIT�����OFFSET���PostgreSQL�ȼ��ι�ʸ�Ǥ�����MySQL�Ǥ���Ѥ���Ƥ��ޤ��� LIMIT�������������褦�ˡ�ɸ��SQL:2008�ˤ�Ʊ����ǽ��OFFSET ... FETCH {FIRST|NEXT} ...��Ƴ������ޤ����� ���ι�ʸ��IBM DB2�Ǥ���Ѥ���Ƥ��ޤ��� ��PostgreSQL�Ǥ����ѤǤ��ޤ���Oracle�Ѥ˳�ȯ���줿���ץꥱ�������Ǥϡ������ζ�ε�ǽ��������뤿��ˤ褯��ư���������rownum���ޤ��Ȥ������������Ѥ��ޤ�����