数据库字段属性和索引
字段属性
主键,唯⼀值和⾃增长
⼀、主键
主键:primary key ,主要的键,⼀张表只能有⼀个字段可以使⽤对应的键,⽤来唯⼀的约束该字段⾥⾯的数据,不能重复,这种称之为主键。
1.增加主键
SQL操作中有多种⽅式可以给表增加主键:⼤体分为三种
⽅案1:在创建表的时候,直接在字段之后,跟primary key 关键字(主键本⾝不允许为空)
例如:创建表course,设置主键为Cname
create table course(
-> id varchar (20) not null comment ‘课程号’,
-> Cname varchar (20) primary key comment ‘课程名’
-> ) charset utf8;
优点:⾮常直接;缺点:只能使⽤⼀个字段作为主键。
⽅案2:在创建表的时候,在所有的字段之后,使⽤primary key(主键字段列表)来创建主键(如果有多个字段作为主键,可以使复合主键)
复合主键
create table sc(
number char(10) comment ‘学号’,
course char(10) comment ‘课程代码’,
score tinyint unsigned default 60 comment ‘成绩’,
–增加主键限制:学号和课程号应该是对应的,具有唯⼀性
primary key(number,course)
)charset utf8;
⽅案3:当表已经创建好后,再次额外追加主键,可以通过修改表字段属性,也可以直接追加。
Alter table 表名 add primary key (字段列表)
前提:表中字段对应的数据本⾝是独⽴的(不重复)
2、主键约束
主键对应的字段的数据不允许重复,⼀旦重复,数据操作失败(增和改)
向student插⼊数据
insert into test_student values(‘itcast001’,‘王⼆’,‘男’),(‘itcast002’,‘吴三’,‘⼥’);
insert into sc values(‘itcast001’,‘3901001’,90),(‘itcast002’,‘3901002’,100);
insert into test_student values(‘itcast002’,‘刘四’,‘⼥’);
insert into sc values(‘itcast001’,‘3901001’,100);
操作失败
3、更新主键&删除主键
没有办法更新主键,逐渐必须先删除后才能添加
Alter table 表名 drop primary key
删除⼀个主键
alter table ccc drop primary key;
4、主键分类
在实际创建表的过程中,很少使⽤真是业务数据作为主键字段(业务主键,如学号,课程号);
⼤部分的时候是使⽤逻辑性的字段(字段没有业务含义,值是什么没有关系),将这种字段主键称之为逻辑主键。
create table my_student(
id int primary key auto_increment comment ‘逻辑主键:⾃增长’,
number char(10) not null comment ‘学号’,
name varchar(10) not null
)
⼆、⾃动增长
数据库属性的概念1、新增⾃增长:当对应的字段,不给值或者说给默认值,或者给null的时候,会⾃动的被系统触发,系统会从当前字段中已有的最⼤值再进⾏+1操作,得到⼀个新的在不同的字段
⾃增长特点:auto_increment
1、任何⼀个字段都要做⾃增长必须前提是本⾝是⼀个索引(key⼀栏有值)
2、⾃增长字段必须是数字(整型)
3、⼀张表最多只能有⼀个⾃增长
create table my_auto(
id int auto_increment comment ‘⾃动增长’ ,
name varchar(10) not null
)charset utf8;
错误
改正为
create table my_auto(
id int primary key auto_increment comment ‘⾃动增长’ , name varchar(10) not null
)charset utf8;
2、⾃增长的使⽤:
当⾃增长被给定的值为null或者默认值的时候会触发⾃动增长
insert into my_auto(name) values (‘邓丽君’);
insert into my_auto values(null,‘⼀⼀’);
insert into my_auto values(default ,‘张韬’);
增长(从最⼤值+1)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论