SQLiteデータベースからデータを選択するには、SELECT
を使用します ステートメント。
このステートメントを使用するときは、データを選択するテーブルと、クエリから返す列を指定します。
返されるデータをさらに絞り込むための追加の基準を提供することもできます。
シンプルなSELECT
ステートメント
すでにSELECT
を使用しています 以前、データを挿入したときのステートメント。
私たちが使用したステートメントは次のとおりです。
SELECT * FROM Artists;
これは非常に自明です—
Artists
からすべての列を選択するようにSQLiteに指示しています テーブル。アスタリスク(*
)は「すべての列」の省略形です。すべての列の名前を書き出す手間が省けます。
したがって、このクエリはすべてのレコードとすべての列を返します。このように:
1|Joe Satriani 2|Steve Vai 3|The Tea Party 4|Noiseworks 5|Wayne Jury 6|Mr Percival 7|Iron Maiden 8|Atmasphere 9|Ian Moss 10|Magnum 11|Strapping Young Lad 12|Slayer 13|Primus 14|Pat Metheny 15|Frank Gambale 16|Frank Zappa 17|The Wiggles
フォーマット
結果が少し読みやすくなるように、出力をフォーマットしてみましょう。
列を使用する
.mode
を使用できます 出力モードを変更します。上記の例では、.mode list
を使用しています 、結果をリストとして表示します。
列を使用するようにモードを変更しましょう。
.mode column
これを行うときは、列の幅を調整する必要がある場合があります(列に対して幅が広すぎるデータは切り捨てられます)。
列幅の調整
列幅を調整するには、.width
を使用します コマンドの後に、各列の幅が続きます。
次の例では、最初の列を12
に設定します 2番目の列は20
。
.width 12 20
ヘッダーの追加
.headers
を使用することもできます 列ヘッダーを表示するかどうかを指定します。
ヘッダーを表示するには、次を使用します:
.headers on
.headers off
で削除できます 。
設定を表示
.show
と入力すると、これらの設定やその他の設定をいつでも確認できます。
sqlite> .show echo: off eqp: off explain: off headers: on mode: column nullvalue: "" output: stdout separator: "|" stats: off width: 12 20
新しいフォーマット
列とヘッダーモードを使用した前の例は次のようになります。
ArtistId ArtistName ---------- ------------ 1 Joe Satriani 2 Steve Vai 3 The Tea Part 4 Noiseworks 5 Wayne Jury 6 Mr Percival 7 Iron Maiden 8 Atmasphere 9 Ian Moss 10 Magnum 11 Strapping Yo 12 Slayer 13 Primus 14 Pat Metheny 15 Frank Gambal 16 Frank Zappa 17 The Wiggles
WHERE
条項
WHERE
を使用できます 結果を絞り込むための句。この句を使用すると、クエリに適用する特定の基準を指定できます。
たとえば、特定のフィールドに特定の値が含まれているレコードのみを返すように指定できます。
これは非常に具体的な例です。 ArtistId を持つレコードのみを指定します 6 に等しい 返送する必要があります:
SELECT * FROM Artists WHERE ArtistId = 6;
結果:
ArtistId ArtistName ------------ -------------------- 6 Mr Percival
名前が「S」で始まるすべてのアーティストを検索するには、次のようにします。
SELECT * FROM Artists WHERE ArtistName LIKE 'S%';
結果:
ArtistId ArtistName ------------ -------------------- 2 Steve Vai 11 Strapping Young Lad 12 Slayer
パーセント記号(%
)は、任意の文字を指定するために使用できるワイルドカード文字です。したがって、この例では、アーティストの名前がこのパターン(つまり、文字
S
で始まるパターン)のようでなければならないことを指定しています。 そして他のキャラクターをフォローします)。
WHERE
を使用する別の例 句は、値の範囲を取得することです。たとえば、値が数値よりも小さい、数値よりも大きい、または特定の範囲内にあるレコードを探すことができます。
ArtistId を持つレコードのみを選択する例を次に示します。 数未満:
SELECT * FROM Artists WHERE ArtistId < 6;
結果:
ArtistId ArtistName ------------ -------------------- 1 Joe Satriani 2 Steve Vai 3 The Tea Party 4 Noiseworks 5 Wayne Jury
ArtistId を持つレコードのみを選択する例を次に示します。 特定の範囲内:
SELECT * FROM Artists WHERE ArtistId BETWEEN 5 AND 10;
結果:
ArtistId ArtistName ------------ -------------------- 5 Wayne Jury 6 Mr Percival 7 Iron Maiden 8 Atmasphere 9 Ian Moss 10 Magnum
列の選択
結果セットで特定の列のみが返されるように指定できます。クエリに列名を入力するだけです。複数の列名はコンマで区切る必要があります。
必要な列を選択することをお勧めします。 *
を使用する 、便利ですが、必要以上の列を返す場合、余分なオーバーヘッドが発生する可能性があります。
それでは、同じクエリをもう一度実行してみましょう。ただし、今回は ArtistName のみを選択します。 列:
SELECT ArtistName FROM Artists WHERE ArtistId BETWEEN 5 AND 10;
結果:
ArtistName ------------ Wayne Jury Mr Percival Iron Maiden Atmasphere Ian Moss Magnum
ORDER BY
条項
ORDER BY
を使用できます 返されるレコードの数を制限する句。
ASC
を追加できます 昇順、またはDESC
降順。何も追加しない場合は、昇順で使用されます。
ここでは、 ArtistName で注文します 昇順のフィールド:
SELECT * FROM Artists ORDER BY ArtistName;
結果:
ArtistId ArtistName ------------ -------------------- 8 Atmasphere 15 Frank Gambale 16 Frank Zappa 9 Ian Moss 7 Iron Maiden 1 Joe Satriani 10 Magnum 6 Mr Percival 4 Noiseworks 14 Pat Metheny 13 Primus 12 Slayer 2 Steve Vai 11 Strapping Young Lad 3 The Tea Party 17 The Wiggles 5 Wayne Jury
そして、降順に切り替えると:
SELECT * FROM Artists ORDER BY ArtistName DESC;
結果:
ArtistId ArtistName ------------ -------------------- 5 Wayne Jury 17 The Wiggles 3 The Tea Party 11 Strapping Young Lad 2 Steve Vai 12 Slayer 13 Primus 14 Pat Metheny 4 Noiseworks 6 Mr Percival 10 Magnum 1 Joe Satriani 7 Iron Maiden 9 Ian Moss 16 Frank Zappa 15 Frank Gambale 8 Atmasphere
LIMIT
条項
LIMIT
を使用できます 返されるレコードの数を制限する句。これは、テーブルに多数のレコードが含まれているが、ほんの一握りしか表示したくない場合に便利です。
ここでは、レコードセットを5つのレコードのみに制限します。
SELECT * FROM Artists LIMIT 5;
結果:
ArtistId ArtistName ------------ -------------------- 1 Joe Satriani 2 Steve Vai 3 The Tea Party 4 Noiseworks 5 Wayne Jury