Insert (SQL)
Bách khoa toàn thư mở Wikipedia
Bài này đang được dịch từ tiếng Anh. Nếu bạn có đủ khả năng xin góp sức dịch bài này. Nếu không tiếp tục được quan tâm, phần ngoại ngữ của bài sẽ bị xóa sau khoảng 1 tháng. Xin đừng quên chuyển các mục Chú thích, Tham khảo vào bài dịch để đáp ứng tiêu chuẩn. Xin tham khảo Hướng dẫn cách biên soạn bài để biết thêm chi tiết. |
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ệ.
Mục lục |
[sửa] 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');
[sửa] 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 DB2 và MySQL đề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')
[sửa] Truy vấn Từ khóa
Từ khóa thay thế (surrogate key) thường được sử dụng để thay thế từ khóa chính (primary key) khi xảy ra trường hợp cần truy vấn (sử dụng hay lưu) tự động các từ khóa chính trong 1 câu lệnh thêm INSERT
để dùng lại trong 1 câu lệnh thêm INSERT
khác. Vì câu lệnh thêm INSERT
không trả về dữ liệu theo dạng hàng, nên cần sử dụng một số cách thay thế để truy vấn từ khóa trong những trường hợp như trên. Một số cách thay thế thông thường:
- Sử dụng thủ tục truy vấn (stored procedure).
- Sử dụng câu lệnh truy vấn
SELECT
trên 1 bảng dữ liệu tạm chứa thông tin về (các) hàng vừa mới được thêm. - Sử dụng câu lệnh thêm
INSERT
kết hợp trong 1 câu lệnh truy vấnSELECT
. - Sử dùng từ khóa duy nhất GUID (Globally Unique Identifier) trong cả 2 câu lệnh thêm
INSERT
và câu lệnh truy vấnSELECT
.
[sửa] Tham khảo
- Peter Rob & Carlos Coronel. Database System: Design, Implementation, & Management, 2004, THOMSON Course Technology.
[sửa] Xem thêm
Bài này còn sơ khai. Bạn có thể góp sức viết bổ sung cho bài được hoàn thiện hơn. Xem phần trợ giúp để biết thêm về cách sửa đổi bài. |