Lệnh thêm cột trong mysql
Trải qua 10 bài vừa rồi quả là hơi căng thẳng nhỉ? Để giải tỏa tâm lý cho các bạn thì trong bài này chúng ta sẽ tìm hiểu một lệnh rất quan trọng và rất đơn giản đó là lệnh Show 1. Lệnh INSERT trong MySQLTrước khi vào tìm hiểu lệnh INSERT thì ta cần tạo database, tạo table đã nhé. Giả sử tôi tạo database tên INSERT INTO table_name(field1, field2, field2, ..., fieldn) VALUES('field1', 'field2', 'field3', ...,'fieldn')0 và table INSERT INTO table_name(field1, field2, field2, ..., fieldn) VALUES('field1', 'field2', 'field3', ...,'fieldn')1 như sau: CREATE DATABASE IF NOT EXISTS qlsv; USE qlsv; CREATE TABLE IF NOT EXISTS sinhvien( sv_id INT(11) NOT NULL AUTO_INCREMENT, sv_name VARCHAR(255) NOT NULL, sv_description VARCHAR(500), CONSTRAINT pk_sinhvien PRIMARY KEY(sv_id) ) ENGINE = InnoDB Hình minh họa: Bài viết này được đăng tại [free tuts .net] Thực ra thì INSERT INTO table_name(field1, field2, field2, ..., fieldn) VALUES('field1', 'field2', 'field3', ...,'fieldn')2 hay INSERT INTO table_name(field1, field2, field2, ..., fieldn) VALUES('field1', 'field2', 'field3', ...,'fieldn')3 đều có cú pháp giống nhau bởi chúng đều là ngôn ngữ truy vấn INSERT INTO table_name(field1, field2, field2, ..., fieldn) VALUES('field1', 'field2', 'field3', ...,'fieldn')4. Sau đây là một số cú pháp mà ta có thẻ sử dụng để INSERT database.Cú pháp 1: Khai báo rõ tên columnINSERT INTO table_name(field1, field2, field2, ..., fieldn) VALUES('field1', 'field2', 'field3', ...,'fieldn') Khi sử dụng cú pháp này thì các field ở vị trí nào sẽ tương ứng với vị trí của nó ở INSERT INTO table_name(field1, field2, field2, ..., fieldn) VALUES('field1', 'field2', 'field3', ...,'fieldn')6, và ở phần khai báo có bao nhiêu column thì ở phần value sẽ có bấy nhiêu value tương ứng. Ví dụ: INSERT INTO sinhvien(sv_name, sv_description) VALUES ('Nguyen van cuong', 'Sinh vien dai hoc'); Vì INSERT INTO table_name(field1, field2, field2, ..., fieldn) VALUES('field1', 'field2', 'field3', ...,'fieldn')7 là PRIMARY KEY và tăng tự động (AUTO_INCREMENT) nên tôi không cần truyền dữ liệu cho nó. Cú pháp 2: Không khai báo rõ tên columnINSERT INTO table_name VALUES ('field_1', 'field_2', ..., 'field_n'); Trong trường hợp này thì bạn bắt buộc phải truyền cho tất cả các column, ví dụ bạn có 10 column thì bạn phải truyền cho cả 20, nếu không sẽ báo lỗi ngay. Ví dụ: INSERT INTO sinhvien VALUES ('2', 'Nguyen van Kinh', 'Hoc sinh trung hoc'); Các bạn thấy tuy là khóa chính và tăng tự động nhưng vẫn phải truyền value cho nó, điều này khác hoàn toàn với cách trên. 2. Insert có khóa ngoại (Primary Key)Bây giờ bạn xóa database mà ta demo ở trên để làm lại database khác. Giả sử ta có bảng SINHVIEN và bảng LOP, trong đó SINHVIEN sẽ là con của bảng LOP. Vây ta cần tạo hai bảng này và thêm khóa chính INSERT INTO table_name(field1, field2, field2, ..., fieldn) VALUES('field1', 'field2', 'field3', ...,'fieldn')8 như sau: CREATE DATABASE IF NOT EXISTS qlsv; USE qlsv; CREATE TABLE IF NOT EXISTS lop( lop_id INT(11) NOT NULL AUTO_INCREMENT, lop_name VARCHAR(255) NOT NULL, CONSTRAINT pk_lop PRIMARY KEY(lop_id) ) ENGINE = INNODB; CREATE TABLE IF NOT EXISTS sinhvien( sv_id INT(11) NOT NULL AUTO_INCREMENT, sv_name VARCHAR(255) NOT NULL, sv_description VARCHAR(500), lop_id INT(11) NOT NULL, CONSTRAINT pk_sinhvien PRIMARY KEY(sv_id), CONSTRAINT fk_sinhvien_lop FOREIGN KEY (lop_id) REFERENCES lop(lop_id) ) ENGINE = INNODB; Hình minh họa: Trong trường hợp
Áp dụng hai lưu ý trên thì vấn đề thêm dữ liệu quá đơn giản. Ví dụ: Thêm dữ liệu bảng INSERT INTO sinhvien(sv_name, sv_description) VALUES ('Nguyen van cuong', 'Sinh vien dai hoc');0 sau đó thêm dữ liệu cho bảng INSERT INTO sinhvien(sv_name, sv_description) VALUES ('Nguyen van cuong', 'Sinh vien dai hoc');1. INSERT INTO lop(lop_name) VALUES('CNTT'); INSERT INTO lop(lop_name) VALUES('SPTIN') Sau khi INSERT INTO sinhvien(sv_name, sv_description) VALUES ('Nguyen van cuong', 'Sinh vien dai hoc');0 sẽ có hai record như sau: Ok, INSERT INTO sinhvien(sv_name, sv_description) VALUES ('Nguyen van cuong', 'Sinh vien dai hoc');3 đã được thiết lập tăng tự động. Bây giờ ta sẽ viết code thêm bảng INSERT INTO sinhvien(sv_name, sv_description) VALUES ('Nguyen van cuong', 'Sinh vien dai hoc');1 nhé: INSERT INTO sinhvien(sv_name, sv_description, lop_id) VALUES ('Nguyen Van Cuong', 'Hoc sinh guong mau', 1) Chạy câu truy vấn này thì thêm thành công. Nhưng giờ giả sử bạn đổi giá trị của lop_id sang số 4 thử xem? Chạy sẽ bị lỗi tại vì INSERT INTO table_name VALUES ('field_1', 'field_2', ..., 'field_n');1 không tồn tại bên bảng INSERT INTO sinhvien(sv_name, sv_description) VALUES ('Nguyen van cuong', 'Sinh vien dai hoc');0. 3. Một số vấn đề khácBây giờ ta tìm hiểu một số vấn đề khác hơi râu ria một chút như sau:
Ví dụ: INSERT INTO sinhvien(sv_name, sv_description, lop_id) VALUES ('Nguyen Van Cuong', 'Hoc sinh guong mau 'nhat lop' ', 1) 4. Lời kếtHè hè, ở trên mình nói bài này khá đơn giản nhưng đọc vào hơi điên đầu phải không nào :D, các bạn bị lừa rồi đấy nhé. Nếu cảm thấy tức tối khi bị lừa thì hãy chờ bài tiếp theo chúng ta sẽ tìm hiểu một lệnh khác cũng khá đơn giản để bù đắp lỗi lầm của mình đó là lệnh INSERT INTO table_name VALUES ('field_1', 'field_2', ..., 'field_n');3. Chúc bạn học tốt! |