本篇主要介绍有关于MySQL中列属性的相关知识点。
在MySQL中,真正约束字段的是数据类型,但是数据类型的约束很单一,这个时候就需要一些额外的约束来更加保证数据的合法性。
列的属性有,NULL/Not NULL,default,primary key,auto_increment,comment等。
空属性
空属性有两个取值,分别是NULL,NOT NULL。其中默认值是空(NULL)。空数据没有意义。任何参与NULL运算的结果都是NULL。
create table my_class(
name varchar(20) not null,
room varchar(20) not null,
size int
) charset utf8;
列描述
列描述(comment),又可以称之为注释,没有实际含义,是专门用来描述字段的。
create table my_teacher(
name varchar(20) not null comment '姓名',
money decimal(10,2) not null comment '工资'
)charset utf8;
默认值
当数据库中表的某一个字段属性经常性的出现某一个具体的值,此时可以为此字段设置默认值。而在需要真实数据的时候可以选择性的修改字段的具体值。
create table my_default(
name varchar(20) not null,
age tinyint unsigned default 0,
gender enum('男','女','保密') default '男'
)charset utf8;
主键属性
主键(primary key),一张表中只能有一个字段使用对应的键,用来唯一的约束字段里面的数据,主键不能重复。
一张表中只能有最多一个主键(复合主键除外)。为一张表增加主键有3种方式。
1.在创建表的时候直接在字段之后使用primary key关键字。主键不能为空,但此方式只能使用一个字段作为主键。
create table my_pri1(
name varchar(20) not null comment '姓名',
number char(10) primary key comment '学号,不能重复'
)charset utf8;
2.在创建表的时候在有的字段之后,使用primary key(字段列表)的方式创建复合主键。
create table my_pri2(
number char(10) comment '学号',
course char(10) comment '课程代码',
score tinyint unsigned default 60 comment '成绩',
-- 增加主键限制,一个学号和一个课程只有一个成绩
primary key(number,course)
)charset utf8;
3.当表已经创建好之后,再次增加主键可以通过修改表字段的属性,也可以直接追加.
-- 追加主键
create table my_pri3(
course char(10) not null comment '课程编号',
name varchar(10) not null comment '课程名字'
)charset utf8;
-- 下面是两种方式来追加主键
alter table my_pri3 modify course char(10) primary key comment '课程编号';
alter table my_pri3 add primary key(course);
删除主键
alter table my_pri1 drop primary key;
注意主键对应的字段中的数据不允许重复,一旦重复,数据操作(数据的增改)将失败。
自动增长
自动增长通常是跟主键进行搭配,一般而言,声明为自动增长属性的字段,插入数据的时候系统会自动的在当前最大值的基础上对指定的数据+1.
自动增长(auto_increment)有几个必要的条件。
1.任何一个字段要做自动增长的前提是本身是一个索引(key一栏有值)。
2.自动增长必须是数字而且是整型。
3.一张表只能有一个自增长,自动增长的起始默认值是1
create table my_auto(
id int primary key auto_increment comment '自动增长',
name varchar(10) not null
)charset utf8;
修改自动增长的步长:
set auto_increment_increment=5;
删除字段的自动增长的属性:
alter table my_auto modify id int;
唯一键
一张表中往往有很多的数据具有唯一性,数据之间不能重复。唯一键解决了主键不能满足多个字段的唯一性的问题。
create table my_uniquel(
number char(10) unique comment '学号唯一,可以为空',
name varchar(20) not null
)charset utf8;
当然唯一键也可以通过追加的方式来设置,但此时的键会显示成主键(因为满足了唯一性和数字型的条件)。
修改的方式来添加主键。alter table my_unique add unique key(number);
删除主键: