MySQL中的字段可以存儲(chǔ)各種類型的數(shù)據(jù),例如文本、數(shù)字、日期等等。但是,在有些情況下,我們可能需要在數(shù)據(jù)庫中存儲(chǔ)“沒有值”的情況,這時(shí)就需要使用NULL值。NULL表示沒有值,而不是0或者空字符串。
在MySQL中,如果一個(gè)字段沒有值,那么可以將其設(shè)置為NULL。例如,我們可以創(chuàng)建一個(gè)students表,其中某個(gè)學(xué)生的出生日期未知,可以這樣定義表:
CREATE TABLE students (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
birthday DATE DEFAULT NULL,
PRIMARY KEY (id)
);
在這個(gè)例子中,我們定義了一個(gè)students表,其中birthday字段默認(rèn)為NULL。當(dāng)我們向這個(gè)表插入數(shù)據(jù)時(shí),如果不知道某個(gè)學(xué)生的生日,就可以使用NULL值:
INSERT INTO students (name, birthday)
VALUES ('張三', NULL);
在查詢這個(gè)表的數(shù)據(jù)時(shí),我們可以使用IS NULL或IS NOT NULL謂詞來過濾NULL值:
SELECT *
FROM students
WHERE birthday IS NULL;
這將返回所有birthday字段為空的學(xué)生數(shù)據(jù)。
在MySQL中,也可以使用IFNULL函數(shù)來處理NULL值。IFNULL函數(shù)接受兩個(gè)參數(shù),如果第一個(gè)參數(shù)為NULL,那么返回第二個(gè)參數(shù),否則返回第一個(gè)參數(shù)。例如:
SELECT name, IFNULL(birthday, '未知')
FROM students;
這將返回一張學(xué)生表,其中的birthday字段為空的學(xué)生使用字符串“未知”代替。