SELECT (SQL)
SELECTステートメントは、1つもしくは複数のテーブルから、WHERE句などを併用し、データを抽出する、SQLにおけるデータ操作言語 (DML)ステートメントの1つである。
これは、データベースの1つもしくは複数のテーブルからデータを抽出するための命令で、データ操作言語 (DML)の中では最もよく使用される。プログラマはどのような結果を欲しいのかをSQL文で記述する必要はあるが、その結果を取得するためにどのような物理的な操作が実行されるのかを指示する必要はなく、データベースシステム(クエリオプティマイザ)がそのSQL文から最適なクエリプラン(実行計画)を作成する。
これらは、ANSI(米国規格協会)によってある程度は標準化されているが、それ以外に製品固有の命令文が多数存在するため、使用するには各種DBMSの仕様とバージョンを確認する必要がある。
なお、「テーブル」は「表」、「行」は「レコード」、「列」は「項目」と呼ぶこともある。
..MySQL、SQLserverなどに対応。文字列の左/右部分を抽出する。 SUBSTR ...Oracle、MYSQLなどに対応。指定した文字列を抽出する。(探索する文字列,探索開始の位置《-の場合、文字列末尾から》,抽出する文字数《省略した場合は全て》) 例:SUBSTR('architecture',6,3) → tec 。 INSTR ...Oracle、MySQL、Accessで指定可能。指定した文字列の位置を参照する。(探索する文字列,参照する文字《複数存在すると最初に探索された位置が参照される》) 例:INSTR('emperor','r') → 5 LENGTH/LEN ...指定した文字列の長さを参照する(間の空白も含む)。例:LENGTH('Sri Jayawardenepura Kotte') →24 TRIM ... ほとんどのDBMSに対応。指定した文字を削除する。対応できるのは先頭と末尾のみである。 例:TRIM('S' FROM 'sword' ) →word REPLACE ...指定の文字を置き換える(該当文字は全て置き換わる)。 例:REPLACE('encyclopedia','e','u') →uncyclopudia REPEAT/REPLICATE ...MySQL、PostgreSQLなどに対応。指定の文字を任意の数だけ繰り返す。
単一の行を操作する関数で、一つの行に対し、一つの結果を返していく関数。SELECT句、WHERE句、ORDER BY句で使用可能で、以下の種類がある。また、ネスト(入れ子)に制限はない。
文字関数
文字を操作する関数。主なものに以下のものがあるが、対応しているDBMSは各種異なっているため、注意が必要である。
LOWER ...殆どのDBMSで対応。指定した文字列を小文字に変換する。 例:LOWER('ABC') → abc UPPER ...指定した文字列を大文字に変換する。 例:UPPER('xyz') → XYZ INITCAP ...Oracle、postgreSQLで指定可能。指定した文字列の先頭のみを大文字に変換する。 例:INITCAP('WORLD')→ World INSERT ...MySQL、DB2で指定可能。指定した文字列に特定の文字列を置換、挿入する。(任意の文字列,挿入位置,置換を行う文字数《0の場合は、挿入》、挿入する文字) 例:INSERT('123',2,1,'to') → 1to3 INSERT('worldnews',6,0,'weather') →worldweathernews CONCAT ...Oracle、MySQL、DB2で指定可能。指定した文字列を結合する。例:CONCAT('blue','bird') → bluebird LEFT/RIGHT .