- 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
MSSVHoTenNamSinhGioiTinhThanhPhoINSERT 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;
5IS 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ố 8Nế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 falseLư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à 0Vì
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
];
41Xem 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
];
43CREATE TABLE SinhVien[
MSSV INT NOT NULL,
HoTen VARCHAR[255],
NamSinh YEAR,
GioiTinh VARCHAR[10] NOT NULL
];
4Biể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;
1Cá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ễnTruy 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àngALTER TABLE table_name MODIFY column_name DATA TYPE NOT NULL;
4Ví 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;
6MySQL 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
3Xử 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;
14ALTER TABLE SinhVien MODIFY HoTen VARCHAR[255] NOT NULL;
4Thứ hai, chèn một số hàng vào bảng
ALTER TABLE table_name MODIFY column_name DATA TYPE NOT NULL;
14ALTER TABLE SinhVien MODIFY HoTen VARCHAR[255] NOT NULL;
6Thứ 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;
12ALTER 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