mysql之约束

约束和策略

  约束的作用:对表中的数据进行进一步的限制,保证数据的正确性,有效性和完整性,约束都是添加在列上的,对一列的数据进行限制

 

  一.主键约束

  1.主键的作用

  1)保证实体的完整性;
  2)加快数据库的操作速度
  3)在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。
  4) ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

 

  2.主键的特点

  1)一个表中只能有一个主键。如果在其他字段上建立主键,则原来的主键就会取消。在ACCESS中,虽然主键不是必需的,但最好为每个表都设置一个主键。

  2)主键的值不能重复也不能为null(非空)

 

  3)主键值不能被重用

  提示:虽然并不总是需要主键,但是多数数据库设计者都会保证他们创建的每个表具有一个主键,以便以后的数据库的操作和管理。

 

  3.创建主键

  1)建表时添加主键

  ps1: create table a(            ps2:create table b(

      id int primary key,              id int,

      name varchar(20)              name varchar(20),

    )                         primary key(id)  )

  

  3)修改表方式添加主键(修改主键前先删除主键)

  alter table 表名 add [constraint 约束名] primary key(列名)

 

  4.删除主键

  alter table 表名 drop primary key

 

  5.主键自增策略

  主键如果让我们自己添加可能会重复,我们通常希望每次插入新纪录的时,数据库自动生成主键字段的值,可以在主键列上添加自增策略

  1)建表时添加策略

  列名 数据类型 primary key  auto_increment  注意:自动增长的类型必须为int

  ps:create table a(

      id int primary key auto_increment,  // 主键自增

      name varchar(20)  )

  2)修改表的方式添加自增

  alter table 表名 modify 主键列列名 数据类型 auto_increment

  ps:将表a中的id设为自增

  alter table a modify id int auto_increment

  3)修改自增起始值

  alter table 表名 autoincrement=1000

  

  6.truncate 截断表

  truncate会删除表中的所有数据,相当于删除表后重新创建该表

  语法:truncate table 表名

  1)delete和truncare对于主键自增策略的区别

  delete删除表中的数据,但不重置auto_increment的值

   

  

  二.非空约束

  1.建表时添加非空约束

  语法:字段名 字段类型 not null

  ps:create table a (

      id int primary key auto_increment,

      name varchar(20) not null  )

  

  2.修改表时添加非空约束

  alter table 表名 modify 列名 数据类型 not null

  ps:名字表a中不能为空

  alter table a modify name varchar(20) not null

  

 

  三.唯一约束

  添加了唯一约束的值不能重复,但是可以为null

  1.创建唯一约束

  1)建表时添加唯一约束

  语法:列名 数据类型 unique

  ps:create table a (

      id int primary key auto_increment,

      name varchar(20) not null,

      email varcahr(100) unique  //添加唯一约束  )

  

  2).修改表方式添加唯一约束

  alter table a add [constraint 约束名] unique 字段名

  ps:将表a中的email修改为唯一约束

  alter table a add unique(email)

 

  2.删除唯一约束

  alter table 表名 drop index 唯一约束名

 

 

  四.缺省(默认)约束

  当该列插入数据时不指定值,将会使用缺省值

  1.创建缺省约束

  1)建表时添加缺省约束

  语法:列名 数据类型 default '缺省值'

  2)修改表时添加缺省值

  alter table 表名 change column 列名 列名 数据类型 default '缺省值'

  

  2.删除缺省值

  alter tbale 表名 change column 列名 列名 数据类型 default null

  

  

 

  五.外键约束

  1.创建表的时候添加外键

  语法:constraint 外键约束名 foreign key(外键字段名) references 主表名(主键字段名)

  ps:在创建副表/从表之前先创建主表

  create table department(

    id int primary key auto_increment  //主键 部门id

    dep_name varchar(20),  //部门名称

    dep_location varchar(50)  //部门地址

  );

  create table employee(

    id int primary key auto_increment,  //员工id
    name varchar(20),   //员工姓名
    age int ,  //年龄
    salary int,  //工资
    add_company date,  //进入公司时间
    dep_id int ,  //属于那个部门
    constraint emp_dep_id_ref_dep_id_fk FOREIGN key(dep_id) references department(id)  //添加外键约束
  );

 

  2.修改表的时候添加外键

  alter table 从表名 add constraint 约束名 foreign key(外键列) reference 主表(主表主键列)

  

posted @ 2021-07-28 09:39  小小度  阅读(295)  评论(0)    收藏  举报