モジュール 8 · レッスン 1 / 4コース内の 29/57~10 min
モジュールのレッスン (1/4)
データの挿入: INSERT
ここまではデータを読んできました。いくつか書く時が来ました。 INSERT は
テーブルに新しい行を追加するコマンド。
基本的な構文
SQL
INSERT INTO tabella (col1, col2, …)
VALUES (val1, val2, …);データセットの例:
SQL
INSERT INTO customers (first_name, last_name, email, city, country, signed_up_on)
VALUES ('Marco', 'Bianchi', 'marco.bianchi@example.com', 'Verona', 'Italia', '2025-07-15');列に名前を付けることをお勧めします。これにより、クエリが作成されます。
将来のスキーマ変更に対して堅牢 (例: 新しいオプションの phone 列)
何も壊しません)そして自己文書化します。
複数行の INSERT
単一のステートメント、複数の行 - N 個の個別の INSERT よりもはるかに高速です。
SQL
INSERT INTO categories (name, parent_id) VALUES
('Gaming', 1),
('Smart Home', 1),
('Cucina vegana', 8);戻る: 挿入したばかりの値を読み取ります
PostgreSQL の特徴的な句: RETURNING は、次の行を返します。
作成されたばかりです。自動生成された id を取得するのに非常に便利です。
SQL
INSERT INTO categories (name, parent_id)
VALUES ('Gaming', 1)
RETURNING id, name;出力は、id (SERIAL によって割り当てられる) を含む 1 行のテーブルです。
name。
列が欠落している場合はどうなるか
INSERT で列を省略した場合:
NOT NULLDEFAULT なし の場合 → エラー。DEFAULT(ID のSERIALを含む) がある場合 → それが使用されます。NULLを受け入れる場合 →NULLになります。
SQL
-- Va bene: id è SERIAL (auto), country ha NOT NULL ma forniamo tutti i campi
INSERT INTO customers (first_name, last_name, email, city, country, signed_up_on)
VALUES ('Olivia', 'Marini', 'olivia.marini@example.com', 'Bari', 'Italia', '2025-07-20');
-- Errore: first_name è NOT NULL e non è fornito
INSERT INTO customers (last_name, email, city, country, signed_up_on)
VALUES ('Marini', 'olivia.marini@example.com', 'Bari', 'Italia', '2025-07-20');あなたの番です
運動#sql.m8.l1.e1
試行回数: 0読み込み中…
名「Marco」、姓「Bianchi」、電子メール「marco.bianchi@example.com」、都市「Verona」、国「Italia」、signed_up_on「2025-07-15」を持つ新しい顧客を顧客テーブルに挿入します。すべての列に明示的に名前を付けます。
エディターを読み込み中…
ヒントを表示
VALUES の値の順序は、名前を付けた列の順序と一致する必要があります。
3 回の試行後に解決策が利用可能になります
復習演習
運動#sql.m8.l1.e2
試行回数: 0読み込み中…
新しい「Gaming」カテゴリを「Elettronica」の子として挿入します (id = 1)。 RETURNING 句を使用して、新しく作成されたカテゴリの ID と名前を返します。
エディターを読み込み中…
ヒントを表示
RETURNING は、SELECT とまったく同じように、列のリスト (または '*') を受け入れます。
3 回の試行後に解決策が利用可能になります