约束-非空约束、主键约束、主键约束-自动增长、外键约束和外键约束-级联操作

约束-非空约束

非空约束:not null

1.创建表时添加约束

CREATE TABLE stu(

  if INT;

  NAME VARCHAR(20) NOT NULL -- name为非空

);

2.创建表完后,添加非空约束

  ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;

3.删除name的非空约束

  ALTER TBALE stu MODIFY NAME VARCHAR(20);

  

 

 

 

 

约束-唯一约束

 创建表时,添加唯一约束

CREATE TABLE stu1(

  id int,

  phone_number VARCHAR(20) UNIQUE

);

-- 注意:mysql中,唯一约束限定的列的值可以有多个null;’

 

-- 删除唯一约束

ALTER TABLE stu1 DROP index phone_number;

 

-- 在创建表后,添加唯一约束

ALTER TABLE stu1 MODIFY phone_number VARCHAR(20) UNIQUE

 

 

 

 

约束-主键约束

 主键约束:primary key

  注意:

    含义:非空且唯一

    一张表只能有一个字段为主键

    主键就是表中记录的唯一表示(一般用在id)

-- 创建表时,创建主键约束
CREATE TABLE stu2(
	id int PRIMARY KEY,
	name VARCHAR(20)
);

-- 删除主键
 -- 错误ALTER TABLE stu2 MODIFY id int;
 ALTER TABLE stu2 DROP PRIMARY KEY


-- 创建完表后,添加主键
ALTER TABLE stu2 MODIFY id int PRIMARY KEY

  

 

 

 

 

 

 

约束-主键约束-自动增长

 自动增长:

  1.概念:如果某一列是数值类型的,使用auto_increment 有来完成值的自动增长

    一般和主键一起使用,自动增长是根据上一个id的值确定的

  

-- 自动增长
-- 创建表时添加主键约束,并且完成主键自整长
CREATE TABLE stu4(
	id int PRIMARY KEY auto_increment,
	name VARCHAR(20)
);

-- 删除自动增长
ALTER TABLE stu4 MODIFY id int;

-- 添加自动增长
ALTER TABLE stu4 MODIFY id int auto_increment


-- 添加默认的自动增长值
INSERT INTO stu4 VALUES(NULL,'ccc')

  

约束-外键约束

 外键约束:foreign key 。让表与表产生关系,从而保证数据的正确性

  1.在创建表时,可以添加外键

    语法:

     

 create table 表名(
       . . . 
       外键列
        constraint 外键名称  foreign key (外键列名称)  references 主表名称(主表列名称)
  );

  

  2.删除外键

  ALTER TABLE employee DROP FOREIGN key emp_dept_fk;
  ALTER TABLE 表名 DROP FPREING KEY 外键名称

  

 

   3.添加外键

ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id)
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FORTIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称)

  

 

 

 

约束-外键约束-级联操作

级联操作:

级联更新和级联删除可以设置多个,也可以一起设置

  添加级联操作:

-- 添加外键。设置级联更新。设置级联删除
ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id) ON UPDATE CASCADE ON DELETE CASCADE

  分类:

    级联更新:

 ON UPDATE CASCADE

  

    级联删除:

ON DELETE CASCADE

  

 

 

 

 可以看到这两个表已经连接起来了,如果我们想要修改department里面id的值的话,那么必须得先修改employee表里面的id值,这样很麻烦

先把employee表里面的id设置能null

UPDATE employee SET dep_id = NULL WHERE dep_id = 1

  

 

 

 

 然后再设置成你想要的id值,才可以

UPDATE employee SET dep_id = 5 WHERE dep_id is NULL

  

 

 

 

有一种方法特别简单,就是级联更新

ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id)  ON UPDATE CASCADE

  

 

 

 

 

 

 

 

级联删除

 

 

posted @ 2022-09-29 15:08  漁夫  阅读(91)  评论(0)    收藏  举报