この連載では、DuckDBについて学んでいきます。前回の記事はこちらになります。
前回は実際にDuckDBを起動して、データベースファイルの作成、テーブルの作成、CSVファイルの読み込みまで試してみました。

今回は、テーブル操作です。作成したテーブルを操作します。
テーブル情報の取得
前回作成したデータベースファイル「my_database.duckdb」を使用してテーブル操作をしてみようと思います。ファイルの内容を確認してみましょう。 「SHOW TABLES;」と入力すると、テーブルの一覧が表示されます。
my_database D SHOW TABLES; ┌──────────┐ │ name │ │ varchar │ ├──────────┤ │ my_table │ │ users │ └──────────┘
テーブルの構造を確認するには「DESCRIBE テーブル名」と入力します。
my_database D DESCRIBE my_table; ┌──────────────┐ │ my_table │ │ │ │ 名前 varchar │ │ 性別 varchar │ │ 部署 varchar │ │ 収入 bigint │ └──────────────┘ my_database D DESCRIBE users; ┌──────────────┐ │ users │ │ │ │ id integer │ │ 名前 varchar │ │ 日付 date │ └──────────────┘
my_tableには3件のデータがあります。usersにはデータがありません。
my_database D SELECT * FROM my_table; ┌─────────┬─────────┬─────────┬────────┐ │ 名前 │ 性別 │ 部署 │ 収入 │ │ varchar │ varchar │ varchar │ int64 │ ├─────────┼─────────┼─────────┼────────┤ │ 田中 │ 男 │ 営業 │ 300000 │ │ 鈴木 │ 男 │ 開発 │ 400000 │ │ 佐藤 │ 女 │ 営業 │ 350000 │ └─────────┴─────────┴─────────┴────────┘
テーブルの複写
テーブルを複写する例をご紹介します。
my_database D CREATE TABLE new_table AS SELECT * FROM my_table; my_database D SHOW TABLES; ┌───────────┐ │ name │ │ varchar │ ├───────────┤ │ my_table │ │ new_table │ │ users │ └───────────┘ my_database D SELECT * FROM new_table; ┌─────────┬─────────┬─────────┬────────┐ │ 名前 │ 性別 │ 部署 │ 収入 │ │ varchar │ varchar │ varchar │ int64 │ ├─────────┼─────────┼─────────┼────────┤ │ 田中 │ 男 │ 営業 │ 300000 │ │ 鈴木 │ 男 │ 開発 │ 400000 │ │ 佐藤 │ 女 │ 営業 │ 350000 │ └─────────┴─────────┴─────────┴────────┘
コピーする範囲を絞るには、取得するデータを絞ります。以下は、テーブルの構造(定義)だけをコピーする例です。
CREATE TABLE new_table AS SELECT * FROM my_table LIMIT 0;
レコードの追加・削除
レコードの追加には、INSERT文を使用します。以下はレコード追加の例です。
my_database D INSERT INTO new_table (名前, 性別, 部署, 収入)
VALUES ('伊藤', '女', '製造', 380000);
レコードの削除には、DELETE文を使用します。以下はレコード削除の例です。レコードの指定はWHERE句を使用します。
my_database D DELETE FROM new_table WHERE 性別 = '男';
WHERE句を指定しないと、テーブル内のすべてのレコードが削除されます。
列の追加・削除
列の追加・削除はALTER TABLE文を使います。追加にはADD COLUMN句を使います。
my_database D ALTER TABLE new_table ADD COLUMN 役職 INTEGER;
列は一番右に追加されます。削除にはDROP COLUMN句を使います。
my_database D ALTER TABLE new_table DROP COLUMN 部署;
テーブルの削除
ここまでの処理を実行すると、new_tableの内容は以下のようになります。
my_database D SELECT * FROM new_table; ┌─────────┬─────────┬────────┬───────┐ │ 名前 │ 性別 │ 収入 │ 役職 │ │ varchar │ varchar │ int64 │ int32 │ ├─────────┼─────────┼────────┼───────┤ │ 佐藤 │ 女 │ 350000 │ NULL │ │ 伊藤 │ 女 │ 380000 │ NULL │ └─────────┴─────────┴────────┴───────┘
テーブルの削除はDROP TABLE文を使います。
my_database D DROP TABLE new_table; my_database D SHOW TABLES; ┌──────────┐ │ name │ │ varchar │ ├──────────┤ │ my_table │ │ users │ └──────────┘
テーブルが削除されました。
次回は表示モード
いかがでしょうか。今後DuckDBの挙動を確認していく中で、テーブル操作の基本を確認しました。結論から言うと、テーブル操作は他のデータベースシステムと同様のSQLで操作できます。次回は表示モードです。DuckDBの表示モードについて見ていきます。お楽しみに!!





