MySQL 字段属性(约束)

在字段类型之后,用于对当前字段进行一系列的约束的内容(现在内容的情况)

字段属性:null/not null,primary key,auto_increment,unique key,comment,default

Null:表示字段的值可以为空(在进行数据插入的时候,该字段可以不给数据),notnull表示不能为空,必须要给定值(不能是null)

Default:默认值,系统给出最多的值是default null

尽量不要让字段允许为空,因为数据往往需要有值才有意义。

 

使用default关键字来显示使用系统的默认值

 

Primary key

主键,主要的键,用主键修饰的字段,该字段具有唯一性(不能重复)

1.      一张表最多只能一个主键

2.      主键字段不能为空

 

如何给表添加主键?

1.      在创建表的时候,直接在某个字段后添加主键

2.      在表后面增加primary key语句,来包含对应的主键字段

使用该方式,可以使用复合主键(可以使用多个字段共同组成主键)

3.      可以通过修改表结构增加主键

语法:alter table 表名 add primary key(字段列表)

前提:当前表的数据中,字段唯一

PRI代表主键 primary key就是主键

 

修改主键:主键不能被修改。

修改:先删除后增加

删除主键:alter table 表名 drop primary key

 

查看复合主键

 

desc 表名查询表结构

当出现两个PRI的时候

不代表有两个主键,代表由两个字段共同组成复合主键

 

Alter table 表名 add 字段 int  primary key first;

因为字段插入之后,由于数据表的记录有3,系统经过5语句读取之后,发现不能为空,是整型,所以默认值为0,但是有三个0,所以记录重复,因此主键插入失败

 

Alter table 表名 add 字段 int  primary key auto_increment first;

与上面一样,但是多了一个auto_increment auto_increment属性,能够自动为主键自增,而且是从1开始,每次自增1,最终字段的值应该为1,2,3

 

Auto_increment

自动增长

1.      字段必须是整型

2.      必须保证使用自动增长的字段首先满足的一个条件:是一个索引字段

3.      一个表只能有一个自动增长

4.      自动增长通常是配合逻辑主键(id int primary key auto_increment)

 

自动增长在使用后会出现表的选项里,而且其值为下一条要自增的字段的值

 

修改自动增长的值

 

Alter table 表名 auto_increment =

不能修改为已经存在的值

 

不存在的值可以修改

 

如果小于自动增长的值,都不能修改

 

注意:auto_increment 的值的修改,被修改的新值,必须要比当前表中已经存在的自增长的值要大

 

查看自增长控制变量

 

Show variables like ‘auto_increment%’;

 

可以通过修改自增长配置来实现自增长的控制

 

Unique key

唯一键,字段的值不能重复

1.      一张表唯一键可以有多个

2.      唯一键不对null进行处理

 

如果添加唯一键?

 

跟主键的添加方式基本相同

1.      在字段之后直接跟unique key

2.      在表的所有字段之后,使用unique key(字段列表)

3.      在修改表结构的时候增加唯一键:alter table 表名 add unque key(字段列表)

 

注意:当唯一键不允许为空之后,就变成了主键

 

如果表中的存在多个唯一键并且都不为空,只有第一个不为空的唯一键变成主键,其它还是唯一键

 

唯一键转主键:

1.      该唯一键不能为空

2.      改唯一键是第一个不为空的唯一键

 

唯一键不回去区分null字段

 

删除唯一键:

 

Alter table 表名 drop unique key(字段列表); -- 错误

唯一键与主键不同,主键一张表只有一个,而唯一键可能有多个,所谓唯一键的删除,需要额外的指定要删除的唯一键的名字

语法:alter table 表名 drop index 唯一键名字/字段名

 

Comment

注释,是一种字段说明,会永远的保存在表的创建语句中

注释:表示当前代码是注释,不用执行,在语句执行之后,会被忽略掉

1.      两个中划线跟一个空格,行注释

2.      #也是一种行注释

3.      块注释:/**/

你可能感兴趣的:(MYSQL,mysql,数据库)