数据库——(5)列属性

来源:互联网 发布:淘宝拒签后 退款 编辑:程序博客网 时间:2024/06/16 18:11

列属性
列属性:真正约束字段的是数据类型,但是数据类型的约束很单一需要一些额外的约束来更加保证数据的合法性。有以下属性:

1.空属性:NULL(默认)和NOT NULL(不为空)。
虽然默认的数据库基本都是字段为空,都是在实际开发的时候,尽可能保证所有的数据都不应该为空,因为空数据没有意义,空数据没有办法参与计算。

create table my_teacher(name varchar(20) not null )charset utf8;

2.列描述:comment
没有实际意义:专门用来描述字段,会根据表创建语句保存:用来给程序员(数据库管理员)来进行了解的。

create table my_teacher(name varchar(20) not null comment '姓名')charset utf8;

3.默认值:default
某一种数据会经常性的出现某个具体的值,可以一开始就指定,在需要真实数据的时候,用户可以选择性的使用默认值。

create table my_teacher(money decimal(10,2) not null default 0)charset utf8;

4.主键:primary key
主要的键,一张表只能有一个字段可以使用对应的键,用来唯一约束该字段里面的数据,不能重复。
1)增加主键的方式大体分三种:
方案1:在创建表的时候直接在字段后面加上primary key

create table my_teacher(tid char(10) primary key comment '编号')charset utf8;

优点:非常直接;缺点:只能使用一个字段作为主键。
方案2:创建表的时候,在所有的字段之后使用primary key(主键字段列表)来创建主键(如果有多个字段作为主键,可以是复合主键)

create table my_stu(sid char(10) comment '学号',course char(10) comment '课程号',score tinyint unsigned default 60 comment '成绩',-- 增加主键限制:学号和课程号应该是对应的,具有唯一性primary key(sid,course))charset utf8;

方案3:当表创建好之后,再次额外增加主键,可以通过修改字段属性,也可以直接追加。
Alter table 表名 add primary key(字段列表);

create table my_pri(course char(10)not null comment '课程号',name varchar(10)not null comment '姓名')charset utf8;alter table my_pri add primary key(course);

前提:表中字段对应的数据本身不重复

2)主键约束:主键对应的字段中的数据不允许重复,一旦重复,数据操作失败(增和改)。
3)删除主键:alter table 表名 drop primary key;
4)主键分类:在实际创建表的过程中,大部分时候使用逻辑性的字段(没有业务含义)作为主键。

5.自动增长:auto_increment
当对应的字段不给值或者默认值的时候,系统会从当前字段中已有的最大值再进行+1操作,得到一个新的不同的字段,自增长通常和主键搭配。
特点:

1.任何一个字段要做自增长必须前提是本身是一个索引(key一栏有值)。2.自增长字段必须是数字而且是整型。

修改自增长:alter table 表名 auto_increment = 值;
查看自增长对应的变量:show variables like ‘auto_increment%’;
修改自增长步长:set auto_increment _increment = 5;
删除自增长:alter table 表名 modify 字段名 数据类型;

6.唯一键:unique key
一张表往往很多字段需要具有唯一性,数据不能重复:但一张表中只能有一个主键;唯一键可以解决表中多个字段需要唯一性约束的问题
唯一键的本质与主键差不多:唯一键默认的允许为空,而且可以允许多个为空(空字段不参与唯一键比较)。
1)增加唯一键:三种方案
方案1:在创建表的时候,字段之后直接跟上unique key/unique

create table my_unique1(number char(10) unique comment '学号')charset utf8;

方案2:在所有的字段之后增加unique key(字段列表); –复合唯一键

create table my_unique2(number char(10) not null comment '学号',name varchar(10) not null,unique key(number))charset utf8;

执行desc my_unique2;
结果:这里写图片描述
注意这里不是主键,之所以显示PRI是因为刚好是一个不为空的唯一键(和主键性质一样):根本原因是该表没有主键。

方案3:在创建表之后增加唯一键

create table my_unique3(id int primary key auto_increment,number char(10) not null comment '学号',name varchar(10) not null)charset utf8;alter table my_unique3 add unique key(number);

2)唯一键约束
唯一键与主键本质区别是唯一键允许为空,而且是允许多个为空。
如果唯一键不允许为空,那么与主键的约束一样。
3)更新唯一键&删除唯一键
更新唯一键:先删除后新增,(唯一键可以有多个,所以可以不删除)。
删除唯一键:alter table 表名 drop index 索引名字;– –唯一键默认使用字段名作为索引名字。