mysql--随笔-CHAR与VARCHAR,not null 约束

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

mysql> INSERT INTO employee(id,name,phone,in_dpt,remark) VALUES(04,'Mim',110119,'dpt2','aa'); 
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。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值