mysql 列添加 默认值 mysql添加属性列_主键

列属性:

定义一个字段时对该字段设置的额外的信息或约束

  1、  关联操作:reference

  2、  字段默认值:default value

  3、  主索引和唯一索引:primary key 和unique key

  4、  自动增长:auto_increment

  5、  是否允许为空:null、not null

  6、  comment:列注释

 

默认情况下,字段都允许为空(缺省值为null),not null不能为空

当给一个not null 的字段插入值的时候,系统首先判断该字段是否有默认值,如果没有,就报错。

 

default

自定义默认属性,通常配合not null 一起使用。

create table student (
     id int not null default 100
  );

在插入数据时,用default关键字代替

 

primary key

简称PK,可以唯一标识某条记录的字段或字段的组合(组合主键)

设置主键的两种方式:

  1、  在定义一个字段时,直接在后面设置primary key

create table student (
      id int unsigned primary key
    );

主键字段不能重复,值不能重复,不能为空

  2、  定义完毕字段后再定义主键(组合主键只能使用这种方式)

 

primary key(id)
    primary key(id,name)

 

unique key

增加该属性后,该字段的值就不能重复。可以简写成unique

  unique key (id,name)定义两个唯一键

主键和唯一键的区别:

  1、  主键不允许为空,唯一键允许为空

  2、  主键只能有一个,但唯一键可以有多个

  3、  主键可以用两个字段组合为组合主键,而唯一键的多个字段都是唯一键

 

auto_increment

每次插入记录时,自动为某个字段的值加1,默认从1开始

使用这个属性有两个条件:

  1、  该字段类型必须为整型;

  2、  该字段必须存在索引(比如:主键索引)

开启auto_increment后,每次插入主键字段的时候,就可以直接插入null,这里的null是告诉系统,开启自动加载机制。

 

增加表选项,auto_increment自动增长初始值

create table student (
    num int
  )auto_increment 100;

开启了自动增长机制,也可以手动插入,自动增长是以前面出现的最大值自动增长

delete from 表中所有数据之后,并不会重置自动增长机制,可以使用truncate table 表名  或者truncate 表名,来重建表:

  1、  先把原表drop掉

  2、  再按以前的原表的结构重新创建一次

 

comment

专门为列做注释的,这里的列注释内容属于列定义的一部分,一起显示出来

在列定义的后面,comment “注释内容”

 

索引

索引的本质就是在“原始表”的基础之上根据某个或某些字段进行排序后的“内置表”

索引的作用,能极大提高表数据的查询速度,但它以降低增删改的速度为代价的。

 

  1、普通索引:key(字段1,字段2……)或index(字段1,字段2……)

  2、唯一索引:unique key()

  3、主键索引:primary key()

  4、全文索引

  5、哈希索引

  6、空间索引