1. 空属性
共有两个值 null/not null
虽然默认数据库的字段基本都为空,但是实际上在真正开发的时候,要尽可能的保证数据不为空,因为空数据没有意义,也没办法参与运算。
mysql> create table if not exists my_class( -> grade varchar(20) not null, -> room varchar(20) null -> )charset utf8; Query OK, 0 rows affected mysql> desc my_class; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | grade | varchar(20) | NO | | NULL | | | room | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set
2.列描述
列描述:comment
,表示描述,没有实际含义,是专门用来描述字段的,其会随着表创建语句自动保存,用来给程序员(数据库管理员)了解数据库使用。
mysql> create table my_friend( -> name varchar(20) not null comment '姓名', -> age tinyint not null comment '年龄' -> )charset utf8; Query OK, 0 rows affected mysql> desc my_friend; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | name | varchar(20) | NO | | NULL | | | age | tinyint(4) | NO | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set mysql> show create table my_friend; +-----------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-----------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ | my_friend | CREATE TABLE `my_friend` ( `name` varchar(20) NOT NULL COMMENT '姓名', `age` tinyint(4) NOT NULL COMMENT '年龄' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-----------+-------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set
3.默认值
默认值:default
,某一数据会经常性出现某个具体的值,因此可以在开始的时候就指定好,而在需要真实数据的时候,用户可以选择性的使用默认值。
mysql> create table my_default( -> name varchar(20) not null, -> age tinyint unsigned default 0, -> gender enum('男','女') default '男' -> )charset utf8; Query OK, 0 rows affected mysql> desc my_default; +--------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+---------------------+------+-----+---------+-------+ | name | varchar(20) | NO | | NULL | | | age | tinyint(3) unsigned | YES | | 0 | | | gender | enum('男','女') | YES | | 男 | | +--------+---------------------+------+-----+---------+-------+ 3 rows in set
在列属性Default
中已经展示了age
和gender
字段的默认值,说明设置成功
下面演示如何使用默认值(不给设置默认值的字段赋值或者用default
代替相应的字段值。)
mysql> insert into my_default (name) values ('Charies'); Query OK, 1 row affected mysql> insert into my_default values ('Guo',18,default); Query OK, 1 row affected mysql> select * from my_default; +---------+-----+--------+ | name | age | gender | +---------+-----+--------+ | Charies | 0 | 男 | | Guo | 18 | 男 | +---------+-----+--------+ 2 rows in set