1.
从实验楼上看到
char 与 varchar的区别:char的长度是固定的,比如char(20),存储“eee”,占用的还是20个字节。
varchar(20)长度是可变的,比如varchar(20),存储“eee”,占用的是4个字节,增加一个字节来存字符串本身的长度。
2.
关于 not null
在MySQL中违反非空约束,不会报错,只会有警告
表结构如下:
mysql> desc employee;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(10) | NO | PRI | NULL | |
| name | char(20) | YES | | NULL | |
| age | int(10) | YES | | NULL | |
| salary | int(10) | NO | | NULL | |
| phone | int(12) | NO | UNI | NULL | |
| in_dpt | char(20) | NO | MUL | NULL | |
| remark | varchar(50) | NO | | NULL | |
+--------+-------------+------+-----+---------+-------+
执行sql语句:
针对varchar型的“remark” 的not null
mysql> INSERT INTO employee(id,name,salary,phone,in_dpt) VALUES(03,'Jim',3400,119119,'dpt2');
Query OK, 1 row affected, 1 warning (0.02 sec)
只报出了警告,但数据插入进去了。
mysql> select * from employee;
+----+------+------+--------+--------+--------+--------+
| id | name | age | salary | phone | in_dpt | remark |
+----+------+------+--------+--------+--------+--------+
| 3 | Jim | NULL | 3400 | 119119 | dpt2 | |
+----+------+------+--------+--------+--------+--------+
从上表可以看出,“remark”为空。
针对int型的“salary” 的not null
Query OK, 1 row affected, 1 warning (0.02 sec)
只报出了警告,但数据插入进去了。
mysql> select * from employee;
+----+------+------+--------+--------+--------+--------+
| id | name | age | salary | phone | in_dpt | remark |
+----+------+------+--------+--------+--------+--------+
| 3 | Jim | NULL | 3400 | 119119 | dpt2 | |
| 4 | Mim | NULL | 0 | 110119 | dpt2 | aa |
+----+------+------+--------+--------+--------+--------+
从上表可以看出,“salary”为0,同时也可以看到可以为null的“age”的值为null。