Insert (SQL)

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');
Giả sử chúng ta muốn insert từ textbox xuống database - Insert into nametable(ma,hovaten) values('"+Txtma.text+","+txthovaten.text+"');

**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ả hai 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')

**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ấn SELECT.- Sử dụng từ khóa duy nhất GUID (Globally Unique Identifier) trong cả hai câu lệnh thêm INSERT và câu lệnh truy vấn SELECT.

**Tham khảo**
 Peter Rob & Carlos Coronel. Database System: Design, Implementation, & Management, 2004, THOMSON Course Technology.

**Xem thêm**
 SQL- Select (SQL)- Delete (SQL)- Update (SQL)- Join (SQL)
Thể loại:SQL