Hướng dẫn insert into mysql - chèn vào mysql



Câu lệnh INSERT trong MySQL được sử dụng để chèn dữ liệu vào bảng.

Nội dung chính

  • Cú pháp
  • Ví dụ chèn dữ liệu vào bảng trong MySQL
    • Ví dụ 1 insert dữ liệu vào bảng
    • Ví dụ 2 insert dữ liệu vào bảng với trường primary key tự động tăng

Cú pháp

Cú pháp SQL cơ bản của lệnh INSERT INTO để chèn dữ liệu vào trong bảng MySQL là:

INSERT INTO ten_bang(ten_truong_1, ten_truong_2, ... ten_truong_n)
       VALUES (gia_tri_1, gia_tri_2, ... gia_tri_n);

Bạn có thể không cần phải chỉ rõ tên cột trong truy vấn SQL nếu bạn đang thêm các giá trị cho tất cả các cột của bảng. Nhưng hãy chắc chắn thứ tự của các giá trị theo thứ tự như các cột trong bảng.

Cú pháp như sau:

INSERT INTO ten_bang VALUES (gia_tri_1, gia_tri_2, ... gia_tri_n);


Ví dụ chèn dữ liệu vào bảng trong MySQL

Ví dụ 1 insert dữ liệu vào bảng

Đoạn mã sau đây là một ví dụ, tạo ra một bảng CUSTOMERS với một ID như một khóa chính và NOT NULL là những ràng buộc cho thấy các trường này không thể là NULL trong khi tạo các bản ghi trong bảng này:

CREATE TABLE CUSTOMERS (
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25),
   SALARY   DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

Các câu lệnh sau sẽ tạo ra sáu bản ghi trong bảng CUSTOMERS:

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
    VALUES (1, 'Ha Anh', 32, 'Da Nang', 2000.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
    VALUES (2, 'Van Ha', 25, 'Ha Noi', 1500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
    VALUES (3, 'Vu Bang', 23, 'Vinh', 2000.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
    VALUES (4, 'Thu Minh', 25, 'Ha Noi', 6500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
    VALUES (5, 'Hai An', 27, 'Ha Noi', 8500.00 );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
    VALUES (6, 'Hoang', 22, 'Ha Noi', 4500.00 );

Bạn có thể tạo một bản ghi trong bảng CUSTOMERS bằng cách sử dụng cú pháp thứ hai như hình dưới đây.

INSERT INTO CUSTOMERS
    VALUES (7, 'Binh', 24, 'Ha Noi', 10000.00 );

Tất cả các câu lệnh trên sẽ tạo ra các bản ghi sau trong bảng CUSTOMERS như hình dưới đây.

Kết quả:

Hướng dẫn insert into mysql - chèn vào mysql

Ví dụ 2 insert dữ liệu vào bảng với trường primary key tự động tăng

Sử dụng câu lệnh tạo bảng trong MySQL:

CREATE TABLE nhanvien (
    manv INT NOT NULL AUTO_INCREMENT,
    hoten VARCHAR(50) NOT NULL,
    ngaysinh DATETIME NULL,
    dienthoai VARCHAR(11) NULL,
    hsluong DECIMAL(3, 2),
    PRIMARY KEY (manv)
);

Dưới đây là ví dụ minh họa việc sử dụng lệnh INSERT INTO để chèn dữ liệu vào trong bảng nhanvien.

INSERT INTO nhanvien (hoten, ngaysinh, dienthoai, hsluong)
       VALUES ('Trịnh Bá Đạo', '1997-10-15 00:00:00', '0989898966', 1.2);
INSERT INTO nhanvien (hoten, ngaysinh, dienthoai, hsluong)
       VALUES ('Phan Văn Vinh', '1990-03-04 00:00:00', '0989898967', 1.8);
INSERT INTO nhanvien (hoten, ngaysinh, dienthoai, hsluong)
       VALUES ('Đào Van Hoa', '1990-03-05 00:00:00', '0989898968', 1.9);

Trong ví dụ trên, mình đã không cung cấp mssv bởi vì tại thời điểm tạo bảng này, mình đã cung cấp tùy chọn AUTO_INCREMENT cho trường này. Vì thế, MySQL sẽ xử lý việc chèn các mssv của nó một cách tự động.

Sử dụng câu lệnh SELECT để xem dữ liệu của bảng nhanvien:

Kết quả:

Hướng dẫn insert into mysql - chèn vào mysql



INSERT INTO là gì?

Mục tiêu chính của các cơ sở dữ liệu chính là lưu trữ dữ liệu dưới dạng 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ó câu lệnh INSERT được sử dụng dùng để lưu trữ dữ liệu vào bảng. Hay nói cách khác, lệnh INSERT tạo thành một hàng mới trong bảng để lưu trữ dữ liệu. 

Cú pháp cơ bản

Dưới đây là cú pháp cơ bản của câu lệnh INSERT INTO:

Hướng dẫn insert into mysql - chèn vào mysql

Trong đó:

  • INSERT INTO ‘table_name‘: là câu lệnh yêu cầu máy chủ MySQL tạo thêm một hàng mới trong bảng có tên là ‘table_name’‘: là câu lệnh yêu cầu máy chủ MySQL tạo thêm một hàng mới trong 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 mới.: 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 trong hàng mới.: Chỉ định các giá trị sẽ được thêm vào trong hàng mới.

Khi cung cấp các giá trị dữ liệu được chèn vào trong bảng mới, chúng ta cần xem xét những điều sau đây trong khi xử lý các loại dữ liệu khác nhau:

  • Kiểu dữ liệu chuỗi (String) – 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ố (Numeric) – tất cả các giá trị số phải được cung cấp trực tiếp (không đi kèm với dấu nháy đơn hoặc dấu ngoặc kép)
  • Kiểu dữ liệu ngày (Date) – Các giá trị này phải được đặt trong dấu nháy đơn ở định dạng ‘YYYY-MM-DD’.

Ví dụ minh họa

Để hiểu rõ và luyện tập tốt hơn phần này, bạn nên tải dữ liệu myflix DB để thực hiện chạy trong MySQL

https://drive.google.com/uc?export=download&id=0B_vqvT0ovzHccjhtdGlrZ0MtZ0k

Giả sử 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: 

Hướng dẫn insert into mysql - chèn vào mysql

Chúng ta sẽ chèn dữ liệu cho từng người một, bắt đầu với Leonard Hofstadter. Trong trường hợp chúng ta xem số liên lạc là kiểu dữ liệu số (numeric) và không đặt chúng trong dấu nháy đơn:

Hướng dẫn insert into mysql - chèn vào mysql

Thực hiện câu lệnh trên sẽ bỏ mất số 0 trong số liên lạc của Leonard. Điều này xảy ra là do số liên lạc được xem là giá trị số (numeric) nên số 0 ở đầu bị loại bỏ vì nó không có ý nghĩa. 

Để tránh những vấn đề trên, giá trị số liên lạc cần phải được đặt trong dấu nháy đơn như câu lệnh ở dưới đây:

Hướng dẫn insert into mysql - chèn vào mysql

Trong trường hợp trên, số 0 sẽ không bị loại bỏ.

Lưu ý là thay đổi thứ tự của các cột sẽ không ảnh hưởng đến câu truy vấn INSERT, miễn là các giá trị chính xác đã được ánh xạ đến các cột chính xác.

Câu truy vấn dưới đây chứng minh điều ở trên:

Hướng dẫn insert into mysql - chèn vào mysql

Câu lệnh trên đã bỏ qua cột ngày sinh “Date of Birth”. Vì vậy 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.

Tiếp theo chúng ta 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 nháy đơn với định dạng  ‘YYYY-MM-DD’.

Hướng dẫn insert into mysql - chèn vào mysql

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 INSERT. 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 khai báo các cột khỏi truy vấn INSERT. 

Ví dụ:

Hướng dẫn insert into mysql - chèn vào mysql

Sử dụng câu lệnh SELECT để xem tất cả các hàng trong bảng members:

SELECT * FROM `members`; 

Hướng dẫn insert into mysql - chèn vào mysql

Lưu ý rằng số liên lạc của Leonard đã mất đi số 0 ở đầu trong khi các số liên lạc khác thì không bị mất số 0 đầu tiên. 

Chèn dữ liệu từ một bảng sang bảng khác

Câu lệnh INSERT INTO có thể chèn dữ liệu từ một bảng này sang bảng khác với cú pháp cơ bản sau đây:

Hướng dẫn insert into mysql - chèn vào mysql

Giả sử chúng ta muốn tạo một bảng giả cho các danh mục phim cho mục đích trình diễn. Tên gọi của bảng danh mục mới sẽ là categories_archive. Sử dụng truy vấn dưới đây:

Hướng dẫn insert into mysql - chèn vào mysql

Chạy câu lệnh trên sẽ giúp tạo bảng mới.

Hướng dẫn insert into mysql - chèn vào mysql

Tiếp theo chúng ta sẽ chèn tất cả các hàng từ bảng categories vào bảng categories_archive :

Lưu ý rằng cấu trúc của hai bảng phải giống nhau để tập lệnh 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âu truy vấn dưới đây sẽ cho thấy việc sử dụng nó :

Hướng dẫn insert into mysql - chèn vào mysql

Chạy câu lệnh SELECT:

Hướng dẫn insert into mysql - chèn vào mysql

Kết quả sẽ hiện ra như sau:

Hướng dẫn insert into mysql - chèn vào mysql

Kết luận

  • Câu lệnh INSERT dùng để thêm dữ liệu mới cho một bảng.
  • Kiểu dữ liệu chuỗi và kiểu dữ liệu ngày nên được đặt trong dấu nháy đơn.
  • Kiểu dữ liệu số không cần phải được đặt trong dấu ngoặc.
  • Lệnh INSERT có thể được sử dụng để chèn dữ liệu từ bảng này sang bảng khác.

Các bạn có thể tham khảo thêm các bài viết khác về cách sử dụng MySQL:

Hướng dẫn sử dụng câu lệnh SELECT trong MySQL qua các ví dụ

Hướng dẫn câu lệnh DELETE trong MySQL và ví dụ minh họa

Hướng dẫn câu lệnh UPDATE trong MySQL và các ví dụ