SQLite SELECT 文
SQLite のSELECT文は、SQLite データベースのテーブルからデータを取得し、結果テーブルとしてデータを返すために使用されます。これらの結果テーブルは、結果セットとも呼ばれます。
構文
SQLite の SELECT 文の基本構文は次のとおりです:
SELECT column1, column2, columnN FROM table_name;
ここで、column1, column2... はテーブルのフィールドであり、それらの値は取得したいものです。利用可能なすべてのフィールドを取得したい場合は、次の構文を使用できます:
SELECT * FROM table_name;
例
COMPANY テーブルに次のレコードがあるとします:
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
以下は、SELECT 文を使用してこれらのレコードをすべて取得して表示する例です。ここでは、最初の2つのコマンドを使用して、出力の書式を正しく設定しています。
sqlite>.header on sqlite>.mode column sqlite> SELECT * FROM COMPANY;
最後に、次の結果が得られます:
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
COMPANY テーブルの指定したフィールドだけを取得したい場合は、次のクエリを使用します:
sqlite> SELECT ID, NAME, SALARY FROM COMPANY;
上記のクエリは次の結果を生成します:
ID NAME SALARY ---------- ---------- ---------- 1 Paul 20000.0 2 Allen 15000.0 3 Teddy 20000.0 4 Mark 65000.0 5 David 85000.0 6 Kim 45000.0 7 James 10000.0
出力列の幅を設定する
場合によっては、表示する列のデフォルト幅が原因で.mode column、このような場合、出力が切り捨てられます。このとき、次を使用できます:.width num, num....コマンドで表示列の幅を設定します。次のようになります:
sqlite>.width 10, 20, 10 sqlite>SELECT * FROM COMPANY;
上記の.widthコマンドは、1列目の幅を10、2列目の幅を20、3列目の幅を10に設定します。したがって、上記の SELECT 文は次の結果になります:
ID NAME AGE ADDRESS SALARY ---------- -------------------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
スキーマ情報
すべてのドットコマンドは SQLite プロンプトでのみ使用できるため、SQLite を使ったプログラミングを行う場合は、次のsqlite_masterテーブルの SELECT 文を使用して、データベース内に作成されたすべてのテーブルを一覧表示します:
sqlite> SELECT tbl_name FROM sqlite_master WHERE type = 'table';
testDB.db に唯一の COMPANY テーブルがすでに存在すると仮定すると、次の結果が生成されます:
tbl_name ---------- COMPANY
COMPANY テーブルに関する完全な情報を次のように一覧表示できます:
sqlite> SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'COMPANY';
testDB.db に唯一の COMPANY テーブルがすでに存在すると仮定すると、次の結果が生成されます:
CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL )その他の拡張