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ステートメントを使用してこれらすべてのレコードを取得して表示する例です。 ここでは、最初の3つのコマンドを使用して、適切にフォーマットされた出力を設定しています。

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 コマンドは、最初の列幅を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

スキーマ情報

すべての* dotコマンド*は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
)