目录
列属性
简单属性
null属性
默认值
列描述
主键
创建主键
查看主键
删除主键
主键约束
主键分类
自动增长
原理
使用自动增长
修改自动增长
删除自动增长
初始设置
细节问题
唯一键
创建唯一键
查看唯一键
删除唯一键
修改唯一键
复合唯一键
列属性又称为字段属性,在mysql中共有6个属性,null,默认值,列描述,主键,唯一键和自动增长
null属性,代表字段为空
如果对应的值为YES表示该字段可以为空值
注意:
在设计表的时候,尽量不要让数据为空
default:默认值,当字段被设计的时候,如果允许默认条件下,用户不进行数据的插入,那么就可以使用事先准备好的数据来填充,通常填充的是NULL
测试:不给当前字段提供插入值
从图中可以发现age字段使用默认值18进行填充
default关键字的另外一层使用,显示的告知字段使用默认值,在进行数据插入的时候,对字段值直接使用default
comment:专门用于给开发人员进行维护的一个注释说明
基本语法:
comment 字段描述;
查看comment,必须通过查看表创建语句
顾名思意,主要的键,primary key,在一张表中,有且只有一个字段,里面的值具有唯一性
随表创建
系统提供了两种增加主键的方式
方案一:直接在需要当作主键的字段之后,增加primary key属性来确定主键
方案二:在所有字段之后增加primary key选项,primary key(字段信息)
表后增加
基本语法:
alter table 表名 add primary key(字段);
方案一:查看表结构
方案二:查看表的创建语句
基本语法:
alter table 表名 drop primary key;
复合主键
案例:有一张学生选修课表,一个学生可以选修多个选修课,一个选修课也可以由多个学生来选,但是一个学生在一个选修课中只有一个成绩。
主键一般用在中间表,学生有学生表,课程有课程表,学生与课程的中间表my_score就用复合主键
主键一旦增加,那么对对应的字段有数据要求
1、当前字段对应的数据不能为空;
2、当前字段对应的数据不能有任何重复;
数据重复后报错:
主键分类采用的是主键所对应的字段业务意义分类
业务主键:主键所在的字段,具有业务意义(学生ID,课程ID)
逻辑主键:自然增长的整型(应用广泛)
自动增长,auto_increment,当给定某个字段该属性之后,该列的数据在没有提供确定数据的时候,系统会根据之前已经存在的数据进行自动增加后填充。
通常自动增长用于逻辑主键。
1、系统中有维护一组数据用来保存当前使用了自动增长属性的字段,记住当前对应的数据值,再给定一个指定的步长;
2、当用户进行数据插入的时候,如果没有给定值,系统在原始值上再增加上步长变成新的数据;
3、自动增长的触发,给定属性的字段没有提供值;
4、自动增长只适用于数值;
基本语法:
在字段之后增加一个属性auto_increment
1、查看自增长,自增长一旦触发之后,会自动的在表选项中增加一个选项(一张表最多只能拥有一个自增长)
2、表选项可以通过修改表结构来实现
基本语法:
alter table 表名 auto_increment=数值;
删除自增长,就是在字段属性之后不再保留auto_increment,当用户修改自增长所在字段时,如果没有看到auto_increment属性,系统会自动清除该自增长
在系统中,有一组变量用来维护自增长的初始值和步长
1、一张表只有一个自增长,自增长会上升到表选项中
2、如果数据插入中没有触发自增长(给定了数据),那么自增长不会表现
3、自增长修改的时候,值可以较大,但是不能比当前已有的自增长字段的值小
unique key,用来保证对应的字段中的数据唯一的
主键也可以用来保证数据唯一性,但是一张表只有一个主键
1、唯一键在一张表中可以有多个
2、唯一键允许字段数据为NULL,NULL可以有多个(NULL不参与比较)
创建唯一键与创建主键非常类似
1、直接在表字段之后增加唯一键标识符,unique [key];
-- 唯一键
create table my_unique1(
id int primary key auto_increment,
username varchar(10) unique
)charset utf8;
2、在所有的字段之后使用unique key(字段列表);
create table my_unique2(
id int primary key auto_increment,
username varchar(10),
unique key(username)
)charset utf8;
3、在创建完表之后也可以增加唯一键;
alter table 表名 add unique key(字段列表);
唯一键效果:在不为空的情况下不允许重复
在查看表创建语句的时候,会看到与主键不同的一点:多出一个“名字”
index:关键字,唯一键是索引的一种(提升查询效率)
基本语法:
alter table 表名 drop index 唯一键名字;
先删除后增加
唯一键与主键一样,可以使用多个字段共同保证唯一性
一般主键都是单一字段(逻辑主键),而其他需要唯一性的内容都是由唯一键来处理