SQLite - コマンド: 初心者のためのやさしいガイド
こんにちは、データベースの愛好家さんたち!SQLiteコマンドの世界へのエキサイティングな旅にお連れします。コンピュータサイエンスを多年間教えてきた者として、SQLiteはデータベースの世界での親しみやすい子犬のような存在です。取り扱いやすく、遊びやすく、知識を深めるにつれて非常に忠実になります。それでは、始めましょう!

SQLiteコマンドの理解
具体的な内容に入る前に、SQLiteコマンドとは何かを理解するために少し時間を取ります。これらのコマンドは、SQLiteデータベースとコミュニケーションを取るための言語だと思ってください。図書館司書に本を探して頼む時の英語のようなものです。データベースにデータを保存、検索、操作を依頼するためにSQLiteコマンドを使います。
基本的なSQLiteコマンド
それでは、最も一般的なSQLiteコマンドから始めましょう。これらはSQLiteの「パンとバター」のようなものです。頻繁に使うことになります!
| コマンド | 説明 | 例 | 
|---|---|---|
| CREATE TABLE | 新しいテーブルを作成 | CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT, age INTEGER); | 
| INSERT | テーブルに新しいデータを追加 | INSERT INTO students (name, age) VALUES ('Alice', 20); | 
| SELECT | テーブルからデータを検索 | SELECT * FROM students; | 
| UPDATE | 既存のデータを修正 | UPDATE students SET age = 21 WHERE name = 'Alice'; | 
| DELETE | テーブルからデータを削除 | DELETE FROM students WHERE name = 'Alice'; | 
これらのコマンドをそれぞれの例で詳しく見ていきましょう:
CREATE TABLE
CREATE TABLE students (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
);このコマンドは「students」という新しいテーブルを作成します。新しい書庫 cabinetを設置するようなものです。各生徒にはID(ユニークで、社会保障番号のようなもの)、名前、年齢があります。
INSERT
INSERT INTO students (name, age) VALUES ('Alice', 20);
INSERT INTO students (name, age) VALUES ('Bob', 22);これらのコマンドは新しい生徒をテーブルに追加します。書庫にインデックスカードを入れるようなものです。
SELECT
SELECT * FROM students;このコマンドはstudentsテーブルのすべてのデータを検索します。書庫を開けてすべてのインデックスカードを見るようなものです。
SELECT name FROM students WHERE age > 21;このコマンドは21歳以上の生徒の名前だけを検索します。アシスタントに飲酒可能な年齢の生徒のインデックスカードだけを取り出すように依頼するようなものです。
UPDATE
UPDATE students SET age = 21 WHERE name = 'Alice';このコマンドはAliceの年齢を21歳に修正します。Aliceのインデックスカードに年齢をペンで書き換えるようなものです。
DELETE
DELETE FROM students WHERE name = 'Bob';このコマンドはBobをstudentsテーブルから削除します。Bobが卒業したのかもしれません。Bobのインデックスカードを書庫から取り出してシュレッダーにかけるようなものです。
出力のフォーマット
基本的なことをカバーしたので、出力をきれいに見せる方法について話しましょう。データを持っているだけでは意味がありませんよね?
.modeコマンド
SQLiteには出力の表示方法を変更する特別なコマンド、.modeがあります。以下は最も役立つモードのいくつかです:
| モード | 説明 | 
|---|---|
| column | 出力をカラム表示 | 
| line | 各行のデータを別々の行に表示 | 
| csv | データを出力するCSV形式 | 
| html | データを出力するHTMLテーブル形式 | 
これらを実際に見てみましょう:
.mode column
SELECT * FROM students;これは生徒データをきれいなカラムで表示します。
.mode line
SELECT * FROM students;これは各生徒の情報を別々の行に表示します。多くのカラムがある場合に便利です。
.mode csv
SELECT * FROM students;これはデータを出力するCSV形式で、スプレッドシートソフトウェア(例如Excel)にインポートしやすい形式です。
.headerコマンド
もう一つの便利なフォーマットコマンドは.headerです。ONに設定すると、出力の上端にカラム名を表示します。
.header ON
.mode column
SELECT * FROM students;これはカラムヘッダー付きでカラム表示したデータを表示します。データの各ピースが何を示すのかを明確にします。
sqlite_masterテーブル
それでは、カーテンの背後に潜んで見て、SQLiteがすべてのテーブルとインデックスをどのように管理しているかを確認しましょう。これには特別なテーブル「sqlite_master」を使います。
sqlite_masterの内容を表示するには以下のコマンドを使います:
SELECT * FROM sqlite_master;これはデータベース内のすべてのテーブルとインデックス、およびそれらを作成するためのSQLを表示します。データベース全体の地図を持つようなものです!
sqlite_masterの各カラムの意味は以下の通りです:
| カラム | 説明 | 
|---|---|
| type | オブジェクトの種類(テーブル、インデックス、ビュー、トリガー) | 
| name | オブジェクトの名前 | 
| tbl_name | オブジェクトに関連するテーブル | 
| rootpage | このオブジェクトのルートページの番号 | 
| sql | オブジェクトを作成するためのSQLステートメント | 
sqlite_masterを理解することは、データベースの構造と接続方法をX線で見るようなものです。すべての構造がどのように組織化されているかを確認できます。
結論
そして、皆さん!SQLiteコマンドの基本的な内容、出力の見た目を整える方法、そしてsqlite_masterテーブルの裏側を見る方法までを旅しました。SQLiteを学ぶことは自転車に乗るのと同じです。最初は揺れが大きいかもしれませんが、練習を重ねることですぐにデータベースを自在に操ることができます!
実験を続け、クエリを続け、そして最も重要なのは、データを楽しむことを忘れないでください。知識を深めることで、友達の輪の中でSQLiteの魔法使いになるでしょう。快適なコーディングを!
Credits: Image by storyset
