Bước tới nội dung

Insert (SQL)

Bách khoa toàn thư mở Wikipedia

Đây là một phiên bản cũ của trang này, do Chuvoitinhnghich (thảo luận | đóng góp) sửa đổi vào lúc 06:06, ngày 26 tháng 4 năm 2008 (Tùy chọn). Địa chỉ URL hiện tại là một liên kết vĩnh viễn đến phiên bản này của trang, có thể khác biệt rất nhiều so với phiên bản hiện hành.

Câu lệnh SQL INSERT (có nghĩa là thêm) dùng để thêm dữ liệu vào một bảng trong cơ sở dữ liệu quan hệ.

Cấu trúc cơ bản

Câu lệnh insert có cấu trúc như sau:

  • INSERT INTO table (column1, [column2, ... ]) VALUES (value1, [value2, ...])

Số lượng cột và số lượng giá trị trong câu lệnh phải bằng nhau. Nếu tên cột không được chỉ ra trong câu truy vấn, thì giá trị mặc định cho cột được sử dụng. Các giá trị (được xác định cụ thể hay ngầm định) trong câu lệnh INSERT phải thỏa các ràng buộc của bảng dữ liệu (như giá trị từ khóa chính, ràng buộc CHECK, và ràng buộc không rỗng (NOT NULL). Nếu có lỗi xuất hiện do xung đột với hằng số thì sẽ không có hàng nào được thêm vào

Ví dụ:

INSERT INTO phone_book (name, number) VALUES ('John Doe', '555-1212');

Khi tất cả giá trị của các cột được chỉ ra thì ta có thể dùng cách viết thu gọn. Chú ý: các dữ liệu nằm trong ngoặc đơn sau VALUES phải theo đúng trình tự các cột được định nghĩa hay thiết kế trong bảng dữ liệu.

  • INSERT INTO table VALUES (value1, [value2, ...])

Ví dụ: (giả định trong bảng dữ liệu 'phone_book' chỉ có 2 cột 'name' và 'number'):

INSERT INTO phone_book VALUES ('John Doe', '555-1212');

Tùy chọn

Một đặc điểm tùy chọn của SQL (bắt đầu từ phiên bản SQL-92) là sử dụng các cấu trúc xây dựng giá trị hàng (row value constructors) để thêm nhiều hàng vào bảng dữ liệu cùng lúc:

  • INSERT INTO table (column1, [column2, ... ]) VALUES (value1a, [value1b, ...]), (value2a, [value2b, ...]), ...

Cả 2 hệ dữ liệu DB2MySQL đều hổ trợ đặc điểm tùy chọn này.

Ví dụ: (giả định trong bảng dữ liệu 'phone_book' chỉ có 2 cột 'name' và 'number'):

INSERT INTO phone_book VALUES ('John Doe', '555-1212'), ('Peter Doe', '555-2323');

- nếu sử dụng cách thêm dữ liệu thông thường sẽ phải dùng 2 câu lệnh như sau:

 INSERT INTO phone_book VALUES ('John Doe', '555-1212');
 INSERT INTO phone_book VALUES ('Peter Doe', '555-2323');

Ví dụ (tạo dữ liệu cho 1 bảng dữ liệu từ dữ liệu của 1 bảng khác / sao chép dữ liệu bằng câu lệnh INSERT):

 INSERT INTO phone_book2 SELECT * FROM phone_book
 WHERE NAME IN ('John Doe', 'Peter Doe')

Retrieving the key

Database designers that use a surrogate key as the primary key for every table will run into the occasional scenario where they need to automatically retrieve the database generated primary key from a SQL INSERT query for use in another SQL INSERT query. Since SQL INSERT does not return row data, it becomes necessary to implement a workaround to such scenarios. Common implementations include:

  • Using a database-specific stored procedure.
  • Using a database-specific SELECT query on a temporary table containing last inserted row(s).
  • Using a unique combination of elements from the original SQL INSERT in a SELECT statement.
  • Using a GUID in the SQL INSERT query and retrieving it in a SELECT statement.

Tham khảo

  • Peter Rob & Carlos Coronel. Database System: Design, Implementation, & Management, 2004, THOMSON Course Technology.

Xem thêm