MapInfo SQL Commands

MapInfo SQL 言語は、SQL-3 標準および SQL/MM 標準をベースとしています。必要に応じて、文字列リテラルは単一引用符で囲み ('example')、識別子 (列名、テーブル名、エイリアスなど) は二重引用符で囲む ("example identifier") 必要があります。識別子は、パーシング ロジックで識別子を正しくパースできない場合にのみ引用符で囲む必要があります。これには、名前にスペースや他の特殊文字を含んでいる識別子が含まれます。詳細については、quotes.html#quotesを参照してください。

Spectrum Spatial では、MapInfo SQL 言語は以下のコマンドで構成されます。

選択

SELECT < select_list >
	FROM { < table_source > } [ ,...n ]
	[ WHERE < search_condition > ]
	[ GROUP BY expression [ ,...n ] ]
	[ ORDER BY < column_position | column_name > [ ASC | DESC ]  [ ,...n ]]
	[ LIMIT positive_integer ]
	[ OFFSET positive_integer ]


	< select_list > ::=
		{
			*
			| { table_name | table_alias }.*
			| { expression } [ [ AS ] column_alias ]
		} [ ,...n ]

	< table_source > ::=
		table_name [ [ AS ] table_alias ]
注: ORDER BY または GROUP BY を、ラスタ、ジオメトリ、スタイル、またはバイナリ列に実行することはできません。
注: ORDER BY ASC では NULL 値は最後に表示されます。ORDER BY DESC 値は最初に表示されます。

更新

UPDATE <table_name>
   SET {column_name = expression} [ ,…n]
   [ WHERE < search_condition > ]
   [ COMMIT_INTERVAL = integer ]
例えば、すべての州に対して DENSITY という列を更新するには、次の文字列を使用します。
UPDATE STATES set DENSITY = POP_1990 / MI_AREA(obj, 'sq mi', 'Spherical')
一部の州に対して DENSITY 列を更新するには、次のように WHERE 句を追加します。
UPDATE STATES set DENSITY = POP_1990 / MI_AREA(obj, 'sq mi', 'Spherical') WHERE STATE_NAME in ('New York', 'New Jersey')
次のようにして、コミット間隔 (1 回のトランザクションで一括で確定される変更件数) を指定することもできます。
UPDATE STATES set DENSITY = POP_1990 / MI_AREA(obj, 'sq mi', 'Spherical') COMMIT_INTERVAL 30 

挿入

INSERT [INTO] { table_name } [ ( column_list ) ]
{ VALUES ({expression | NULL}[, ...n])

削除

DELETE [FROM] { table_name } [ WHERE < search_condition > ]

	< search_condition > ::=
		{ [ NOT ] < predicate > | ( < search_condition > ) }
			[ { AND | OR } [ NOT ] { < predicate > | ( < search_condition > ) }  [ ,...n ] ]

	< predicate > ::=
		{
			expression [ { = | < > | != | > | >= | < | <= } expression ]
			| string_expression [ NOT ] LIKE string_expression [ ESCAPE 'escape_character' ]
			| expression [ NOT ] BETWEEN expression AND expression
			| expression IS [ NOT ] NULL
		}

expression は、列名、疑似列、列のエイリアス、定数、関数、または列名、列のエイリアス、定数、関数を演算子で接続した任意の組み合わせです。列名と疑似列の前には、テーブル名またはテーブルのエイリアスにドット (".") 文字を付加したものを付けることができます。

search_condition は、真または偽を返す式への参照です。このドキュメント内の関数の大部分は検索条件で使用できますが、集合関数は検索用にサポートされていません。

group_by_expression は選択リスト内の列への参照で、選択リストの式の正確なコピー、エイリアス、列の位置を示す 1 を起点とする数字、または n が列を表す数字である coln のいずれかです。

order_by_expression は選択リスト内の列への参照で、選択リストの式の正確なコピー、エイリアス、列の位置を示す 1 を起点とする数字、または n が列を表す数字である coln のいずれかです。