PostgreSQL 9.2.4ʸ�� | ||||
---|---|---|---|---|
前のページ | 上に戻る | 第 4章SQL�ι�ʸ | 次のページ |
ɾ�����ϡ��㤨��SELECT���ޥ�ɤ���Ū�ꥹ�ȤȤ��ơ�INSERT��UPDATE�ο���������ͤȤ��ơ��⤷���Ϥ����Ĥ��Υ��ޥ�ɤθ������Ȥ����͡���ʸ̮����ǻȤ��ޤ��� ɾ�����η�̤ϡ��ơ��֥뼰�η�̡ʤĤޤ�ơ��֥�ˤ�����̤��뤿��ˡ��������ȸƤФ�뤳�Ȥ⤢��ޤ��� �������äơ�ɾ�����������鼰�ʤޤ��Ϥ�äȴ�ñ�����ˤȤ�ƤФ�ޤ��� ���ι�ʸ�ˤ�äơ����ѡ�����������ʤɤα黻��Ԥ�����Ū����ʬ���ͤη���Ԥ����Ȥ��Ǥ��ޤ���
ɾ�����ϲ����Τ����Τ����줫�Ǥ���
������뤤�ϥ�ƥ����
����
�ؿ���������Τ�ץ�ڥ���ʸ�ˤ����롢���֥ѥ�������
ź���դ��μ�
�ե����������
�黻�ҤθƤӽФ�
�ؿ��ƤӽФ�
����
������ɥ��ؿ��ƤӽФ�
�����㥹��
�ȹ���(collation)��
���������䤤��碌
���ȥ饯��
�ԥ��ȥ饯��
�������롼�ײ�������ͥ���̤��ѹ�����Τ˻��Ѥ����˳�̤ǰϤޤ줿�̤�ɾ����
����ʳ��ˤ⡢���Ȥ���ʬ�व��뤱��ɤ����Ū�ʹ�ʸ����ˤϽ���ʤ��������Ĥ��ι������Ǥ�����ޤ��� �����ϰ���Ū�˴ؿ����뤤�ϱ黻�Ҥΰ�̣������ޤ��� 第9章�γ�����ʬ����������Ƥ��ޤ��� �����IS NULL�礬����ޤ���
項4.1.2�Ǵ�������ˤĤ��Ƥ��������ޤ����� ³����ǤϻĤ�Υ��ץ����ˤĤ����������ޤ���
��ϡ������Τ褦�ʷ����ǻ��Ȥ��뤳�Ȥ��Ǥ��ޤ���
correlation.columnname
correlation�ϡ��ơ��֥�̾�ʥ������ޤǽ�������Ƥ�����⤢��ޤ��ˡ����뤤��FROM���������줿�ơ��֥����̾�Ǥ��� ���̾�ȶ��ڤ��ѤΥɥåȤϡ��⤷��̾�����ߤ��䤤��碌�ǻȤ������ƤΥơ��֥���̤��ư�դǤ�����Ͼ�ά���뤳�Ȥ��Ǥ��ޤ��� ��第7章�⻲�Ȥ��Ƥ��������ˡ�
���֥ѥ������Ȥϡ���������SQLʸ���Ϥ�����ͤ�����˻��Ѥ���ޤ��� �ѥ�����SQL�ؿ��������ӥץ�ڥ����䤤��碌����ǻ��Ѥ���ޤ��� �ޤ������饤����ȥ饤�֥�����ˤϡ�SQL���ޥ��ʸ����ȥǡ����ͤ�ʬΥ���ƻ���Ǥ��뵡ǽ�ݡ��Ȥ����Τ⤢��ޤ��� ���ξ�硢�ѥ����ϹԳ��ǡ����ͤȤ��뤿��˻��Ѥ���ޤ��� �ѥ������Ȥη����ϰʲ����̤�Ǥ���
$number
�㤨�С��ؿ� dept
��������ʲ��Τ褦�ˤ��줿�Ȥ��ޤ���
CREATE FUNCTION dept(text) RETURNS dept AS $$ SELECT * FROM dept WHERE name = $1 $$ LANGUAGE SQL;
������$1�ϴؿ����ƤӽФ������˺ǽ�δؿ��������ͤȤ��ޤ���
������ͤ�Ϳ���뼰�ξ�硢������������Ǥ��ͤϰʲ��Τ褦�˵��Ҥ��뤳�Ȥ�Ÿ������ޤ���
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�Ȥ��Ƥ���������
����ʣ�緿�ʹԷ��ˤ��ͤ����������硢�Ԥ�����Υե�����ɤϰʲ��Τ褦�˵��Ҥ��뤳�Ȥ�Ÿ���Ǥ��ޤ���
expression.fieldname
����Ū�ˤϡ���expression�ϳ�̤dz��ʤ���Фʤ�ޤ��� �����������Ȥʤ뼰��ñ�ʤ�ơ��֥뻲�Ȥ���֥ѥ����ξ�硢��̤��ά���뤳�Ȥ��Ǥ��ޤ��� �ʲ�������ޤ���
mytable.mycolumn $1.somecolumn (rowfunction(a,b)).col3
�ʤ������äơ��������줿�ȤϼºݤΤȤ�����ñ�ʤ뤳�Υե����������ʸ���ü�ʾ��Ǥ����˽��פȤʤ��ü�ʾ��Ȥ��Ƥϡ�ʣ�緿�Υơ��֥���ե�����ɤ���Ф���Ȥ��Ǥ���
(compositecol).somefield (mytable.compositecol).somefield
compositecol���ơ��֥�̾�Ǥʤ���̾�Ǥ��뤳�ȡ��ޤ��ϣ����ܤξ���mytable����������̾�Ǥʤ��ơ��֥�̾�Ǥ��뤳�Ȥ�����ݳ�̤��ᤵ��ޤ���
SELECT��Υꥹ��(項7.3����)��.*�Ҥ��뤳�Ȥǡ�ʣ�緿�����Ƥ��ͤ��䤤��碌�뤳�Ȥ���ǽ�Ǥ���
(compositecol).*
�黻�ҤθƤӽФ��ˤϰʲ���3��ʸ����ǽ�Ǥ���
expression operator expression ��������ֱ黻�ҡ� |
operator expression ��ñ�����ֱ黻�ҡ� |
expression operator ��ñ����ֱ黻�ҡ� |
OPERATOR(schema.operatorname)
����Ū�ˤɤ�ʱ黻�Ҥ�¸�ߤ������줬ñ�फ��फ�ɤ����ϡ������ƥ��桼���ˤ�äƤɤ�ʱ黻�Ҥ�������줿���˰�¸���ޤ��� 第9章�ˤơ��Ȥ߹��߱黻�ҤˤĤ����������ޤ���
�ؿ��ƤӽФ��ι�ʸ�ϡ��ؿ�̾�ʥ�������̾�ǽ�������Ƥ����礬����ޤ��ˤ�³���Ƥ��ΰ�����ݳ�̤ǰϤ�������ΤǤ���
function_name ([expression [, expression ... ]] )
�㤨�С��ʲ��Τ�Τ�2��ʿ����������ޤ���
sqrt(2)
�Ȥ߹��ߴؿ��ΰ�����第9章�ˤ���ޤ��� ¾�δؿ��ϥ桼�����ɲäǤ��ޤ���
�����ˤ�̾����Ǥ�դ���Ϳ���뤳�Ȥ��Ǥ��ޤ����ܺ٤�項4.3�Ʋ�������
注意: ʣ�緿��ñ�������Ȥ�ؿ��ϥե����������ʸ�ץ���ʥ�˻ȤäƸƤӽФ����Ȥ��Ǥ��ޤ���ȿ�Ф˴ؿ������ǥե����������Ҥ��뤳�Ȥ�Ǥ��ޤ������ε�����ˡ��col(table)��table.col�Ȥʤꡢ�ɤ����ȤäƤ��Ѥ�ꤢ��ޤ���PostgreSQL�Ǥ�"�����줿�ΰ�"�Υ��ߥ�졼�Ȥ�ؿ������Ѥ���ǽ�ʤ��ᡢ�����SQLɸ��ο����ǤϤʤ�PostgreSQL�ȼ���ǽ�Ȥʤ�ޤ����ܤ�����項35.4.3�Ȥ��Ƥ���������
�����ϡ��䤤��碌�ˤ�ä������Ԥ��Ф��ƽ���ؿ���Ŭ�Ѥ���뤳�Ȥ��̣���ޤ��� ����ؿ��ϡ��㤨�����Ϥι�פ�ʿ�ѤʤɤΤ褦�ˡ�ʣ�������Ϥ�ñ��ν����ͤˤ��ޤ��� ���ι�ʸ�ϲ����Τ����Τ����줫�Ǥ���
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��ˤΤ߸����Ȥ�������ϡ����ν���°�����䤤��碌��٥�˴�Ϣ����Ŭ�Ѥ���ޤ���
������ɥ��ؿ��ƤӽФ��ϡ��䤤��碌�ˤ�����줿�ԤΤ�����ʬ���Ϥäƽ���Τ褦�ʵ�ǽ��¸����뤳�Ȥ�ɽ���ޤ��� �̾�ν���ؿ��ƤӽФ��Ȱۤʤꡢ��������줿�Ԥ�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�����ǤΤߵ��Ĥ���ޤ���
�����㥹�Ȥϡ�����ǡ���������¾�Υǡ������ؤ��Ѵ�����ꤷ�ޤ��� 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�Ȥ��Ƥ���������
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���Ȥʤ�>�黻�Ҥη�̤��Ф��ơ��ȹ�����Ŭ�Ѥ���褦�Ȥ��뤫��Ǥ���
���������䤤��碌�ϡ����Τ�1��1����֤����������̾��SELECT�䤤��碌�Ǥ� ���䤤��碌�ε�����ˡ�ˤĤ��Ƥ�第7章�Ȥ��Ƥ��������ˡ� ����SELECT�䤤��碌�ϼ¹Ԥ��졢�֤����ñ����ͤϤ����ͤ������ɾ�����ǻ��Ѥ���ޤ��� 1�Ԥ�Ķ����Ԥ�1���Ķ�������������䤤��碌�Ѥ��䤤��碌�Ȥ��ƻ��Ѥ��줿���ϥ��顼�ˤʤ�ޤ� �ʤ�����������¹Ի��ˡ����䤤��碌���Ԥ��֤��ʤ����ϥ��顼�ȤϤʤ�ޤ��� ���Υ������̤�NULL�Ȥ��ư����ޤ��ˡ� ���䤤��碌�ϡ����μ�����䤤��碌����ͤȤ��뤳�Ȥ��Ǥ��ޤ��� �����ͤ����䤤��碌��ɾ�����ˤ�����Ȥ��ư����ޤ��� ���䤤��碌�˴ؤ���¾�μ��ˤĤ��Ƥ�項9.22�⻲�Ȥ��Ƥ���������
�㤨�С��ʲ��ϳƽ��ǺǤ����¿���ԻԤ����ޤ���
SELECT name, (SELECT max(pop) FROM cities WHERE cities.state = states.name) FROM states;
���ȥ饯���ϡ����С����Ǥ��Ф����ͤ��Ѥ��������ͤ��ۤ��뼰�Ǥ��� ñ������ȥ饯���ι����ϡ�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�Ȥ��Ƥ���������
�ԥ��ȥ饯���ϡ����Υ��Хե�����ɤ��Ф����ͤ��Ѥ��ƹ��͡�ʣ���ͤȤ�ƤФ�ޤ��ˤ��ۤ��뼰�Ǥ��� �ԥ��ȥ饯���ϡ�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���������������䤤��碌�Ȱ��˻��Ѥ��뤳�Ȥ�Ǥ��ޤ���
������ɾ���ν�����������Ƥ��ޤ��� �ä˱黻�Ҥ�ؿ������Ϥϡ�ɬ�����⺸���鱦�ʤɤη�ޤä������ɾ�������櫓�ǤϤ���ޤ���
����ˡ����μ��ΰ�����ɾ�����������Ǽ��η�̤�Ƚ�ǤǤ�����ˤϡ�¾���������ޤä���ɾ������ʤ����Ȥ⤢��ޤ��� �㤨�С�
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������˵��Ҥ��뤳�Ȥ�����������ͥ�줿��ˡ�Ǥ����ˡ�