Kiểm tra null mysql

- Khi chúng ta chèn một hàng mới vào bên trong cái bảng, nếu chúng ta không xác định đầy đủ giá trị cho tất cả các cột thì mặc định những cột bị bỏ trống sẽ nhận giá trị NULL

- Tôi có một bảng SinhVien & một câu lệnh như bên dưới

MSSVHoTenNamSinhGioiTinhThanhPho
INSERT INTO SinhVien [MSSV, GioiTinh, ThanhPho] VALUES [1, "", "Cần Thơ"];

- Sau khi tôi thực hiện câu lệnh INSERT INTO phía trên thì cái bảng SinhVien sẽ trở thành

MSSVHoTenNamSinhGioiTinhThanhPho1NULLNULLCần Thơ

- Lưu ý. Giá trị NULL có nghĩa là không có dữ liệu gì cả, nó hoàn toàn khác nên với một chuỗi rỗng [chuỗi cũng trống là một giá trị, điển hình như trong bảng SinhVien nằm ở ví dụ phía trên, sinh viên được tôi

2] Chức năng của ràng buộc NOT NULL

- Ràng buộc NOT NULL dùng để thiết lập việc một cột không được phép chấp nhận giá trị NULL, tức là chúng ta không thể thêm hoặc cập nhật một hàng nếu không gán giá trị [hoặc gán giá trị là NULL] cho cột này

- Sử dụng bảng mã bên dưới để tạo một bảng SinhVien. Trong đó, MSSV & GioiSinh hai cột bị ràng buộc buộc NOT NULL, điều đó đồng nghĩa với việc hai cột này không thể chứa giá trị NULL

CREATE TABLE SinhVien[
	MSSV INT NOT NULL,
	HoTen VARCHAR[255],
	NamSinh YEAR,
	GioiTinh VARCHAR[10] NOT NULL
];

3] Thêm ràng buộc NOT NULL khi bảng đã được tạo

- Đối với trường hợp bảng đã được tạo trước đó, nhưng do quên thiết lập bắt buộc NOT NULL cho cột nên bây giờ các bạn muốn bổ sung, để làm được điều đó thì chúng ta sử dụng lệnh chỉnh sửa bảng như bên dưới

ALTER TABLE table_name MODIFY column_name DATA TYPE NOT NULL;

- Ví dụ, để bổ sung ràng buộc NOT NULL cho cột HoTen [trong bảng SinhVien] thì tôi sử dụng câu lệnh bên dưới

ALTER TABLE SinhVien MODIFY HoTen VARCHAR[255] NOT NULL;

4] Xóa ràng buộc NOT NULL

- Để xóa ràng buộc NOT NULL trên cột, chúng ta sử dụng lệnh chỉnh sửa bảng như bên dưới

ALTER TABLE table_name MODIFY column_name DATA TYPE;

- Ví dụ, để xóa ràng buộc NOT NULL trên cột HoTen [trong bảng SinhVien] thì tôi sử dụng câu lệnh bên dưới

Nếu một trường trong bảng là tùy chọn, thì có thể chèn bản ghi mới hoặc cập nhật bản ghi mà không cần thêm giá trị vào trường này. Sau đó, trường sẽ được lưu với giá trị NULL

Ghi chú. Giá trị NULL khác với giá trị 0 hoặc trường chứa dấu cách. Trường có giá trị NULL là trường đã bị bỏ trống trong quá trình tạo bản ghi

Làm cách nào để kiểm tra giá trị NULL?

Không thể kiểm tra giá trị NULL bằng các toán tử so sánh, chẳng hạn như =, < hoặc

Thay vào đó, chúng ta sẽ phải sử dụng các toán tử

ALTER TABLE table_name MODIFY column_name DATA TYPE;
4 và
ALTER TABLE table_name MODIFY column_name DATA TYPE;
5

IS NULL Cú pháp

CHỌN tên_cột
TỪ_tên_bảng
Ở ĐÂU tên_cột LÀ NULL;

Cú pháp KHÔNG NULL

CHỌN tên_cột
TỪ_tên_bảng
Ở ĐÂU tên_cột KHÔNG PHẢI NULL;

Cơ sở dữ liệu demo

Dưới đây là một lựa chọn từ bảng "Khách hàng" trong cơ sở dữ liệu mẫu của Northwind

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Đức2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222Mexico D. F. 05021Mexico3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D. F. 05023Mexico4Xung quanh Sừng Thomas Hardy120 Hanover Sq. Luân ĐônWA1 1DPUK5Berglunds snbbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Thụy Điển

Để kiểm tra xem một giá trị có

SELECT 1 IS NULL,  -- 0
       0 IS NULL,  -- 0
       NULL IS NULL; -- 1
2 hay không, bạn sử dụng toán tử  
SELECT 1 IS NULL,  -- 0
       0 IS NULL,  -- 0
       NULL IS NULL; -- 1
3. Đây là cú pháp cơ bản của toán tử
SELECT 1 IS NULL,  -- 0
       0 IS NULL,  -- 0
       NULL IS NULL; -- 1
3

________số 8

Nếu giá trị là

SELECT 1 IS NULL,  -- 0
       0 IS NULL,  -- 0
       NULL IS NULL; -- 1
2, biểu thức trả về true. If not, it return false

Lưu ý rằng MySQL không có kiểu tích hợp sẵn

SELECT 1 IS NULL,  -- 0
       0 IS NULL,  -- 0
       NULL IS NULL; -- 1
6. Nó sử dụng
SELECT 1 IS NULL,  -- 0
       0 IS NULL,  -- 0
       NULL IS NULL; -- 1
7 để đại diện cho các giá trị của
SELECT 1 IS NULL,  -- 0
       0 IS NULL,  -- 0
       NULL IS NULL; -- 1
6, tức là đúng nghĩa là 1 và sai nghĩa là 0

SELECT 1 IS NULL,  -- 0
       0 IS NULL,  -- 0
       NULL IS NULL; -- 1
3 là một toán tử so sánh, bạn có thể sử dụng nó ở bất cứ đâu mà một toán tử có thể được sử dụng, ví dụ, trong đề đề
CREATE TABLE SinhVien[
	MSSV INT NOT NULL,
	HoTen VARCHAR[255],
	NamSinh YEAR,
	GioiTinh VARCHAR[10] NOT NULL
];
40 hoặc
CREATE TABLE SinhVien[
	MSSV INT NOT NULL,
	HoTen VARCHAR[255],
	NamSinh YEAR,
	GioiTinh VARCHAR[10] NOT NULL
];
41

Xem ví dụ sau

SELECT 1 IS NULL,  -- 0
       0 IS NULL,  -- 0
       NULL IS NULL; -- 1

Để kiểm tra xem một giá trị không phải là

SELECT 1 IS NULL,  -- 0
       0 IS NULL,  -- 0
       NULL IS NULL; -- 1
2, bạn sử dụng toán tử
CREATE TABLE SinhVien[
	MSSV INT NOT NULL,
	HoTen VARCHAR[255],
	NamSinh YEAR,
	GioiTinh VARCHAR[10] NOT NULL
];
43

CREATE TABLE SinhVien[
	MSSV INT NOT NULL,
	HoTen VARCHAR[255],
	NamSinh YEAR,
	GioiTinh VARCHAR[10] NOT NULL
];
4

Biểu thức này trả về đúng [1] nếu giá trị không phải là

SELECT 1 IS NULL,  -- 0
       0 IS NULL,  -- 0
       NULL IS NULL; -- 1
2. If not, it return false [0]

Hãy xem xét ví dụ sau

ALTER TABLE table_name MODIFY column_name DATA TYPE NOT NULL;
1

Các ví dụ về IS NULL trong MySQL

Chúng tôi sẽ sử dụng bảng

CREATE TABLE SinhVien[
	MSSV INT NOT NULL,
	HoTen VARCHAR[255],
	NamSinh YEAR,
	GioiTinh VARCHAR[10] NOT NULL
];
45 trong cơ sở dữ liệu mẫu để diễn

Truy vấn sau khi sử dụng toán tử

SELECT 1 IS NULL,  -- 0
       0 IS NULL,  -- 0
       NULL IS NULL; -- 1
3 để tìm những khách hàng không có đại diện bán hàng

ALTER TABLE table_name MODIFY column_name DATA TYPE NOT NULL;
4

Ví dụ này sử dụng toán tử

CREATE TABLE SinhVien[
	MSSV INT NOT NULL,
	HoTen VARCHAR[255],
	NamSinh YEAR,
	GioiTinh VARCHAR[10] NOT NULL
];
43 để lấy những khách hàng có đại diện bán hàng.

ALTER TABLE table_name MODIFY column_name DATA TYPE NOT NULL;
6

MySQL IS NULL - các tính năng chuyên biệt

Để tương thích với các chương trình ODBC, MySQL hỗ trợ một số tính năng chuyên biệt của toán tử

SELECT 1 IS NULL,  -- 0
       0 IS NULL,  -- 0
       NULL IS NULL; -- 1
3

Xử lý ngày '0000-00-00'

1] Nếu một cột

CREATE TABLE SinhVien[
	MSSV INT NOT NULL,
	HoTen VARCHAR[255],
	NamSinh YEAR,
	GioiTinh VARCHAR[10] NOT NULL
];
49 hoặc
ALTER TABLE table_name MODIFY column_name DATA TYPE NOT NULL;
10 có một cột
ALTER TABLE table_name MODIFY column_name DATA TYPE NOT NULL;
11 bắt buộc và có một ngày đặc biệt của
ALTER TABLE table_name MODIFY column_name DATA TYPE NOT NULL;
12, bạn có thể sử dụng toán tử
SELECT 1 IS NULL,  -- 0
       0 IS NULL,  -- 0
       NULL IS NULL; -- 1
3 để tìm các hàng hóa như vậy

Đầu tiên, tạo một bảng có tên

ALTER TABLE table_name MODIFY column_name DATA TYPE NOT NULL;
14

ALTER TABLE SinhVien MODIFY HoTen VARCHAR[255] NOT NULL;
4

Thứ hai, chèn một số hàng vào bảng

ALTER TABLE table_name MODIFY column_name DATA TYPE NOT NULL;
14

ALTER TABLE SinhVien MODIFY HoTen VARCHAR[255] NOT NULL;
6

Thứ ba, sử dụng toán tử

SELECT 1 IS NULL,  -- 0
       0 IS NULL,  -- 0
       NULL IS NULL; -- 1
3 để chọn các hàng có giá trị trong cột
ALTER TABLE table_name MODIFY column_name DATA TYPE NOT NULL;
17 là
ALTER TABLE table_name MODIFY column_name DATA TYPE NOT NULL;
12

ALTER TABLE table_name MODIFY column_name DATA TYPE;
0

Ảnh hưởng của biến @@sql_auto_is_null

Nếu biến

ALTER TABLE table_name MODIFY column_name DATA TYPE NOT NULL;
19 được đặt thành 1, bạn có thể nhận giá trị của cột auto_increment sau khi thực hiện một câu lệnh
ALTER TABLE table_name MODIFY column_name DATA TYPE NOT NULL;
40 bằng cách sử dụng toán tử
SELECT 1 IS NULL,  -- 0
       0 IS NULL,  -- 0
       NULL IS NULL; -- 1
3

Chủ Đề