谢邀
mysql> create table song(id int,name varchar(10));
Query OK, 0 rows affected (0.02 sec)
mysql> insert into song (id) values(10);
Query OK, 1 row affected (0.02 sec)
mysql> select * from song;
+------+------+
| id | name |
+------+------+
| 10 | NULL |
+------+------+
1 row in set (0.00 sec)
mysql> alter table song modify column name varchar(10) not null;
Query OK, 1 row affected, 1 warning (0.06 sec)
Records: 1 Duplicates: 0 Warnings: 1
mysql> insert into song (id) values(100);
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> select * from song;
+------+------+
| id | name |
+------+------+
| 10 | |
| 100 | |
+------+------+
2 rows in set (0.00 sec)
mysql> show variables like '%sql_mode%';
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| sql_mode | NO_ENGINE_SUBSTITUTION |
+---------------+------------------------+
1 row in set (0.01 sec)
mysql> set global sql_mode='STRICT_ALL_TABLES';
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
[root@10-19-187-240 ~]# mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11157
Server version: 5.6.35-debug-log Source distribution
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> insert into song (id) values(20);
ERROR 1364 (HY000): Field 'name' doesn't have a default value
mysql>