列属性

使用show create table 表名字desc 表名字来查看表的属性

空属性

create table my_class(

student_name varchar(20) not null,

student_id int(1) not null

)charset utf8;

空属性有两个值:nullnot null。虽然默认数据库的字段基本都为空,但是实际上在真正开发的时候,要尽可能的保证数据不为空,因为空数据没有意义,也没办法参与运算。

列描述

create table my_class(

student_name varchar(20) comment '姓名',

student_id int(1) comment '学号'

)charset utf8;

列描述:comment,表示描述,没有实际含义,是专门用来描述字段的,其会随着表创建语句自动保存,用来给程序员(数据库管理员)了解数据库使用。

默认值

create table my_class(

student_name varchar(20) comment '姓名',

student_id int(1) comment '学号',

student_age int(1) default 20,

student_gender enum('男','女') default '男'

)charset utf8;

默认值:default,某一数据会经常性出现某个具体的值,因此可以在开始的时候就指定好,而在需要真实数据的时候,用户可以选择性的使用默认值。

insert into my_class values('Li',311800,default,default);

可以不给设置默认值的字段赋值或者使用default代替相应的字段值进行赋值。

主键

--增加主键

create table my_class(

student_name varchar(20) comment '姓名',

student_id int(1) primary key comment '学号',

)charset utf8;

--复合主键:保证每一列数据各行之间不冲突即可

create table my_class(

student_name varchar(20) comment '姓名',

student_id int(1) comment '学号',

student_age int(1) default 20,

primary key(student_name,student_id)

)charset utf8;

--追加主键(前提:表中对应字段的数据具有唯一性)

alter table my_class add primary key(age);

--删除主键

alter table my_class drop primary key;

主键作用:使得主键对应的字符中的数据不允许重复,如果重复,则数据操作(主要是增和改)失败,另外主键不允许为空值。


执行insert into my_class values ('PM3527','B315');将发生主键冲突解决方法:
【数据库の相关概念】列属性

  • -- 当主键冲突的时候,进行更新操作

    insert into my_class values ('PM3527','B315')

    -- 冲突处理

    on duplicate key update

    -- 更新主键值

    room = 'B315';
    【数据库の相关概念】列属性

  • -- 当主键冲突的时候,进行替换操作

    replace into my_class values ('PM3528','B215');

    【数据库の相关概念】列属性

自动增长

create table my_class(

student_name varchar(20) comment '姓名',

student_id int(1) primary key auto_increment comment '学号',

student_age int(1) default 20,

)charset utf8;

自动增长:auto_increment,当对应的字段,不给值,或者是默认值,或者是null的时候,就会自动的被系统触发,系统会从当前字段中取已有的最大值再进行+1操作,得到新的字段值。特点:

  • 任何字段要做自增长,前提其本身必须是一个索引,即primary key栏有值;
  • 自增长字段必须是数字(整型);
  • 每张表最多有一个自增长字段。

修改自增长值

可以使用show create table my_class查看下一次自增长的数值

可以使用alter table my_class auto_increment=2;修改下一次自增长的数值,另外如果修改当前自增长字段已经存在的值,则只能修改比当前已有自增长字段中的最大值更大,不能更小,因为更小不生效。

查看自增长属性

【数据库の相关概念】列属性

通过show variables like 'auto_increment%'来查看自增长的相关变量,其中auto_increment_increment表示步长auto_increment_offset表示初始值

因此,咱们可以通过set auto_increment_increment = 值;修改上面的两个变量实现不同的效果,但是需要注意的是:修改是会话级别,并且修改的是整个数据库,而不是单张表。

删除自增长

由于自增长和主键绑定在一起所以直接调用alter table my_class modify student_id int primary key;会被系统误认为定义多个主键。

解决方法:alter table my_class modify student_id int;即可直接删除auto_increment同时保留primary key

唯一键

create table my_class(

student_name varchar(20) comment '姓名',

student_id int(1) unique comment '学号',

student_age int(1) default 20,

)charset utf8;

或者

create table my_class(

student_name varchar(20) comment '姓名',

student_id int(1) comment '学号',

student_age int(1) default 20,

unique key(student_id)

)charset utf8;

唯一键:和主键的功能一样,但是一张表只能由一个主键,但可以由多个唯一键,而且唯一键允许字段值为空,并且允许多个空值存在。

-- 删除唯一键

alter table my_class drop index student_age;

相关文章: