18/08/2018, 11:05

(NOT NULL) Không cho phép nhận giá trị NULL trong MySQL

NOT NULL được dùng để thiết lập cột không được nhận giá trị NULL . Đối với cột đã thiết lập NOT NULL, khi INSERT dữ liệu vào bảng thì cột được thiết lập NOT NULL không được nhận giá trị NULL, nếu không khi chạy lệnh sẽ bị lỗi. Giá trị NULL là gì? Ví dụ, chúng ta có một bảng sinh_vien, ...

NOT NULL được dùng để thiết lập cột không được nhận giá trị NULL.

Đối với cột đã thiết lập NOT NULL, khi INSERT dữ liệu vào bảng thì cột được thiết lập NOT NULL không được nhận giá trị NULL, nếu không khi chạy lệnh sẽ bị lỗi.

Giá trị NULL là gì?

Ví dụ, chúng ta có một bảng sinh_vien, bảng có 4 cột tên là column1, column2, column3, column4.

Thêm một mẫu tin vào bảng bằng câu lệnh sau:

INSERT INTO sinh_vien (column1, column3) VALUES ("abc","def");

Nhận thấy ở câu lệnh trên thiếu tham số column2 và column4, vậy tức là khi mẫu tin được thêm vào bảng thì cột column2 và column4 nhận giá trị NULL

Ví dụ  KHÔNG sử dụng NOT NULL

Dùng câu lệnh bên dưới để tạo bảng sinh_vien

CREATE TABLE sinh_vien(
    Full_name VARCHAR(150),
    Gender VARCHAR(3),
    Age INT(11),
    City VARCHAR(50)
);

Thêm vào bảng bốn mẫu tin

INSERT INTO sinh_vien VALUES ('Nguyen Thanh Nhan', 'Nam', 19, 'Can Tho');
INSERT INTO sinh_vien (Full_name, Gender, Age, City) VALUES ('Pham Thu Huong', 'Nu', 20, 'Vinh Long');
INSERT INTO sinh_vien (Full_name, City) VALUES ('Nguyen Nhu Ngoc', 'Soc Trang');
INSERT INTO sinh_vien (Gender) VALUES ('Nam');

Sau khi thực thi hai câu lệnh trên, chúng ta có một bản sinh_vien như sau:

Full_name Gender Age City
Nguyen Thanh Nhan Nam 19 Can Tho
Pham Thu Huong Nu 20 Vinh Long
Nguyen Nhu Ngoc NULL NULL Soc Trang
NULL Nam NULL NULL

Nhận thấy: Ở câu lệnh INSERT thứ 3 (thiếu 2 tham số Gender, Age), ở câu lệnh INSERT thứ 4 (thiếu 3 tham số Full_name, Age, City). Do đó chúng nhận giá trị NULL.

Đối với cột không thiết lập NOT NULL, khi INSERT dữ liệu vào bảng nếu tham số của cột đó bị bỏ trống thì những cột đó sẽ nhận giá trị NULL

Ví dụ CÓ sử dụng NOT NULL

Dùng câu lệnh bên dưới để tạo bảng sinh_vien

CREATE TABLE sinh_vien(
    Full_name VARCHAR(150) NOT NULL,
    Gender VARCHAR(3) NOT NULL,
    Age INT(11) NOT NULL,
    City VARCHAR(50) NOT NULL
);

Thêm vào bảng bốn mẫu tin

INSERT INTO sinh_vien VALUES ('Nguyen Thanh Nhan', 'Nam', 19, 'Can Tho');
INSERT INTO sinh_vien (Full_name, Gender, Age, City) VALUES ('Pham Thu Huong', 'Nu', 20, 'Vinh Long');
INSERT INTO sinh_vien (Full_name, City) VALUES ('Nguyen Nhu Ngoc', 'Soc Trang');
INSERT INTO sinh_vien (Gender) VALUES ('Nam');

Sau khi thực thi hai câu lệnh trên, chúng ta có một bản sinh_vien như sau:

Full_name Gender Age City
Nguyen Thanh Nhan Nam 19 Can Tho
Pham Thu Huong Nu 20 Vinh Long

Nhận thấy: Câu lệnh 1, 2 được thực thi trước và tham số đầy đủ nên thêm thành công. Còn câu lệnh 3,4 thiếu tham số nên thêm thất bại.

Lưu ý

Ở một số phiên bản MySQL mới. Đối với những cột áp dụng NOT NULL mà khi INSERT bị bỏ trống, thì nó sẽ gán giá trị mặc định cho những cột đó.

Ví dụ (chúng ta sử dụng lại bảng ở Ví dụ về CÓ sử dụng NOT NULL)

Thêm vào bảng hai mẫu tin

INSERT INTO sinh_vien (Full_name, City) VALUES ('Nguyen Nhu Ngoc', 'Soc Trang');
INSERT INTO sinh_vien (Gender) VALUES ('Nam');

Hai mẫu tin mới thêm sẽ trông như thế này

Full_name Gender Age City
Nguyen Nhu Ngoc   0 Soc Trang
  Nam 0  
Bài liên quan

Thủ thuật joomla : Không cho phép xem vị trí module

Trong Joomla! có một tính năng rất thú vi đó là khi bạn gõ thêm ?tp=1 vào cuối domain của môt website Joomla! bất kỳ thì ban có thể xem đươc vi trí các module của website đó . Nếu ban muốn tắt tính năng này, ban hãy tham khảo bài viết này. Theo mặc định, các Website Joomla đều cho phép xem vị ...

Trịnh Tiến Mạnh viết 3 tuần trước

[SQLSERVER] Hướng dẫn fix lỗi không cho phép chỉnh sửa table ở chế độ Design

Bài viết hôm nay, mình sẽ hướng dẫn các bạn fix lỗi thường gặp. Khi các bạn thiết kế xong table trong sqlserver, và một ngày nào đó, bạn vào thay đổi hoặc thêm cột vào table trong sql ở chế độ Sql Design . Thông báo lỗi mà chúng ta thường gặp : ...

Trịnh Tiến Mạnh viết 3 tuần trước

Tòa án Mỹ không cho phép NSA lưu trữ lý lịch điện thoại khách hàng quá 5 năm.

Tòa Án Giám Sát Tình Báo Nước Ngoài bí mật đưa ra phán quyết chống lại yêu cầu của Chính Phủ Mỹ về quyền nắm giữ dữ liệu điện thoại vượt quá 5 năm vì nó có thể được yêu cầu làm bằng chứng trong vụ kiện dân sự về vấn đề thu thập dữ liệu. Tổ chức Liên minh công dân tự do Mỹ, Thượng nghị sĩ Mỹ – ...

Trần Trung Dũng viết 15:26 ngày 17/09/2018

Cách Xử Lý Giá Trị Form Trong PHP

Biến superglobals trong PHP sẽ đều được xử lý dựa trên 2 phương thức, đó là phương thức GET và phương thức POST qua dữ liệu thu thập được. PHP – Một dạng HTML đơn giản Ví dụ dưới đây cho thấy một dạng HTML đơn giản với 2 dữ liệu đầu vào và người dùng ...

Trần Trung Dũng viết 14:33 ngày 07/09/2018

Điều kiện IS NOT NULL trong SQL Server

Bài hướng dẫn SQL Server này đưa ra cách sử dụng điều kiện IS NOT NULL cùng với cú pháp và các ví dụ cụ thể. Điều kiện IS NOT NULL trong SQL Server được dùng để kiểm tra xem giá trị có phải là NOT NULL hay không. Giá trị NULL trong một bảng là một giá trị trong ...

Hoàng Hải Đăng viết 10:59 ngày 22/08/2018
0