¾�ΥС�������ʸ�� �� 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

4.2. ɾ����

ɾ�����ϡ��㤨��SELECT���ޥ�ɤ���Ū�ꥹ�ȤȤ��ơ�INSERT��UPDATE�ο���������ͤȤ��ơ��⤷���Ϥ����Ĥ��Υ��ޥ�ɤθ������Ȥ����͡���ʸ̮����ǻȤ��ޤ��� ɾ�����η�̤ϡ��ơ��֥뼰�η�̡ʤĤޤ�ơ��֥�ˤ�����̤��뤿��ˡ��������ȸƤФ�뤳�Ȥ⤢��ޤ��� �������äơ�ɾ�����������鼰�ʤޤ��Ϥ�äȴ�ñ�����ˤȤ�ƤФ�ޤ��� ���ι�ʸ�ˤ�äơ����ѡ�����������ʤɤα黻��Ԥ�����Ū����ʬ���ͤη׻���Ԥ����Ȥ��Ǥ��ޤ���

ɾ�����ϲ����Τ����Τ����줫�Ǥ���

����ʳ��ˤ⡢���Ȥ���ʬ�व��뤱��ɤ����Ū�ʹ�ʸ����ˤϽ���ʤ��������Ĥ��ι������Ǥ�����ޤ��� �����ϰ���Ū�˴ؿ����뤤�ϱ黻�Ҥΰ�̣������ޤ��� 第9章�γ�����ʬ����������Ƥ��ޤ��� ���󤲤��IS NULL�礬����ޤ���

項4.1.2�Ǵ�������ˤĤ��Ƥ��������ޤ����� ³����ǤϻĤ�Υ��ץ����ˤĤ����������ޤ���

4.2.1. ����

��ϡ������Τ褦�ʷ����ǻ��Ȥ��뤳�Ȥ��Ǥ��ޤ���

correlation.columnname

correlation�ϡ��ơ��֥�̾�ʥ������ޤǽ�������Ƥ�����⤢��ޤ��ˡ����뤤��FROM���������줿�ơ��֥����̾�Ǥ��� ���̾�ȶ��ڤ��ѤΥɥåȤϡ��⤷��̾�����ߤ��䤤��碌�ǻȤ������ƤΥơ��֥���̤��ư�դǤ�����Ͼ�ά���뤳�Ȥ��Ǥ��ޤ��� ��第7章�⻲�Ȥ��Ƥ��������ˡ�

4.2.2. ���֥ѥ�᡼��

���֥ѥ�᡼�����Ȥϡ���������SQLʸ���Ϥ�����ͤ򼨤�����˻��Ѥ���ޤ��� �ѥ�᡼����SQL�ؿ��������ӥץ�ڥ����䤤��碌����ǻ��Ѥ���ޤ��� �ޤ������饤����ȥ饤�֥�����ˤϡ�SQL���ޥ��ʸ����ȥǡ����ͤ�ʬΥ���ƻ���Ǥ��뵡ǽ�򥵥ݡ��Ȥ����Τ⤢��ޤ��� ���ξ�硢�ѥ�᡼���ϹԳ��ǡ����ͤ򻲾Ȥ��뤿��˻��Ѥ���ޤ��� �ѥ�᡼�����Ȥη����ϰʲ����̤�Ǥ���

$number

�㤨�С��ؿ� dept ��������ʲ��Τ褦�ˤ��줿�Ȥ��ޤ���

CREATE FUNCTION dept(text) RETURNS dept
    AS $$ SELECT * FROM dept WHERE name = $1 $$
    LANGUAGE SQL;

������$1�ϴؿ����ƤӽФ������˺ǽ�δؿ��������ͤ򻲾Ȥ��ޤ���

4.2.3. �

������ͤ�Ϳ���뼰�ξ�硢������������Ǥ��ͤϰʲ��Τ褦�˵��Ҥ��뤳�Ȥ�Ÿ������ޤ���

expression[subscript]

�ޤ���ʣ�������Ǥ�ޤ������"����ΰ���ʬ"�˾��ϰʲ��Τ褦�˵��Ҥ��뤳�Ȥ�Ÿ������ޤ���

expression[lower_subscript:upper_subscript]

�ʤ���������[ ]�ϥ�ƥ��Ȥ��Ƹ���Ƥ��ޤ����� ��subscript�ϼ��Ȥ����Ǥ��ꡢ�����ͤ��������ʤ���Фʤ�ޤ���

����Ū�ˤϡ�����expression�ϳ�̤dz��ʤ���Фʤ�ޤ��󤬡�ź�����դ�������ñ�ʤ��󻲾Ȥ���֥ѥ�᡼���Ǥ��ä���硢���γ�̤��ά���뤳�Ȥ��Ǥ��ޤ��� �ʲ�����򼨤��ޤ���

mytable.arraycolumn[4]
mytable.two_d_column[17][34]
$1[10:42]
(arrayfunction(a,b))[42]

�Ǹ����Ǥϳ�̤�ɬ�פǤ��� ����ξܺ٤�項8.15�򻲾Ȥ��Ƥ���������

4.2.4. �ե����������

����ʣ�緿�ʹԷ��ˤ��ͤ����������硢�Ԥ�����Υե�����ɤϰʲ��Τ褦�˵��Ҥ��뤳�Ȥ�Ÿ���Ǥ��ޤ���

expression.fieldname

����Ū�ˤϡ���expression�ϳ�̤dz��ʤ���Фʤ�ޤ��� �����������򸵤Ȥʤ뼰��ñ�ʤ�ơ��֥뻲�Ȥ���֥ѥ�᡼���ξ�硢��̤��ά���뤳�Ȥ��Ǥ��ޤ��� �ʲ�����򼨤��ޤ���

mytable.mycolumn
$1.somecolumn
(rowfunction(a,b)).col3

�ʤ������äơ��������줿�󻲾ȤϼºݤΤȤ�����ñ�ʤ뤳�Υե����������ʸ���ü�ʾ��Ǥ����˽��פȤʤ��ü�ʾ��Ȥ��Ƥϡ�ʣ�緿�Υơ��֥��󤫤�ե�����ɤ���Ф���Ȥ��Ǥ���

(compositecol).somefield
(mytable.compositecol).somefield

compositecol���ơ��֥�̾�Ǥʤ���̾�Ǥ��뤳�ȡ��ޤ��ϣ����ܤξ���mytable����������̾�Ǥʤ��ơ��֥�̾�Ǥ��뤳�Ȥ򼨤�����ݳ�̤��׵ᤵ��ޤ���

SELECT��Υꥹ��(項7.3����)��.*�򵭽Ҥ��뤳�Ȥǡ�ʣ�緿�����Ƥ��ͤ��䤤��碌�뤳�Ȥ���ǽ�Ǥ���

(compositecol).*

4.2.5. �黻�ҤθƤӽФ�

�黻�ҤθƤӽФ��ˤϰʲ���3��ʸ����ǽ�Ǥ���

expression operator expression ��������ֱ黻�ҡ�
operator expression ��ñ�����ֱ黻�ҡ�
expression operator ��ñ����ֱ黻�ҡ�

������operator�ȡ�����ϡ�項4.1.3��ʸ��§�˽�����Ρ��⤷���ϥ������AND��OR��NOT�Τ����줫���ޤ��ϰʲ��η����ν������줿�黻��̾�Ǥ���

OPERATOR(schema.operatorname)

����Ū�ˤɤ�ʱ黻�Ҥ�¸�ߤ������줬ñ�फ��फ�ɤ����ϡ������ƥ��桼���ˤ�äƤɤ�ʱ黻�Ҥ�������줿���˰�¸���ޤ��� 第9章�ˤơ��Ȥ߹��߱黻�ҤˤĤ����������ޤ���

4.2.6. �ؿ��ƤӽФ�

�ؿ��ƤӽФ��ι�ʸ�ϡ��ؿ�̾�ʥ�������̾�ǽ�������Ƥ����礬����ޤ��ˤ�³���Ƥ��ΰ�����ݳ�̤ǰϤ����󤷤���ΤǤ���

function_name ([expression [, expression ... ]] )

�㤨�С��ʲ��Τ�Τ�2��ʿ������׻����ޤ���

sqrt(2)

�Ȥ߹��ߴؿ��ΰ�����第9章�ˤ���ޤ��� ¾�δؿ��ϥ桼�����ɲäǤ��ޤ���

�����ˤ�̾����Ǥ�դ���Ϳ���뤳�Ȥ��Ǥ��ޤ����ܺ٤�項4.3�򸫤Ʋ�������

注意: ʣ�緿��ñ�������Ȥ�ؿ��ϥե����������ʸ�򥪥ץ���ʥ�˻ȤäƸƤӽФ����Ȥ��Ǥ��ޤ���ȿ�Ф˴ؿ������ǥե����������򵭽Ҥ��뤳�Ȥ�Ǥ��ޤ������ε�����ˡ��col(table)��table.col�Ȥʤꡢ�ɤ����ȤäƤ��Ѥ�ꤢ��ޤ���PostgreSQL�Ǥ�"�׻����줿�ΰ�"�Υ��ߥ�졼�Ȥ򤹤�ؿ������Ѥ���ǽ�ʤ��ᡢ�����SQLɸ��ο����񤤤ǤϤʤ�PostgreSQL�ȼ���ǽ�Ȥʤ�ޤ����ܤ�����項35.4.3�򻲾Ȥ��Ƥ���������

4.2.7. ����

�����ϡ��䤤��碌�ˤ�ä����򤵤��Ԥ��Ф��ƽ���ؿ���Ŭ�Ѥ���뤳�Ȥ��̣���ޤ��� ����ؿ��ϡ��㤨�����Ϥι�פ�ʿ�ѤʤɤΤ褦�ˡ�ʣ�������Ϥ�ñ��ν����ͤˤ��ޤ��� ���󼰤ι�ʸ�ϲ����Τ����Τ����줫�Ǥ���

aggregate_name (expression [ , ... ] [ order_by_clause ] )
aggregate_name (ALL expression [ , ... ] [ order_by_clause ] )
aggregate_name (DISTINCT expression [ , ... ] [ order_by_clause ] )
aggregate_name ( * )

�����ǡ�aggregate_name�ϻ�����������줿����ʥ�������̾�ǽ������줿���⤢��ޤ��ˡ�expression�Ϥ��켫�Τ˽��󼰤ޤ��ϥ�����ɥ��ؿ��ƤӽФ���ޤޤʤ�Ǥ�դ���ɾ������order_by_clause�ϸ�Ҥξ�ά��ǽ��ORDER BY�Ǥ���

���󼰤κǽ�ι�ʸ�ϡ����줾������ϹԤ��Ф���1�󤺤Ľ��פ�ƤӽФ��ޤ��� ALL�ϥǥե���ȤʤΤǡ�2���ܤη����Ϻǽ�η�����Ʊ���Ǥ��� 3���ܤη����ϡ����ϹԤ���ˤ��뼰�Ρ����Ƥν�ʣ���ʤ��͡�ʣ�����ǤϽ�ʣ���ʤ��ͽ���ˤν����ƤӽФ��ޤ����Ǹ�η����Ϥ��줾������ϹԤ��Ф���1�󤺤Ľ����ƤӽФ��ޤ�������Ū�������ͤ����ꤵ��Ƥ��ʤ����ᡢ����ϰ���Ū��count(*)����ؿ��ǤΤ����Ω���ޤ���

���İʾ�μ���NULL���֤������ˤ��ιԤ��˴�����褦�ˡ��ۤȤ�ɤν���ؿ���NULL���Ϥ�̵�뤷�ޤ�������ϡ��õ�����Ƥ��ʤ��¤ꡢ���٤Ƥ��ȹ��߽�����������Ȳ��ꤹ�뤳�Ȥ��Ǥ��ޤ���

�㤨�С�count(*)�����ϹԤι�׿�����ޤ��� count��NULL��̵�뤷�ޤ��Τǡ�count(f1)��f1����NULL�Ǥ������ϹԤο�����ޤ��� count(distinct f1)��f1�ν�ʣ���ʤ���NULL�ͤο�����ޤ���

�̾���ϹԤϽ������ꤵ�줺�˽��״ؿ���Ϳ�����ޤ���¿���ξ��Ǥ�����ˤʤ�ޤ��󡣤��Ȥ���min�����Ͻ���˴ط��ʤ�Ʊ��η�̤��֤��ޤ��������������ν���ؿ�(array_agg�����string_agg�ʤ�)�����ϹԤν���˰�¸������̤��֤��ޤ���������������ؿ�����Ѥ���ݤϡ���ά��ǽ��order_by_clause����Ѥ���ɬ�פȤ����������Ǥ��ޤ���order_by_clause�ϡ�項7.5�����������䤤��碌��٥��ORDER BY���Ʊ����ʸ����ޤ��������μ��Ͼ��ñ�ʤ뼰�Ǥ��ꡢ������̾������Ȥ��뤳�ȤϤǤ��ޤ��� �ʲ�����򼨤��ޤ���

SELECT array_agg(a ORDER BY b DESC) FROM table;

ʣ���ΰ������뽸��ؿ��򰷤���硢ORDER BY��Ϥ��٤Ƥν�������θ�˻��ꤹ�뤳�Ȥ����դ��Ƥ��������� �㤨�С�

SELECT string_agg(a, ',' ORDER BY a) FROM table;

�Ǥ��ꡢ

SELECT string_agg(a ORDER BY a, ',') FROM table;  -- incorrect

�ǤϤ���ޤ��� ��ԤϹ�ʸŪ�ˤ�ͭ���ʤ�ΤǤ�����2�Ĥ�ORDER BY���������ñ������ν���ؿ��θƤӽФ���ɽ���Ƥ��ޤ���(2���ܤΥ���������ʤΤ���ˤ�Ω���ޤ���)

order_by_clause�˲ä�DISTINCT�����ꤵ�줿��硢���٤Ƥ�ORDER BY��������ؿ����̾�ΰ����˰��פ��ʤ���Фʤ�ޤ��󡣤ĤޤꡢDISTINCT�ꥹ�Ȥ˴ޤޤ�ʤ����ǥ����Ȥ��뤳�ȤϤǤ��ޤ���

注意: ���״ؿ��ˤ�����DISTINCT��ORDER BY�λ��굡ǽ��PostgreSQL�ȼ��γ�ĥ�Ǥ���

����Ѥߤν���ؿ���項9.20����������Ƥ��ޤ��� �桼����¾�ν���ؿ����ɲä��뤳�Ȥ��Ǥ��ޤ���

���󼰤ϡ�SELECT���ޥ�ɤη�̥ꥹ�Ȥ⤷����HAVING����ǤΤߵ��Ҥ��뤳�Ȥ��Ǥ��ޤ��� WHERE�ʤɤ�¾�ζ�Ǥϵ�����ޤ��� �����ζ�������彸�׷�̤��������������ɾ������뤿��Ǥ���

���󼰤����䤤��碌��項4.2.11��項9.22�򻲾ȡ���˸��줿��硢�̾ク������䤤��碌�ι����Τ��Ф���ɾ�����ޤ��� �����������ν���ΰ�������̥�٥���ѿ��Τߤ���ľ����㳰�Ǥ��� ���ξ�硢����䤤��碌�ι����Τ��Ф���ɾ�����ޤ��� ���ΤȤ��ơ����ν��󼰤ϡ����θ塢���ν����ޤ����䤤��碌�Ǥϳ������ȤȤʤꡢ�������䤤��碌�ˤ�����ɾ�����Ф��Ƥ�����Ȥ���ư��ޤ��� ��̥ꥹ�Ȥ⤷����HAVING��ˤΤ߸����Ȥ�������ϡ����ν���°�����䤤��碌��٥�˴�Ϣ����Ŭ�Ѥ���ޤ���

4.2.8. ������ɥ��ؿ��ƤӽФ�

������ɥ��ؿ��ƤӽФ��ϡ��䤤��碌�ˤ�����򤵤줿�ԤΤ�����ʬ���Ϥäƽ���Τ褦�ʵ�ǽ��¸����뤳�Ȥ�ɽ���ޤ��� �̾�ν���ؿ��ƤӽФ��Ȱۤʤꡢ��������򤵤줿�Ԥ�1�ĤιԤ˥��롼�ײ����뤳�Ȥ�«�����줺���ƹԤ������䤤��碌���Ϥ˻Ĥ�ޤ��� ������������ɥ��ؿ��ϡ�������ɥ��ؿ��ƤӽФ��Υ��롼�ײ������PARTITION BY�ꥹ�ȡˤ˽��ä������ߤιԤΥ��롼�פΰ����Ȥʤ�Ԥ򤹤٤ƥ�����󤹤뤳�Ȥ��Ǥ��ޤ��� ������ɥ��ؿ��ƤӽФ��ι�ʸ�ϰʲ��Τ����줫�Ǥ���

function_name ([expression [, expression ... ]]) OVER ( window_definition )
function_name ([expression [, expression ... ]]) OVER window_name
function_name ( * ) OVER ( window_definition )
function_name ( * ) OVER window_name

�����ǡ�window_definition�ϰʲ��ι�ʸ�ˤʤ�ޤ���

[ existing_window_name ]
[ PARTITION BY expression [, ...] ]
[ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
[ 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

�����ǡ�expression�Ϥ��켫�ȥ�����ɥ��ؿ��ƤӽФ���ޤޤʤ������ʤ��ͼ���ɽ�路�ޤ��� PARTITION BY�����ORDER BY�ꥹ�Ȥϴ���Ū�ˡ������μ��Ͼ�˼��Ǥ��äơ�������̾�ޤ��Ͽ��ͤǤʤ��¤ꡢ�䤤��碌���Τ�GROUP BY��ORDER BY��Ʊ����ʸ��ư��Ǥ��� window_name�ϡ��䤤��碌��WINDOW���������줿̾���դ�������ɥ����ͤؤλ��ȤǤ���̾���դ�������ɥ����ͤ��̾�ñ��OVER window_name�ǻ��Ȥ���ޤ�����Ʊ���˴ݳ�̤������˥�����ɥ�̾��񤯤��Ȥ��Ǥ��������ƽ���դ���ȥե졼����ξ���ޤ��Ϥ����줫�����򶡵뤷�ޤ��ʤ����Ǥ����ζ礬���뤵���ȡ����Ȥ��줿������ɥ��ˤ����ζ礬���äƤϤʤ�ޤ���ˡ���Ԥι�ʸ��WINDOW�����δ�¸�Υ�����ɥ�̾���ѹ�����Τ�Ʊ����§�˽����ޤ��ʾܺ٤�SELECT�ޥ˥奢��ڡ����򸫤Ƥ��������ˡ�

frame_clause�ϡ����ƤΥѡ��ƥ�����������˥ե졼���Ǻ�ư���륦����ɥ��ؿ����Ф��ơ�window frame��������Ԥν������ꤷ�ޤ���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���������Ĥ���ޤ��󤬡����߹Ԥ����򤹤뤳�Ȥˤʤ�0�ϻ����ǽ�Ǥ���

�Ȥ߹��ߥ�����ɥ��ؿ���表9-47�˵��ܤ���Ƥ��ޤ�������¾�Υ�����ɥ��ؿ���桼�����ɲä��뤳�Ȥ���ǽ�Ǥ����ޤ������Ƥ��Ȥ߹��ߡ��ޤ��ϥ桼������ν���ؿ��⥦����ɥ��ؿ��Ȥ��ƻ��ѤǤ��ޤ���

*����Ѥ�����ʸ�ϡ��㤨��count(*) OVER (PARTITION BY x ORDER BY y)�Τ褦�ˡ�������ɥ��ؿ��Ȥ��ƸƤӽФ��ѥ�᡼���Τʤ�����ؿ�����Ѥ��ޤ��� �������ꥹ��(*)�Ͻ���Ū�����󥦥���ɥ��ؿ��ˤϻȤ��ޤ����̾�ν���ؿ��Ȱۤʤꡢ���󥦥���ɥ��ؿ��ϡ��ؿ������ꥹ�Ȥ����DISTINCT��ORDER BY���Ȥ��뤳�Ȥ���Ĥ��ޤ���

������ɥ��ؿ��ƤӽФ����䤤��碌��SELECT�ꥹ�Ȥ�ORDER BY�����ǤΤߵ��Ĥ���ޤ���

���ʤ륦����ɥ��ؿ��ˤĤ��Ƥξ���� 項3.5, 項9.21, 項7.2.4�ˤ���ޤ���

4.2.9. �����㥹��

�����㥹�Ȥϡ�����ǡ���������¾�Υǡ������ؤ��Ѵ�����ꤷ�ޤ��� PostgreSQL�Ϸ����㥹�Ȥ�2�Ĥ������ʹ�ʸ������դ��ޤ���

CAST ( expression AS type )
expression::type

CAST��ʸ��SQL�˽�򤷤���ΤǤ��� ::����Ѥ��빽ʸ�ϡ�PostgreSQL������Ū�˻��Ѥ���Ƥ�����ˡ�Ǥ���

���㥹�Ȥ����Τη���ɾ������Ŭ�Ѥ��줿��硢����ϼ¹Ի����Ѵ���ɽ���ޤ��� ���Υ��㥹�Ȥϡ�Ŭ�ڤʷ��Ѵ����������Ƥ�����Τ��������ޤ��� 項4.1.2.7�Ǽ����褦�ˡ����������Υ��㥹�Ȥλ��ѤȤ���̯�ʰ㤤�����դ��Ƥ��������� ��������Ƥ��ʤ�ʸ�����ƥ����Ф��륭�㥹�Ȥϡ���ƥ������ͤν���˳�����Ƥ��뷿��ɽ���ޤ��� �Ǥ����顢����ϡ�ʸ�����ƥ����������Ƥ����Υǡ����������Ϲ�ʸ�Ǽ����դ�����ΤǤ���С����Ƥη����������ޤ���

�̾���㤨�Хơ��֥���ؤ��������ʤɡˡ�ɾ�������������ʤ���Фʤ�ʤ�����ۣ�椵���ʤ���硢����Ū�ʷ����㥹�ȤϾ�ά���뤳�Ȥ��Ǥ��ޤ��� ���ξ�硢�����ƥ�ϼ�ưŪ�˷����㥹�Ȥ�Ŭ�Ѥ��ޤ��� ����������ư���㥹�Ȥϡ������ƥ५��������"����Ū��Ŭ�Ѥ��Ƥ�����ʤ�"�ȼ�����Ƥ�����ˤΤ߼¹Ԥ���ޤ��� ����¾�Υ��㥹�Ȥ�����Ū�ʥ��㥹�ȹ�ʸ�ǸƤӽФ�ɬ�פ�����ޤ��� �������¤ϡ��Τ�ʤ��������Ѵ����¹Ԥ���Ƥ��ޤ����Ȥ��ɤ�����Τ�ΤǤ���

�ޤ����ؿ��Τ褦�ʹ�ʸ����Ѥ��Ʒ����㥹�Ȥ���ꤹ�뤳�Ȥ�Ǥ��ޤ���

typename ( expression )

������������Ϥ��η���̾�����ؿ���̾���Ȥ��Ƥ�ͭ���ʾ��ˤΤ�ư��ޤ��� �㤨�С�double precision �Ϥ��������ǻ��ѤǤ��ޤ��󤬡�Ʊ����float8�ϻ��ѤǤ��ޤ��� �ޤ���interval��time��timestamp�Ȥ���̾���ϡ���ʸ�����ͤ��뤿�ᡢ��Ű�����dz�ä����ˤΤߤ��������ǻ��ѤǤ��ޤ��� ���Τ褦�ˡ����δؿ��Τ褦�ʥ��㥹�ȹ�ʸ�ϰ�������ʤ��ʤ꤬���Ǥ��Τǡ������餯���ץꥱ�������Ǥϻ��Ѥ��٤��ǤϤ���ޤ���

注意: ���δؿ��Τ褦�ʹ�ʸ�ϡ��ºݤˤ�ñ�ʤ�ؿ��ƤӽФ��Ǥ��� 2�Ĥ�ɸ��Ū�ʥ��㥹�ȹ�ʸ�Τ�����1�Ĥ��¹Ի��Ѵ��ǻ��Ѥ����ȡ����ι�ʸ����Ͽ�Ѥߤδؿ�������Ū�˸ƤӽФ����Ѵ���¹Ԥ��ޤ��� ����Ū�ˡ��������Ѵ��ؿ��ϼ��Ȥν��Ϸ���Ʊ��̾�������������ˤ�ꡢ"�ؿ��Τ褦�ʹ�ʸ"���ظ�ˤ����Ѵ��Ѵؿ���ľ�ܸƤӽФ��ʾ�Τ��Ȥ�Ԥ��ޤ��� �ܿ�������ĥ��ץꥱ������󤬰�¸���٤���ΤǤʤ����Ȥ����ΤǤ��� �ܺ٤ˤĤ��Ƥ�CREATE CAST�򻲾Ȥ��Ƥ���������

4.2.10. �ȹ�����

COLLATE��ϼ��ξȹ�����§���񤭤��ޤ���Ŭ�Ѥ��뤿�ἡ���ͤ˼��˲ä��ޤ���

expr COLLATE collation

collation�Ϥ����餯������������ޤ༱�̻ҤǤ���COLLATE��ϱ黻�Ҥ���ͥ���٤��㤤���ᡢɬ�פ˱����Ƴ�̤ǰϤ��ޤ���

�⤷�ȹ�����������ꤵ��ʤ���С��ǡ����١��������ƥ�ϼ��ˤ����󤫤�ȹ�����������ޤ����⤷��˴ؤ���ȹ��������ˤʤ���С��ǡ����١����Υǥե���Ȥξȹ�����Ȥ��ޤ���

��Ȥ��ơ��褯�Ȥ���COLLATE��ˤ���¤��ؤ�����ξ�񤭤�󤲤ޤ���ORDER BY���Ȥ����ˤϡ�

SELECT a, b, c FROM tbl WHERE ... ORDER BY a COLLATE "C";

�Ȥ��ޤ������������¸��ȼ�ä��ؿ���黻�ҤθƤӽФ����Ф��Ƥξ����ˡ���

SELECT * FROM tbl WHERE a > 'foo' COLLATE "C";

�Ȥ��ޤ�����Ԥξ�硢COLLATE�礬�������оݤ����ꤷ�Ƥ������ϱ黻�Ҥΰ������Ф�����Ϳ����뤳�Ȥ����դ��Ƥ����������黻�Ҥ�ؿ��θƤӽФ��Τɤΰ������Ф���COLLATE�礬��Ϳ����뤫������ǤϤ���ޤ��󡣱黻�Ҥ�ؿ��ˤ��Ŭ�Ѥ����ȹ������оݤȤʤ����Ƥΰ������θ���ư����Ф��졢����������Ū�˻��ꤵ�줿COLLATE�礬����¾�����Ƥΰ������Ф��Ƥξȹ������񤭤��뤫��Ǥ���(��������ʣ���ΰ������Ф��ư��פ��ʤ�COLLATE�����Ϳ�ϥ��顼�Ȥʤ�ޤ����ܺ٤�項22.2�򻲾Ȥ��Ƥ�������)�����Τ��ᡢ���Ҥ����Ʊ����̤򼡤��ͤˤ��Ƽ������뤳�Ȥ��Ǥ��ޤ���

SELECT * FROM tbl WHERE a COLLATE "C" > 'foo';

������������ϥ��顼�ˤʤ�ޤ����������ϼ����ͤˤ��ޤ���

SELECT * FROM tbl WHERE (a > 'foo') COLLATE "C";

�ʤ��ʤ顢�ȹ�����Ϳ���뤳�Ȥ��Ǥ��ʤ�boolean���Ȥʤ�>�黻�Ҥη�̤��Ф��ơ��ȹ�����Ŭ�Ѥ���褦�Ȥ��뤫��Ǥ���

4.2.11. ���������䤤��碌

���������䤤��碌�ϡ����Τ�1��1����֤����������̾��SELECT�䤤��碌�Ǥ� ���䤤��碌�ε�����ˡ�ˤĤ��Ƥ�第7章�򻲾Ȥ��Ƥ��������ˡ� ����SELECT�䤤��碌�ϼ¹Ԥ��졢�֤����ñ����ͤϤ����ͤ������ɾ�����ǻ��Ѥ���ޤ��� 1�Ԥ�Ķ����Ԥ�1���Ķ�����󤬥��������䤤��碌�Ѥ��䤤��碌�Ȥ��ƻ��Ѥ��줿���ϥ��顼�ˤʤ�ޤ� �ʤ�����������¹Ի��ˡ����䤤��碌���Ԥ��֤��ʤ����ϥ��顼�ȤϤʤ�ޤ��� ���Υ������̤�NULL�Ȥ��ư����ޤ��ˡ� ���䤤��碌�ϡ����μ�����䤤��碌����ͤ򻲾Ȥ��뤳�Ȥ��Ǥ��ޤ��� �����ͤ����䤤��碌��ɾ�����ˤ�����Ȥ��ư����ޤ��� ���䤤��碌�˴ؤ���¾�μ��ˤĤ��Ƥ�項9.22�⻲�Ȥ��Ƥ���������

�㤨�С��ʲ��ϳƽ��ǺǤ�͸���¿���ԻԤ򸡺����ޤ���

SELECT name, (SELECT max(pop) FROM cities WHERE cities.state = states.name)
    FROM states;

4.2.12. ���󥳥󥹥ȥ饯��

���󥳥󥹥ȥ饯���ϡ����С����Ǥ��Ф����ͤ��Ѥ��������ͤ��ۤ��뼰�Ǥ��� ñ������󥳥󥹥ȥ饯���ι����ϡ�ARRAY������ɡ�������[���ʥ���ޤǶ��ڤä��������������Ѥμ��Υꥹ�Ȥǡ��Ǹ�˱�����]�Ǥ��� �ʲ�����򼨤��ޤ���

SELECT ARRAY[1,2,3+4];
  array
---------
 {1,2,7}
(1 row)

�ǥե���Ȥ��������Ƿ��ϡ����м��η���Ʊ���ǡ�UNION��CASE��ʸ��Ʊ����§����Ѥ��Ʒ��ꤵ��ޤ� ��項10.5�򻲾Ȥ��Ƥ��������ˡ����������Ū�����󥳥󥹥ȥ饯�����˾���뷿�˥��㥹�Ȥ��뤳�Ȥǽ񤭴����뤳�Ȥ��Ǥ��ޤ�����򤢤��ޤ���

SELECT ARRAY[1,2,22.7]::integer[];
  array
----------
 {1,2,23}
(1 row)

����Ϥ��줾��μ������󷿤˸��̤˥��㥹�Ȥ���Τ�Ʊ�����̤�����ޤ������㥹�ȤˤĤ��Ƥ��¿����項4.2.9�򻲾Ȥ��Ƥ���������

¿���������ͤϡ����󥳥󥹥ȥ饯��������Ҥˤ��뤳�Ȥǹ��ۤǤ��ޤ��� ��¦�Υ��󥹥ȥ饯���Ǥ�ARRAY������ɤϾ�ά��ǽ�Ǥ��� �㤨�С��ʲ���Ʊ����̤ˤʤ�ޤ���

SELECT ARRAY[ARRAY[1,2], ARRAY[3,4]];
     array
---------------
 {{1,2},{3,4}}
(1 row)

SELECT ARRAY[[1,2],[3,4]];
     array
---------------
 {{1,2},{3,4}}
(1 row)

¿��������ϻͳѷ�����Ǥʤ���Фʤ�ޤ���Τǡ�Ʊ���٥���������󥹥ȥ饯����Ʊ�켡������������������ʤ���Фʤ�ޤ��󡣳���ARRAY���󥹥ȥ饯����Ŭ�Ѥ�������ƤΥ��㥹�Ȥϼ�ưŪ�����Ƥ��������󥹥ȥ饯�������Ť��ޤ���

¿�������󥳥󥹥ȥ饯�������Ǥϡ���ARRAY��ʸ�����Ǥʤ���Ŭ�ڤʼ������������������Τ�Ȥ뤳�Ȥ��Ǥ��ޤ��� �ʲ�����򼨤��ޤ���

CREATE TABLE arr(f1 int[], f2 int[]);

INSERT INTO arr VALUES (ARRAY[[1,2],[3,4]], ARRAY[[5,6],[7,8]]);

SELECT ARRAY[f1, f2, '{{9,10},{11,12}}'::int[]] FROM arr;
                     array
------------------------------------------------
 {{{1,2},{3,4}},{{5,6},{7,8}},{{9,10},{11,12}}}
(1 row)

��������ۤǤ��ޤ����������ͭ���ʤ��������Ĥ��Ȥ��Բ�ǽ�ʤΤǡ��������˾�ޤ�뷿������Ū�˥��㥹�Ȥ��ʤ���Фʤ�ޤ�����򤢤��ޤ���

SELECT ARRAY[]::integer[];
 array
-------
 {}
(1 row)

�ޤ������䤤��碌�η�̤�������������뤳�Ȥ��ǽ�Ǥ��� ���η����ξ�硢���󥳥󥹥ȥ饯����ARRAY������ɤθ�˳�̡����̤ǤϤʤ��ˤdz��줿���䤤��碌�Ȥ��Ƶ��Ҥ���ޤ��� �ʲ�����򼨤��ޤ���

SELECT ARRAY(SELECT oid FROM pg_proc WHERE proname LIKE 'bytea%');
                                 array
-----------------------------------------------------------------------
 {2011,1954,1948,1952,1951,1244,1950,2005,1949,1953,2006,31,2412,2413}
(1 row)

���䤤��碌��ñ�������֤��ʤ���Фʤ�ޤ��� ���η�̤Ǥ���켡������ϡ����䤤��碌�ν�����Ȱ��פ��뷿�����Ƿ��Ȥ��������䤤��碌�η����γƹԤ����ǤȤ��ƻ����ޤ���

ARRAY�ǹ��ۤ��줿�����ͤ�ź���ϡ����1����Ϥޤ�ޤ��� ����ˤĤ��Ƥξܺ٤�項8.15�򻲾Ȥ��Ƥ���������

4.2.13. �ԥ��󥹥ȥ饯��

�ԥ��󥹥ȥ饯���ϡ����Υ��Хե�����ɤ��Ф����ͤ��Ѥ��ƹ��͡�ʣ���ͤȤ�ƤФ�ޤ��ˤ��ۤ��뼰�Ǥ��� �ԥ��󥹥ȥ饯���ϡ�ROW������ɡ�����̡��ԤΥե���������Ѥ�0�İʾ�μ��ʥ���޶��ڤ�ˡ��Ǹ�˱���̤���ʤ�ޤ��� �ʲ�����򼨤��ޤ���

SELECT ROW(1,2.5,'this is a test');

ROW������ɤϡ�1�İʾ�μ����ꥹ����ˤ�����Ͼ�ά���뤳�Ȥ��Ǥ��ޤ���

�ԥ��󥹥ȥ饯���ˤ�rowvalue.*��ʸ��ޤ�뤳�Ȥ��Ǥ��ޤ��� ����ϡ�SELECT�ꥹ�ȤκǾ�̥�٥��.*��ʸ�����Ѥ��줿���Ȥޤä���Ʊ�ͤˡ����ͤ����Ǥ�����Ÿ������ޤ��� ���Ȥ��С��ơ��֥�t��f1���f2�����ľ�硢�ʲ���Ʊ��Ǥ���

SELECT ROW(t.*, 42) FROM t;
SELECT ROW(t.f1, t.f2, 42) FROM t;

注意: PostgreSQL 8.2������Ǥϡ�.*��ʸ��Ÿ������ޤ���Ǥ����� ROW(t.*, 42)�ȵ��Ҥ���ȡ�1���ܤΥե�����ɤ��̤ι��ͤ���ġ�2�ĤΥե�����ɤ���ʤ�Ԥ���������ޤ����� �����Ƥ��ξ�硢������ư��Ϥ��Ȥ��䤹���ʤäƤ��ޤ��� ����Ҿ��ι��ͤȤ����Ť�ư�ɬ�פǤ���С�.*����Ѥ����ˡ����Ȥ���ROW(t, 42)�Ȥ��ä����������ͤ򵭽Ҥ��Ƥ���������

�ǥե���ȤǤϡ�ROW���ˤ�����������ͤ�ƿ̾�쥳���ɷ��ˤʤ�ޤ��� ɬ�פ˱����ơ�̾���դ���ʣ�緿���ơ��֥�ιԷ����⤷����CREATE TYPE AS�Ǻ������줿ʣ�緿�˥��㥹�Ȥ��뤳�Ȥ��Ǥ��ޤ��� ����Ū�ʥ��㥹�Ȥ�ۣ�������ɻߤ��뤿���ɬ�פȤʤ뤳�Ȥ⤢��ޤ��� �ʲ�����򼨤��ޤ���

CREATE TABLE mytable(f1 int, f2 float, f3 text);

CREATE FUNCTION getf1(mytable) RETURNS int AS 'SELECT $1.f1' LANGUAGE SQL;

-- getf1()��1�Ĥ���¸�ߤ��ʤ����ᥭ�㥹�����ס�
SELECT getf1(ROW(1,2.5,'this is a test'));
 getf1
-------
     1
(1 row)

CREATE TYPE myrowtype AS (f1 int, f2 text, f3 numeric);

CREATE FUNCTION getf1(myrowtype) RETURNS int AS 'SELECT $1.f1' LANGUAGE SQL;

-- �����Ǥϡ��ɤδؿ���ƤӽФ��Τ��򼨤�����˥��㥹�Ȥ�ɬ�ס�
SELECT getf1(ROW(1,2.5,'this is a test'));
ERROR:  function getf1(record) is not unique

SELECT getf1(ROW(1,2.5,'this is a test')::mytable);
 getf1
-------
     1
(1 row)

SELECT getf1(CAST(ROW(11,'this is a test',2.5) AS myrowtype));
 getf1
-------
    11
(1 row)

�ԥ��󥹥ȥ饯���ϡ�ʣ�緿�Υơ��֥���˳�Ǽ����ʣ�緿���ͤ��ۤ��뤿�ᡢ���뤤��ʣ�緿�Υѥ�᡼��������դ���ؿ����Ϥ�����˻��Ѥ��뤳�Ȥ��Ǥ��ޤ��� �ޤ����ʲ�����Τ褦�ˡ�2�Ĥι��ͤ���Ӥ��뤳�Ȥ⡢IS NULL�⤷����IS NOT NULL�ǹԤ򸡺����뤳�Ȥ��ǽ�Ǥ���

SELECT ROW(1,2.5,'this is a test') = ROW(1, 3, 'not the same');
SELECT ROW(table.*) IS NULL FROM table;  -- ���٤Ƥ�NULL�ιԤ򸡽Ф��ޤ���

�ܺ٤�項9.23�򻲾Ȥ��Ƥ��������� �ԥ��󥹥ȥ饯���ϡ�項9.22���������������䤤��碌�Ȱ��˻��Ѥ��뤳�Ȥ�Ǥ��ޤ���

4.2.14. ����ɾ����§

������ɾ���ν�����������Ƥ��ޤ��� �ä˱黻�Ҥ�ؿ������Ϥϡ�ɬ�����⺸���鱦�ʤɤη�ޤä������ɾ�������櫓�ǤϤ���ޤ���

����ˡ����μ��ΰ�����ɾ�����������Ǽ��η�̤�Ƚ�ǤǤ�����ˤϡ�¾���������ޤä���ɾ������ʤ����Ȥ⤢��ޤ��� �㤨�С�

SELECT true OR somefunc();

�Ǥϡ��ʤ����餯��somefunc()�ϸƤӽФ���ʤ��Ǥ��礦�� �ʲ��ξ���Ʊ�ͤǤ���

SELECT somefunc() OR true;

����ϰ����Υץ�����ߥ󥰸���˸����롢�֡��ꥢ��黻�ҤǤκ����鱦�ؤ�"���硼�ȥ������å�"�Ȥϰۤʤ뤳�Ȥ����դ��Ƥ���������

���Τ��ᡢ�������Ѥ�����ؿ���ʣ���ʼ��ΰ����Ȥ��ƻ��Ѥ��뤳�ȤϿ侩����ޤ��� �äˡ�WHERE�礪���HAVING����������Ѥ�ɾ����˰�¸����Τϴ����Ǥ��� �����ζ�ϡ��¹Էײ�����������������ˤ˺ƽ�������뤫��Ǥ��� �����ζ�Υ֡��뼰��AND/OR/NOT���Ȥ߹�碌�ˤϡ��֡�������ε�§�ǵ�����뤢���������Ǻ��������뤳�Ȥ��Ǥ��ޤ���

ɾ���ν���������뤳�Ȥ����פǤ���С�CASE��ʸ��項9.17�򻲾ȡˤ���ѤǤ��ޤ��� �㤨�С����μ���WHERE���0�������򤱤���ˡ�Ȥ��ƤϿ��������㤤��ΤǤ���

SELECT ... WHERE x > 0 AND y/x > 1.5;

�����������Τ褦�ˤ���а����Ǥ���

SELECT ... WHERE CASE WHEN x > 0 THEN y/x > 1.5 ELSE false END;

���Τ褦����ˡ�ǻ��Ѥ����CASE��ʸ�Ϻ�Ŭ����˸�����ΤʤΤǡ�ɬ�פʾ��ˤΤ߻��Ѥ��Ƥ������� ���äˡ�������Ǥϡ�y > 1.5*x������˵��Ҥ��뤳�Ȥ��������򤹤���ͥ�줿��ˡ�Ǥ����ˡ�