浅析MySQL中列属性

本篇主要介绍有关于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);

删除主键:
这里写图片描述

发布了123 篇原创文章 · 获赞 47 · 访问量 14万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章