mysql中列属性

日期:2019-12-08编辑作者:数据库

非空约束

create table 表名(

  id int not null

  );

  

mysql列属性包括:NULL 、default、comment、primary key、unique key

唯一约束

create table 表名(

  id int unique key,

  name varchar(20)

  );

 

一、NULL
定义方式:NULL(默认)  NOT NULL

主键约束 primary key

主键的作用:可以唯一标示一条数据,每张表里只有一个主键。

主键的特性:非空唯一。当表里没有主键时,第一个出现的非空且唯一的列,被当成主键。

creat table 表名(

  id int primary key,

  name varchar(20)

  );

空属性有2个值,mysql数据库默认字段都是为null的,但是在实际开发过程中,尽可能保证所有的数据都不应该为null,空数据没有意义,任何参与NULL运算的结果都是NULL。

删除主键约束:

alter table 表名

  drop primary key;

 

二、comment
列描述(comment),又可以称之为注释,实际没有什么含义,是专门用来描述字段的,会根据创建语句保存,用来给程序员(或者数据库管理员)来进行了解的。主要用于查看创建表的语法上进行查看,可用show create table tb_name;语句查看

自增长 auto_increment 

自动编号,一般与主键组合使用。一个表里面只能有一个自增长,默认情况下起始值为1,每次增量为1。

create table 表名(

  id int primary key auto_increment,

  name varchar(20)

  )auto_increment = 100;  # 不加auto_increment=100,起始值是1。

 

  create table my_tab(

默认约束 default

初始值设置,插入记录时,如果没有

create table 表名(

  id int primary key auto_increment,

  name varchar(20) not null,

  age int not null default 18

  );

 

    str varchar(10) not null comment '描述信息',

外键约束 foreign key

保持数据的一致性,完整性实现一对多关系。外键必须关联到键上面去,一般情况是关联到另一张表的主键

foreign key (本列表的字段名) reference 其他表名(要关联的字段名)

 

    num int unsigned not null comment '描述信息'

  );

三、default
用来设置默认值。某一种数据会经常的出现某个具体值,可以在一开始指定好,在需要真实数据的时候,用户可以选择性地使用默认值。

  create table my_tab(

    str varchar(10) not null,

    num int unsigned default 10;   #默认值为10

  );

使用方法:

  insert into my_tab (str) values ('abc');   #num会自动设为10
  insert into my_tab values ('abc', default); #用默认值插入num字段

 

四、primary key (主键)

主键约束: 主键对应的字段中的数据不允许重复,一旦重复,操作失败。

  1. 主键特点

  ① 唯一性,一张表只能有一个字段设为主键

  ② 主键不允许为NULL

  1. 增加主键方式,常用的有3种

  ① 在创建表时,在字段后面跟关键字primary key设置

    create table my_tab(

      id int primary key, #第一种方式

      name varchar(10)

    )charset utf8;

  ② 在创建表时,在所有字段后使用primary key(字段列表)设置复合主键

    create table my_tab2(

      id int,

      number int,

      name varchar(10),

      primary key(id, number, ...) #第二种方式,这种方式是符合主键,比较特殊

    )charset utf8;

复合主键:

     在创建表的时候,在所有的字段之后,使用primay key(主键字段列表)来创建主键(可以有多个字段作为主键)来创建复合主键。

     语法:primary key(字段1,字段2......)

     例子:创建一张my_primark_key2的表,为其添加number字段(int类型)和classname 字段(varchar类型),将这个2字段添加成复合主键。          

        create table if not exists my_primary_key2(

          number int not null,

          classname varchar(20) not null,

          primary key(number,classname) #符合主键

        )charset utf8;

插入数据:插入数据只有两个字段(number,name)共同重复时才会插入失败,如果有1个字段重复,另一个字段不重复,那么会插入成功。

 

③ 在已创建好的表中追加主键

   alter table my_tab3 modify id int primary key; #第三种方式

   alter table my_tab3 add primary key(id, ...);

  1. 主键更新与删除

  主键无法更新,若想更新主键,只能删除后重新添加!!!!

  alter table my_tab3 drop primary key;

 

五、auto_increment -- 自动增长

  1. 自动增长通常与主键搭配使用, 字段设置自动增长后,不给值,或给默认值或NULL的时候,会自动触发,如果给了值,则当前自增失效,从下一次开始以当前最大值开始自增。

设置为自增长的字段必须是一个索引,且必须是一个整型类型,一张表只能有一个字段被设为auto_increment !!!!

自增长的特点 :

       a)、任何一个字段做自增长前提:该字段必须是一个索引字段(key一栏有值)。

      b)、自增长字段通常是整形。

      c)、一个表中只能有1个自增长字段。

示例:
添加一张my_auto_increment的表,为其添加id字段和name字段,其中id字段设置成主键和自增长。

  create table if not exists my_auto_increment(

   id int primary key auto_increment, #配合主键使用,自增长

   name varchar(10) not null

 )charset utf8;

插入值:       

  insert into my_auto_increment values(null,'张三'); #有效,给与空值null的形式,这种形式最为方便
  
insert into my_auto_increment(name) values('李四'); #有效,不给值的形式,如果不给值,表名后必须指定哪些字段要给值

如果对应的自增长字段输入了值,那么自增长失效,但是下一次还是能够正确的自增长(从最大值+1)。

 insert into my_auto_increment values(10,'王五');

再次插入数据的时候,自增长就会从11开始:

本文由www.129028.com金沙发布于数据库,转载请注明出处:mysql中列属性

关键词:

centos MySQL 5.5 源代码 cmake 安装

1.2 mysql安装方式介绍 1.rpm,yum:安装方便,安装速度快,无法定制(有依赖关系,安装依赖包) 2.二进制:不需要安装...

详细>>

sql语句增删改查(方便你我Ta)

如果我们在此时给这条SQL加上WHERE子句的时候比如SQL:select * from studentcross join course where student.ID=course.ID 下面介绍一下...

详细>>

MySQL 5.7基于GTID的主从复制www.129028.com金沙

  1 1.Check the necessary parameter is surely spedified. 2 (root@localhost mysql3306.sock)[(none)]04:04:00show variables like 'server_id'; 3 +--------...

详细>>

利用mysqlbinlog_flashback闪回丢失数据

        today,i'll have a test with the opensource tool mysqlbinlog_flashback which is released by 58daojia,here'sthe github address: https://githu...

详细>>