BigQuery入門
Matt Forrest
Field CTO
INSERT: 新しい行を追加。UPDATE: 既存の値を変更。DELETE: 不要なデータをテーブルから削除。MERGE: INSERT・UPDATE・DELETE を一文に統合。CREATE TABLE AS: クエリ結果から新しいテーブルを作成。UPDATE 実行時は必ず WHERE 条件が必要-- かっこ内で列を指定
INSERT INTO customers (customer_id, name, email)
-- 各 VALUES 行が1レコード
VALUES (1, "John Doe", "[email protected]"),
(2, "Jane Doe", "[email protected]"),
(3, "Alice Smith", "[email protected]");
UPDATE customers
-- 各 SET で1列ずつ設定
SET email = "[email protected]"
-- WHERE がないと全行が更新されるため必ず指定
WHERE customer_id = 1;
UPDATEUPDATE customers c
SET c.email = e.email
FROM emails e
WHERE c.customer_id = 1;
DELETE はレコードを完全に削除し、元に戻せませんDELETE FROM customers
-- 特定の行のみ削除するために WHERE を必ず指定
WHERE customer_id = 3;
DELETE FROM customers c
JOIN emails e USING (customer_id)
WHERE email = '[email protected]'
INSERT、UPDATE、DELETE を1回で実行-- 変更対象を customers テーブルに設定 MERGE customers AS target-- ソースは new_customers USING new_customers AS source-- 照合条件 ON target.customer_id = source.customer_id-- email が異なる場合に更新 WHEN MATCHED AND target.email != source.email THEN UPDATE SET email = source.email-- 一致しない場合は挿入 WHEN NOT MATCHED THEN INSERT (customer_id, name, email) VALUES (source.customer_id, source.name, source.email);
CREATE TABLE active_customers AS
SELECT customer_id, name, email
FROM customers
WHERE last_active_date > DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY);
BigQuery入門