跳到主要内容

二十八、MySQL NULL 值处理

我们在创建表的时候可以让某个字段为空,比如下面的创建 tbl_language 的语句

CREATE TABLE IF NOT EXISTS tbl_language(
id INT UNSIGNED AUTO_INCREMENT,
name VARCHAR(64) NOT NULL,
url VARCHAR(128) NOT NULL,
founded_at DATE,
PRIMARY KEY ( id )
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

因为founded_at 没有明确指明 NOT NULL ,所以它是可以为空的

然后我们运行下面的语句插入数据

truncate tbl_language;
INSERT INTO tbl_language VALUES
(1,'Python','https://pottercoding.cn','1991-2-20'),
(2,'PHP','http://www.php.net','1994-1-1'),
(3,'Ruby','https://www.ruby-lang.org/','1996-12-25'),
(4,'Kotlin','http://kotlinlang.org/','2016-02-17');
INSERT INTO tbl_language (name,url) VALUES
('Perl','http://www.perl.org/'),
('Scala','http://www.scala-lang.org/');

使用不带 WHERESELECT 语句可以看到 6 条记录

MariaDB [souyunku]>` SELECT * FROM  tbl_language;
+----+--------+----------------------------+------------+
| id | name | url | founded_at |
+----+--------+----------------------------+------------+
| 1 | Python | https://pottercoding.cn | 1991-02-20 |
| 2 | PHP | http://www.php.net | 1994-01-01 |
| 3 | Ruby | https://www.ruby-lang.org/ | 1996-12-25 |
| 4 | Kotlin | http://kotlinlang.org/ | 2016-02-17 |
| 5 | Perl | http://www.perl.org/ | NULL |
| 6 | Scala | http://www.scala-lang.org/ | NULL |
+----+--------+----------------------------+------------+