对表中的数据进行限定

1.非空约束(not null)

  在创建表的时候,进行约束

   CREATE TABLE stud(
      NAME VARCHAR(12) NOT NULL,
      id INT 
    );

删除非空约束:

   ALTER TABLE stud MODIFY NAME VARCHAR(20);#消除约束
  ALTER TABLE stud MODIFY NAME VARCHAR(20) NOT NULL;#添加约束

2.唯一约束(UNIQUE)

CREATE TABLE stude(
    id INT,
    tel VARCHAR(11) UNIQUE
    );

ALTER TABLE stude MODIFY tel VARCHAR(11) UNIQUE;#添加唯一约束
ALTER TABLE stude DROP INDEX tel;#去除唯一约束

3.主键约束(primary key)

  主键:非空,唯一。用于多表联立。

  在建表时添加主键(非空,唯一)

  CREATE TABLE stude(
    id INT primary key ,
    tel VARCHAR(11) UNIQUE
    );

  删除主键:

      alter table stude drop primary key; 

  添加主键:

    alter table stude modify id int primary key;

  自动增长id,配合int类型的主键使用

      CREATE TABLE stude(
          id INT primary key auto_increment,
          tel VARCHAR(11) UNIQUE
          );

  设置完第一个数据后,insert into中的主键就可以为NULL了

  删除自动增长

    alter table stu modify id int;

  添加自动增长

    alter table stude modify id int auto_increment;

4.外键约束(CONSTRAINT)

 

 

 

 

  从表内容不能直接删除,也不能修改。

  修改可用 update department set id=10 where id=1; 

  

  解决两列数据重复冗余(如男性 全是 18岁 )

  新建表时增加外键: 

    [CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名) 

  create table employee(
  id int primary key auto_increment,
  name varchar(20),
  age int,
  dep_id int, -- 外键对应主表的主键
  -- 创建外键约束
  constraint emp_depid_fk foreign key (dep_id) references department(id)
  ) 

  已有表增加外键: 

    ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主键字段名);

  

  外键约束-级联  ON update CASCADE

    修改从表,使得主表的数据直接更新

    添加外键时,设置级联

      constraint emp_depid_fk foreign key (dep_id) references
       department(id) on update cascade on update cascade
      ) 

    删除级联

    constraint emp_depid_fk foreign key (dep_id) references
       department(id) on update cascade on delete cascade
      ) 

  

 

Posted on 2022-06-03 00:30  LutixiaGit  阅读(40)  评论(0编辑  收藏  举报