INSERT INTO là gì?
INSERT INTO được sử dụng để lưu trữ dữ liệu trong các bảng. Lệnh INSERT tạo một hàng mới trong bảng để lưu trữ dữ liệu. 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.
Cú pháp cơ bản
Hãy xem cú pháp cơ bản của lệnh INSERT INTO MySQL:
CHÈN VÀO `tên_bảng` (cột 1, cột 2,…) GIÁ TRỊ (giá trị 1, giá trị 2,…);
ĐÂY
- INSERT INTO `table_name` là lệnh yêu cầu máy chủ MySQL thêm một hàng mới vào một bảng có tên là table_name.`
- (column_1, column_2,…) chỉ định các cột sẽ được cập nhật trong hàng MySQL mới
- VALUES (giá trị 1, giá trị 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 để chèn vào bảng mới, cần xem xét những điều sau:
- Kiểu dữ liệu chuỗi - tất cả các giá trị chuỗi phải được đặt trong dấu nháy đơn.
- 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 cần đặt chúng trong dấu ngoặc kép hoặc đơn.
- Các kiểu dữ liệu ngày - bao gồm các giá trị ngày trong dấu ngoặc kép ở định dạng 'YYYY-MM-DD'.
Thí dụ:
Giả sử rằng chúng ta 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.
Tên đầy đủ | Ngày sinh | giới tính | Địa chỉ vật lý | địa chỉ bưu điện | Số liên lạc | Địa chỉ email |
---|---|---|---|---|---|---|
Leonard Hofstadter | Nam giới | Tựa gỗ | 0845738767 | |||
Sheldon Cooper | Nam giới | Tựa gỗ | 0976736763 | |||
Rajesh Koothrappali | Nam giới | Fairview | 0938867763 | |||
Leslie Winkle | 14/02/1984 | Nam giới | 0987636553 | |||
Howard Wolowitz | 24/08/1981 | Nam giới | Công viên Phía Nam | Hộp thư bưu điện 4563 | 0987786553 | Địa chỉ email này đã được bảo vệ từ spam bots. Bạn cần bật Javascript để xem nó. |
Hãy CHÈN dữ liệu từng cái một. Chúng ta sẽ bắt đầu với Leonard Hofstadter. Chúng tôi sẽ coi số liên hệ là kiểu dữ liệu số và không đặt số đó trong dấu ngoặc kép.
CHÈN VÀO `thành viên` (` full_names`, `giới tính`,` physical_address`, `contact_number`) VALUES ('Leonard Hofstadter', 'Nam', 'Woodcrest', 0845738767);
Việc thực thi tập lệnh trên sẽ giảm số 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ố không (0) ở đầu bị loại bỏ vì nó không quan trọng.
Để tránh những vấn đề như vậy, giá trị phải được đặt trong dấu ngoặc kép như hình dưới đây:
CHÈN VÀO `thành viên` (` full_names`, `giới tính`,` physical_address`, `contact_number`) VALUES ('Sheldon Cooper', 'Nam', 'Woodcrest', '0976736763');
Trong trường hợp trên, không (0) sẽ không bị bỏ
Thay đổi thứ tự của các cột không ảnh hưởng đến truy vấn INSERT trong MySQL miễn là các giá trị chính xác đã được ánh xạ đến các cột chính xác.
Truy vấn hiển thị bên dưới thể hiện quan điểm trên.
CHÈN VÀO `thành viên` (` contact_number`, `giới tính`,` full_names`, `physical_address`) VALUES ('0938867763', 'Nam', 'Rajesh Koothrappali', 'Woodcrest');
Các truy vấn trên đã bỏ qua cột ngày sinh. Theo mặc định, MySQL sẽ chèn các giá trị NULL vào các cột bị bỏ qua trong truy vấn INSERT.
Bây giờ hãy chèn hồ sơ cho Leslie, có cung cấp ngày sinh. Giá trị ngày tháng phải được đặt trong dấu ngoặc kép sử dụng định dạng 'YYYY-MM-DD'.
CHÈN VÀO `thành viên` (` full_names`, `date_of_birth`,` world`, `physical_address`,` contact_number`) VALUES ('Leslie Winkle', '1984-02-14', 'Nam', 'Woodcrest', ' 0987636553 ');
Tất cả các truy vấn trên đã chỉ định các cột và ánh xạ chúng thành các giá trị trong câu lệnh chèn MySQL. Nếu chúng ta đang cung cấp giá trị cho TẤT CẢ các cột trong bảng, thì chúng ta có thể bỏ qua các cột khỏi truy vấn chèn MySQL.
Thí dụ:-
CHÈN VÀO `thành viên` VALUES (9, 'Howard Wolowitz', 'Nam', '1981-08-24',
'SouthPark', 'PO Box 4563', '0987786553', 'lwolowitz [at] email.me') ;
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.
SELECT * FROM `members`;
số_thành viên | tên đầy đủ | giới tính | ngày sinh | địa chỉ vật lý | địa chỉ bưu điện | số contct_ | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Giống cái | 21-07-1980 | Khu phố đầu tiên số 4 | Túi riêng | 0759 253 542 | Địa chỉ email này đã được bảo vệ từ spam bots. Bạn cần bật Javascript để xem nó. |
2 | Janet Smith Jones | Giống cái | 23-06-1980 | Melrose 123 | VÔ GIÁ TRỊ | VÔ GIÁ TRỊ | Địa chỉ email này đã được bảo vệ từ spam bots. Bạn cần bật Javascript để xem nó. |
3 | Robert Phil | Nam giới | 12-07-1989 | 3 đường 34 | VÔ GIÁ TRỊ | 12345 | Địa chỉ email này đã được bảo vệ từ spam bots. Bạn cần bật Javascript để xem nó. |
4 | Gloria Williams | Giống cái | 14-02-1984 | 2 Đường 23 | VÔ GIÁ TRỊ | VÔ GIÁ TRỊ | VÔ GIÁ TRỊ |
5 | Leonard Hofstadter | Nam giới | VÔ GIÁ TRỊ | Tựa gỗ | VÔ GIÁ TRỊ | 845738767 | VÔ GIÁ TRỊ |
6 | Sheldon Cooper | Nam giới | VÔ GIÁ TRỊ | Tựa gỗ | VÔ GIÁ TRỊ | 976736763 | VÔ GIÁ TRỊ |
7 | Rajesh Koothrappali | Nam giới | VÔ GIÁ TRỊ | Tựa gỗ | VÔ GIÁ TRỊ | 938867763 | VÔ GIÁ TRỊ |
số 8 | Leslie Winkle | Nam giới | 14-02-1984 | Tựa gỗ | VÔ GIÁ TRỊ | 987636553 | VÔ GIÁ TRỊ |
9 | Howard Wolowitz | Nam giới | 24-08-1981 | Công viên Phía Nam | Hộp thư bưu điện 4563 | 987786553 | Địa chỉ email này đã được bảo vệ từ spam bots. Bạn cần bật Javascript để xem nó. |
Lưu ý rằng số liên lạc của Leonard Hofstadter đã bỏ số không (0) khỏi số liên lạc. Các số liên lạc khác chưa bỏ số 0 (0) ở đầ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 như hình dưới đây.
CHÈN VÀO bảng_1 CHỌN * TỪ bảng_2;
Bây giờ chúng ta hãy xem xét một ví dụ thực tế. Chúng tôi sẽ tạo một bảng giả cho các hạng mục phim nhằm mục đích trình diễn. Chúng tôi sẽ gọi các danh mục mới là bảng Category_archive. Tập lệnh hiển thị bên dưới tạo bảng.
TẠO BẢNG HIỆU
Thực thi đoạn mã trên để tạo bảng.
Bây giờ 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ị bên dưới giúp chúng tôi đạt được điều đó.
CHÈN VÀO `danh mục_lưu trữ` CHỌN * TỪ` danh mục`;
Việc thực thi tập lệnh trên sẽ 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 ý rằng các cấu trúc bảng sẽ phải giống nhau để tập lệnh hoạt động. Một tập lệnh mạnh mẽ hơn là một tập lệnh ánh xạ tên cột trong bảng chèn với những tên trong bảng chứa dữ liệu.
Truy vấn được hiển thị bên dưới thể hiện cách sử dụng của nó.
CHÈN VÀO `category_archive` (category_id, category_name, comments) CHỌN category_id, category_name, ghi chú TỪ` danh mục`;
Thực thi truy vấn SELECT
CHỌN * TỪ `danh mục_ lưu trữ`
cho kết quả sau được hiển thị bên dưới.
Thể loại ID | tên danh mục | nhận xét |
---|---|---|
1 | Phim hài | Phim hài hước |
2 | Lãng mạn | Câu chuyện tình yêu |
3 | Sử thi | Câu chuyện nổi bật phim |
4 | Kinh dị | VÔ GIÁ TRỊ |
5 | Khoa học viễn tưởng | VÔ GIÁ TRỊ |
6 | Phim kinh dị | VÔ GIÁ TRỊ |
7 | Hoạt động | VÔ GIÁ TRỊ |
số 8 | Hài kịch lãng mạn | VÔ GIÁ TRỊ |
9 | Phim hoạt hình | VÔ GIÁ TRỊ |
10 | Phim hoạt hình | VÔ GIÁ TRỊ |
Ví dụ PHP: Chèn vào bảng MySQL
Hàm mysqli_query được sử dụng để thực thi các truy vấn SQL.
Hàm có thể được sử dụng để thực thi các kiểu truy vấn sau đây;
- Chèn
- Lựa chọn
- Cập nhật
- xóa bỏ
Nó có cú pháp sau.
mysqli_query($db_handle,$query);
ĐÂY,
"mysqli_query (
…) ”Là hàm thực thi các truy vấn SQL."$ query" là truy vấn SQL sẽ được thực thi
"$ link_identifier" là tùy chọn, nó có thể được sử dụng để chuyển vào liên kết kết nối máy chủ
Thí dụ
$servername = "localhost";$username = "alex";$password = "yPXuPT";$dbname = "afmznf";// Create connection$conn = mysqli_connect($servername, $username, $password, $dbname);// Check connectionif (!$conn) {die("Connection failed: " . mysqli_connect_error());}$sql= "INSERT INTO addkeyworddata(link, keyword)VALUES ('https://www.guru99.com/','1000')";if (mysqli_query($conn, $sql)) {echo "New record created successfully".'
';} else {echo "Error: " . $sql. "
" . mysqli_error($conn);}}
Tóm lược
- Lệnh INSERT được sử dụng để thêm dữ liệu mới vào bảng. MySql sẽ thêm một hàng mới khi lệnh được thực thi.
- Giá trị ngày và chuỗi phải được đặt trong dấu ngoặc kép.
- Các giá trị số không cần đặ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 vào bảng khác.