Chuyển đến nội dung chính
Mô-đun 8 · Bài học 1 trong tổng số 429/57 trong khóa học~10 min
Bài học theo mô-đun (1/4)

Chèn dữ liệu: INSERT

Cho đến nay bạn đã đọc dữ liệu. Đã đến lúc viết một số. INSERT là lệnh thêm hàng mới vào bảng.

Cú pháp cơ bản

SQL
INSERT INTO tabella (col1, col2, …)
VALUES (val1, val2, …);

Ví dụ trên tập dữ liệu của chúng tôi:

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');

Đặt tên các cột là cách thực hành được khuyến nghị: nó tạo ra truy vấn mạnh mẽ chống lại các thay đổi lược đồ trong tương lai (ví dụ: cột phone tùy chọn mới không phá vỡ bất cứ điều gì) và tự ghi lại.

CHÈN nhiều hàng

Một câu lệnh, nhiều hàng — nhanh hơn nhiều so với N INSERTs riêng biệt:

SQL
INSERT INTO categories (name, parent_id) VALUES
  ('Gaming',         1),
  ('Smart Home',     1),
  ('Cucina vegana',  8);

TRẢ LẠI: đọc các giá trị bạn vừa chèn

Đặc điểm mệnh đề của PostgreSQL: RETURNING trả về các hàng vừa được tạo ra. Cực kỳ tiện lợi để truy xuất id được tạo tự động:

SQL
INSERT INTO categories (name, parent_id)
VALUES ('Gaming', 1)
RETURNING id, name;

Đầu ra là một bảng một hàng có id (được chỉ định bởi SERIAL) và name.

Điều gì xảy ra nếu thiếu một cột

Nếu bạn bỏ qua một cột trong INSERT:

  • nếu đó là NOT NULL không có DEFAULT → lỗi;
  • nếu nó có DEFAULT (bao gồm SERIAL cho id) → được sử dụng;
  • nếu nó chấp nhận NULL → nó sẽ trở thành 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');

Đến lượt bạn

tập thể dục#sql.m8.l1.e1
Nỗ lực: 0Đang tải…

Chèn vào bảng khách hàng một khách hàng mới với first_name 'Marco', Last_name 'Bianchi', email 'marco.bianchi@example.com', thành phố 'Verona', quốc gia 'Italia' và signature_up_on '2025-07-15'. Đặt tên rõ ràng cho tất cả các cột.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Thứ tự của các giá trị trong VALUES phải khớp với thứ tự của các cột bạn đã đặt tên.

Giải pháp khả dụng sau 3 lần thử

Xem lại bài tập

tập thể dục#sql.m8.l1.e2
Nỗ lực: 0Đang tải…

Chèn danh mục 'Trò chơi' mới làm danh mục con của 'Elettronica' (id = 1). Sử dụng mệnh đề RETURNING để trả về id và tên của danh mục mới tạo.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

RETURNING chấp nhận danh sách các cột (hoặc '*') chính xác như CHỌN.

Giải pháp khả dụng sau 3 lần thử