INSERT INTO là gì?
Mục tiêu chính của hệ thống cơ sở dữ liệu là lưu trữ dữ liệu trong các bảng. Dữ liệu thường được cung cấp bởi các chương trình ứng dụng chạy trên cơ sở dữ liệu. Để đạt được điều đó, SQL có lệnh INSERT được sử dụng để lưu trữ dữ liệu vào bảng. Lệnh INSERT tạo một hàng mới trong bảng để lưu trữ dữ liệu.
Cú pháp cơ bản
Chúng ta hãy xem cú pháp cơ bản của lệnh SQL INSERT được hiển thị bên dưới.
INSERT INTO `table_name`(column_1,column_2,...) VALUES (value_1,value_2,...);
ĐÂY
- INSERT INTO `table_name` là lệnh yêu cầu máy chủ MySQL thêm hàng mới vào một bảng có tên là` tên_bảng`.
- (column_1,column_2,...) chỉ định các cột sẽ được cập nhật trong hàng mới
- VALUES (value_1,value_2,...) chỉ định các giá trị sẽ được thêm vào hàng mới
Khi cung cấp các giá trị dữ liệu được chèn vào bảng mới, cần xem xét các điều sau đây trong khi xử lý các loại dữ liệu khác nhau.
- Các kiểu dữ liệu chuỗi - tất cả các giá trị chuỗi phải được đặt trong các dấu ngoặc đơn.
- Các kiểu dữ liệu số - tất cả các giá trị số phải được cung cấp trực tiếp mà không kèm theo chúng trong dấu ngoặc đơn hoặc dấu ngoặc kép.
- Các kiểu dữ liệu ngày - bao gồm các giá trị ngày trong các dấu ngoặc đơn ở định dạng 'YYYY-MM-DD'.
Thí dụ:
Giả sử rằng chúng tôi có danh sách các thành viên thư viện mới sau đây cần được thêm vào cơ sở dữ liệu.
Full names | Date of Birth | gender | Physical address | Postal address | Contact number | Email Address |
Leonard Hofstadter | | Male | Woodcrest | | 0845738767 | |
Sheldon Cooper | | Male | Woodcrest | | 0976736763 | |
Rajesh Koothrappali | | Male | Fairview | | 0938867763 | |
Leslie Winkle | 14/02/1984 | Male | | | 0987636553 | |
Howard Wolowitz | 24/08/1981 | Male | South Park | P.O. Box 4563 | 0987786553 | lwolowitz@email.me |
Cho phép dữ liệu INSERT từng cái một. Chúng tôi sẽ bắt đầu với Leonard Hofstadter. Chúng tôi sẽ coi số liên lạc là một kiểu dữ liệu số và không bao gồm số trong các dấu ngoặc đơn.
INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Leonard Hofstadter','Male','Woodcrest',0845738767);
Thực hiện đoạn script trên giảm 0 từ số liên lạc của Leonard. Điều này là do giá trị sẽ được coi là giá trị số và số 0 (0) ở đầu được loại bỏ vì nó không đáng kể.
Để tránh những vấn đề như vậy, giá trị phải được đặt trong dấu ngoặc đơn như hình dưới đây -
XÁC NHẬN VÀO `thành viên` (` full_names`, `giới tính`,` vật lý_address`, `contact_number`) GIÁ TRỊ ('Sheldon Cooper', 'Nam', 'Woodcrest', '0976736763');
Trong trường hợp trên, không (0) sẽ không bị loại bỏ
Thay đổi thứ tự của các cột không ảnh hưởng đến truy vấn INSERT miễn là các giá trị chính xác đã được ánh xạ tới các cột chính xác.
Các truy vấn hiển thị dưới đây chứng minh điểm trên.
INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ('Sheldon Cooper','Male','Woodcrest', '0976736763');
Các truy vấn trên đã bỏ qua ngày sinh, theo mặc định, MySQL sẽ chèn các giá trị NULL vào các cột được bỏ qua trong truy vấn INSERT.
Bây giờ chúng ta hãy chèn bản ghi cho Leslie có ngày sinh được cung cấp. Giá trị ngày phải được đặt trong dấu ngoặc đơn bằng cách sử dụng định dạng 'YYYY-MM-DD'.
INSERT INTO `members` (`contact_number`,`gender`,`full_names`,`physical_address`)VALUES ('0938867763','Male','Rajesh Koothrappali','Woodcrest');
Tất cả các truy vấn trên đã chỉ định các cột và ánh xạ chúng tới các giá trị trong câu lệnh chèn. Nếu chúng tôi đang cung cấp các giá trị cho TẤT CẢ các cột trong bảng, thì chúng tôi có thể bỏ qua các cột khỏi truy vấn chèn.
Thí dụ:-
INSERT INTO `members` (`full_names`,`date_of_birth`,`gender`,`physical_address`,`contact_number`) VALUES ('Leslie Winkle','1984-02-14','Male','Woodcrest', '0987636553');
Bây giờ chúng ta hãy sử dụng câu lệnh SELECT để xem tất cả các hàng trong bảng thành viên. CHỌN * TỪ `thành viên`;
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | email |
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz@email.me |
Lưu ý số liên lạc của Leonard Hofstadter đã giảm số 0 (0) khỏi số liên lạc. Các số liên lạc khác đã không giảm số 0 (0) lúc đầu.
Chèn vào một bảng từ một bảng khác
Lệnh INSERT cũng có thể được sử dụng để chèn dữ liệu vào một bảng từ một bảng khác. Cú pháp cơ bản là như dưới đây.
INSERT INTO table_1 SELECT * FROM table_2;
Bây giờ chúng ta hãy xem một ví dụ thực tế, chúng ta sẽ tạo một bảng giả cho các thể loại phim cho mục đích trình diễn. Chúng tôi sẽ gọi bảng danh mục mới chuyên mục_archive. Kịch bản hiển thị dưới đây tạo bảng.
CREATE TABLE `categories_archive` ( `category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category_id`) )
Thực hiện đoạn script trên để tạo bảng.
Bây giờ chúng ta hãy chèn tất cả các hàng từ bảng danh mục vào bảng lưu trữ danh mục. Kịch bản hiển thị dưới đây giúp chúng tôi đạt được điều đó.
INSERT INTO `categories_archive` SELECT * FROM `categories`;
Thực thi đoạn mã trên chèn tất cả các hàng từ bảng danh mục vào bảng lưu trữ danh mục. Lưu ý các cấu trúc bảng sẽ phải giống nhau để kịch bản hoạt động. Một tập lệnh mạnh hơn là tập lệnh ánh xạ các tên cột trong bảng chèn vào các tập lệnh trong bảng chứa dữ liệu .
Các truy vấn hiển thị dưới đây cho thấy việc sử dụng nó.
INSERT INTO `categories_archive`(category_id,category_name,remarks) SELECT category_id,category_name,remarks FROM `categories`;
Thực hiện truy vấn CHỌN
SELECT * FROM `categories_archive`
đưa ra các kết quả sau đây.
category_id | category_name | remarks |
1 | Comedy | Movies with humour |
2 | Romantic | Love stories |
3 | Epic | Story acient movies |
4 | Horror | NULL |
5 | Science Fiction | NULL |
6 | Thriller | NULL |
7 | Action | NULL |
8 | Romantic Comedy | NULL |
9 | Cartoons | NULL |
10 | Cartoons | NULL |
Tóm lược
- Lệnh INSERT được sử dụng để thêm dữ liệu mới vào bảng
- Các giá trị ngày và chuỗi phải được đặt trong dấu ngoặc đơn.
- Các giá trị số không cần phải được đặt trong dấu ngoặc kép.
- Lệnh INSERT cũng có thể được sử dụng để chèn dữ liệu từ bảng này sang bảng khác.
Đăng nhận xét