Chèn vào bàn làm việc mysql

Vượt qua 10 bài vừa rồi quả là hơi căng nhỉ? . Tuy nói là đơn giản nhưng nó cũng có nhiều vấn đề mà các bạn cần lưu ý khi sử dụng và tôi sẽ giải thích cho các bạn lưu ý đó

1. Lệnh INSERT trong MySQL

Trước khi vào tìm hiểu lệnh INSERT, ta cần tạo cơ sở dữ liệu, tạo bảng rồi nhé. Giả sử tôi tạo cơ sở dữ liệu tên

INSERT INTO 
table_name[field1, field2, field2, ..., fieldn]
VALUES['field1', 'field2', 'field3', ...,'fieldn']
0 và bảng
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. bọc lưới]

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 cho cơ sở dữ liệu
INSERT INTO 
table_name[field1, field2, field2, ..., fieldn]
VALUES['field1', 'field2', 'field3', ...,'fieldn']
0

Cú pháp 1. Khai báo tên cột

INSERT INTO 
table_name[field1, field2, field2, ..., fieldn]
VALUES['field1', 'field2', 'field3', ...,'fieldn']

Khi sử dụng cú pháp này, các trường ở 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ó nhiều cột thì ở phần giá trị sẽ có nhiều giá trị tương ứng

Ví dụ

________số 8

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 tên cột

INSERT INTO 
table_name[field1, field2, field2, ..., fieldn]
VALUES['field1', 'field2', 'field3', ...,'fieldn']
0

Trong trường hợp này, bạn buộc phải truyền cho tất cả các cột, ví dụ bạn có 10 cột thì bạn phải truyền cho cả 20, nếu không sẽ báo lỗi ngay

Ví dụ

INSERT INTO 
table_name[field1, field2, field2, ..., fieldn]
VALUES['field1', 'field2', 'field3', ...,'fieldn']
1

Các bạn thấy tuy là từ khóa chính và tăng tự động nhưng vẫn phải truyền giá trị cho nó, điều này khác hoàn toàn với cách trên

2. Chèn có khóa ngoại [Khóa chính]

Bây giờ bạn đã xóa cơ sở dữ liệu mà ta demo ở trên để làm lại cơ sở dữ liệu 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 từ khóa chính

INSERT INTO 
table_name[field1, field2, field2, ..., fieldn]
VALUES['field1', 'field2', 'field3', ...,'fieldn']
8 như sau

INSERT INTO 
table_name[field1, field2, field2, ..., fieldn]
VALUES['field1', 'field2', 'field3', ...,'fieldn']
3

Hình minh họa

Trong trường hợp

INSERT INTO 
table_name[field1, field2, field2, ..., fieldn]
VALUES['field1', 'field2', 'field3', ...,'fieldn']
0 vào bảng có khóa ngoại thì bạn cần lưu ý những đặc điểm sau [lấy sơ đồ về làm ví dụ]

  • Khi thêm vào bảng
    INSERT INTO sinhvien[sv_name, sv_description]
    VALUES ['Nguyen van cuong', 'Sinh vien dai hoc'];
    0 thì thêm bình thường không vấn đề gì
  • Khi thêm vào bảng
    INSERT INTO sinhvien[sv_name, sv_description]
    VALUES ['Nguyen van cuong', 'Sinh vien dai hoc'];
    1 thì tại vì nó có một từ khóa ngoại là lop_id có con trỏ đến bảng
    INSERT INTO sinhvien[sv_name, sv_description]
    VALUES ['Nguyen van cuong', 'Sinh vien dai hoc'];
    0 nên bắt buộc giá trị của
    INSERT INTO sinhvien[sv_name, sv_description]
    VALUES ['Nguyen van cuong', 'Sinh vien dai hoc'];
    3 phải tồn tại trong bảng
    INSERT INTO sinhvien[sv_name, sv_description]
    VALUES ['Nguyen van cuong', 'Sinh vien dai hoc'];
    0, nếu không sẽ bị báo lỗi ngay

Áp dụng hai lưu ý trên thì vấn đề bổ sung dữ liệu quá đơn giản

Ví dụ. Add data table

INSERT INTO sinhvien[sv_name, sv_description]
VALUES ['Nguyen van cuong', 'Sinh vien dai hoc'];
0 after that add data for table
INSERT INTO sinhvien[sv_name, sv_description]
VALUES ['Nguyen van cuong', 'Sinh vien dai hoc'];
1

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
1

Sau khi

INSERT INTO 
table_name[field1, field2, field2, ..., fieldn]
VALUES['field1', 'field2', 'field3', ...,'fieldn']
0 hoàn thành thì bảng
INSERT INTO sinhvien[sv_name, sv_description]
VALUES ['Nguyen van cuong', 'Sinh vien dai hoc'];
0 sẽ có hai bản ghi như sau

Được rồi,

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. 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é

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
5

Run this query question, add to public. Nhưng giờ giả sử bạn đổi giá trị của lop_id sang số 4 thử xem?

3. A number of other problems

Bây giờ ta đang tìm hiểu một số vấn đề khác hơi râu ria một chút như sau

  • Trường hợp bạn thêm cho trường là số thì bạn không cần đặt trong cặp dấu nháy đơn, tuy nhiên nếu đặt vẫn được [khuyến sai đặt]
  • Trường hợp bạn thêm vào là chuỗi thì nếu trong chuỗi có các ký tự nháy đơn, kép thì bạn nên thêm dấu / phía sau nếu không sẽ bị lỗi ngay

Ví dụ

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
8

4. Lời kết

Hèn chi, ở 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 đảo 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 sai lầm của mình đó là lệnh

INSERT INTO 
table_name[field1, field2, field2, ..., fieldn]
VALUES['field1', 'field2', 'field3', ...,'fieldn']
03. Chúc bạn học tốt

Chủ Đề