跟在字段类型后面,用来修饰字段的一些额外的信息。
my SQL 的字段属性:null/not null,default,primary key,unique key,comment,auto_increment
null/not null:表示字段数据可以或者不可以为空
在创建表,如果没有给指定字段添加not null,默认是可以为空
一旦数据有不能为空的,那么就必须插入值
可以为空的数据,在进行数据插入时,可以不插入数据
通常不会让一个数据为空,因为空数据没有任何意义。
如果不想使用空数据,通常是搭配default,默认值使用
default:表示字段的默认值
语法:default ‘默认值’
1.不给有默认值的字段添加值
2.在需要使用默认值的字段值处,使用default关键字
如果没有为字段指定默认值,系统默认字段默认值为空(除非指定了not null)
primary key:一张表的 主键 ,一张表只能有一个,主键值不能为空
用来严格区分记录的唯一性,其次提升查询的效率,主键是一个 索引
如何给表添加主键?
1.与其他属性一样,创建表时在字段后面添加(添加之前必须保证该字段的所有值不重复)
主键说明
效果
2.创建表时,单独指定主键
语法:primary key(字段名,字段名) —–》复合主键 primary key(id)
主键说明
效果
3.主键添加,通过修改表的形式
表中没有主键,而又希望添加一个主键,如表中有一个ID并未重复
alter table 表名 modify id int primary key;– 通过修改表属性来设定主键
alter table 表名 add primary key (字段名,字段名); — 通过添加主键形式
删除主键:
语法:alter table 表名 drop primary key;
如果想实现换字段做主键:先删除已有主键—》添加一个新主键
unique key:唯一键,表示当前字段的值不能重复,可以为空,空不在判断范围之内
一张表只能有一个主键,但是又有可能存在其他字段不允许重复,就使用unique key
语法:
1.unique key的添加语法与primary key的添加基本一致
2.也可以使用表字段后面添加唯一键
unique key (字段列表) – 与主键一样,可以创建复合唯一键
3.采用修改表的形式添加唯一键
unique key不能比较null,所以里面可以插入多个null值
唯一键的约束效果
删除unique key:
语法:alter table 表名 drop unique key; — 错误的语法
原因:primarykey具有唯一性,有额外的权限,而unique key可能存在多个,而且其权限没有那么高。mysql没有提供专门的删除唯一键的语法,把唯一键当做普通索引处理的。
alter table 表名 drop index 索引名
对于单字段唯一键,索引名使用是就是对应的字段名
索引名称不能使用单引号,只能使用反引号
如果想指定索引名字
unique key ‘索引名字’ (字段);
comment:注释,写字表的创建语句里面,用于其他人去查看表的时候方便理解
SQL中支持的注释有三种
— :两个中划线+一个空格,表示,当前行空格后面的内容为注释,sql执行的时候请忽略
#:当前行后面的代码为注释,请忽略
/**/:块注释,内部的所有内容为注释,请忽略掉
comment:是一个属性,表示里面内容是注释,不需要执行
注释会被忽略掉,而comment属性会被保留
auto_increment:自动增长,要求是整型,一张表只有一个自动增长,自动增长的字段必须是索引字段
一般情况下,自动增长都是搭配主键使用。
自动增长指的是当某个自动增长的列没有被插入值,或者插入null值的时候就会触发自动增长,从而实现自动增长。如果该字段被插入值,那么自动增长就会不执行。
实现自动增长
自动增长原理
1. 当一条数据插入,直接使用自动增长的时候,系统分配了一个1,当第一条插入完之后,该值会变成2,等待下一条插入
2 自增长跟PHP索引数组的下标一样,会根据当前最大的那个值加1。
为什么系统能够从1开始进行自动增长?而为什么每次又是自动增加1?
系统是通过系统里面的配置文件来识别。
show variables like ‘auto_increment%’;
作业:大家自己回去修改自动增长的起始值和自增长变量。
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~