MySQL 是一個流行的開源關系型數據庫管理系統,但是有時候我們會遇到奇怪的問題,例如查不到給默認值。下面將詳細介紹這個問題。
當我們定義一個表時,可以在字段中設置默認值,表示如果插入記錄時沒有填寫該字段的值,則使用默認值。例如:
CREATE TABLE student( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT DEFAULT 20, gender CHAR(1) DEFAULT 'M' );
在這個表中,如果插入一條記錄時沒有填寫 age 或 gender 字段的值,則會使用默認值 20 和 M 。
但是,有時候我們會發現 SELECT 查詢結果中,某些記錄的 age 或 gender 字段并沒有顯示默認值,而是顯示 NULL 。例如:
mysql>SELECT * FROM student; +----+--------+------+--------+ | id | name | age | gender | +----+--------+------+--------+ | 1 | Alice | 18 | F | | 2 | Bob | NULL | M | | 3 | Cathy | 22 | NULL | +----+--------+------+--------+
我們希望 Bob 的 age 和 Cathy 的 gender 顯示默認值,而不是 NULL 。那么,如何解決這個問題呢?
原因是,如果插入操作中沒有明確指定某個字段的值,MySQL 會將該字段的值設置為 NULL ,而不是默認值。因此,如果想要讓 age 或 gender 顯示默認值,需要執行以下 SQL 語句:
UPDATE student SET age=DEFAULT WHERE age IS NULL; UPDATE student SET gender=DEFAULT WHERE gender IS NULL;
這樣,在 SELECT 查詢結果中,Bob 的 age 和 Cathy 的 gender 就會顯示默認值了。
綜上所述,查不到給默認值是 MySQL 中的一個奇怪問題,如果遇到這個問題,需要使用 UPDATE 語句手動將 NULL 改成默認值。
下一篇mysql查不出加號