一、列属性概述
1、真正约束字段的是数据类型,但数据类型的约束很单一,需要一些额外的约束,来更加保证数据的合法性
2、属性是描述表中字段的,一开始就定义好了,不是使用过程中才有的
3、列属性又称之为字段属性。在MySQL中,一共有6个列属性:null/not null、comment、default、primary key、auto_increment、unique key
二、空属性
1、空属性有两个值:null(默认)、not null(不为空)
2、数据库的字段基本都默认为空。但在实际开发中,要尽可能保证所有的数据都不为空。因为空数据没有意义,且空数据无法参与运算
注:任何数据碰到null的结果都是null,null没有意义
-- 创建表
create table my_class(
name varchar(20) not null,
room varchar(20) null -- null代表允许为空。不写默认就是允许为空
)charset utf8;
-- 查看表结构
desc my_class;
三、列描述
1、列描述:comment。没有实际意义,是专门用来描述字段的,是帮助开发人员进行维护的注释说明
2、列描述会跟随表创建语句保存,通过查看表创建语句查看列描述
注:和注释的不同之处在于:注释不会写入表中
-- 创建表
create table my_teacher(
name varchar(20) not null comment '姓名',
money decimal(10, 2) not null comment '工资'
)charset utf8;
-- 查看表结构
desc my_teacher;
-- 查看表创建语句,查看列描述
show create table my_teacher;
3、列描述comment存在的价值就是给别人也给自己提供方便,让以后再查看表的人可以很清楚的看到当前字段设计者的用意是什么
四、默认值
1、默认值:default。某一种数据会经常性的出现某个具体的值,可以在一开始就指定好。在需要真实数据的时候,用户可以选择性的使用默认值。或者是 字段被设计时,如果允许默认条件下用户不进行数据的插入,那么就可以使用默认值进行填充,通常填充的是null
-- 创建表
create table my_default(
name varchar(20) not null,
age tinyint unsigned default 0, -- default是默认值
gender enum('男', '女', '保密') default '男'
)charset utf8;
-- 查看表结构
desc my_default;
2、使用默认值
(1)在进行数据插入的时候,不给该字段赋值,就会使用默认值(省略带有默认值的字段)
-- 插入数据,使用默认值(省略带有默认值的字段)
insert into my_default (name) values ('小强');
(2)使用default关键字代替值(使用带有默认值的字段,但其值用default代替),显式告知字段使用默认值
注:如果字段很多,为了一个字段不要(默认值)而写了很多字段,得不偿失。但又想让这个字段使用默认值,此时就可以使用default关键字来触发默认值
-- 插入数据,使用默认值(使用带有默认值的字段,但其值用default代替)
insert into my_default values ('张三', 18, default);
五、主键
1、主键:primary key。一张表只能有一个字段可以使用主键,用来唯一的约束该字段里面的数据不能重复。即 一张表最多只能有一个主键(非空、唯一)
2、增加主键
SQL操作中有三种方式可以给表增加主键
(1)方式一:在创建表的时候,直接在字段之后跟"primary key"关键字(主键本身不能为空)
-- 增加主键
create table my_pri1(
name varchar(20) not null comment '姓名',
number char(10) primary key comment '学号:itcast + xxxx,不能重复'
)charset utf8;
-- 查看表结构
desc my_pri1;
注:此方式的优缺点:
a). 优点: