约束_主键约束_自动增长和约束_外键约束

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

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

-- 创建表时添加约束
CREATE TABLE stu(
    id INT PRIMARY KEY AUTO_INCREMENT, -- 给id添加主键约束,id自动增长
    NAME VARCHAR(20)
);

SELECT * FROM stu;
INSERT INTO stu VALUES(NULL,'qqq');

-- 删除自动增长
ALTER TABLE stu MODIFY id INT;

-- 添加自动增长
ALTER TABLE syu MODIFY id INT AUTO_INCREMENT;

 

 

 

约束_外键约束

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

语法:
    create table 表名(
         ...
        外键列
        constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
    ) 
-- 解决方案:分成2张表
-- 创建部门表(id,dep_name,dep_location)
-- 一方,主表
CREATE TABLE department (
    id INT PRIMARY KEY AUTO_INCREMENT,
    dep_name VARCHAR(20),
    dep_locationion VARCHAR(20)
);
-- 创建员工表(id,name,age,dep_id)
-- 多方,从表
CREATE TABLE employee(
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(20),
    age INT,
    dep_id INT, -- 外键对应主表的主键
    CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id) -- 设置外键约束
);
-- 添加2个部门
INSERT INTO department VALUES(NULL,'研发部','广州'),(NULL,'销售部','深圳');
SELECT * FROM department;

-- 添加员工,dep_id 表示员工所在的部门
INSERT INTO employee (NAME,age,dep_id) VALUES ('张三',20,1);
INSERT INTO employee (NAME,age,dep_id) VALUES ('李四',21,1);
INSERT INTO employee (NAME,age,dep_id) VALUES ('王五',20,1);
INSERT INTO employee (NAME,age,dep_id) VALUES ('老王',20,2);
INSERT INTO employee (NAME,age,dep_id) VALUES ('大王',22,2);
INSERT INTO employee (NAME,age,dep_id) VALUES ('小王',18,2);

设置了主键没有5选项所以进行报错

-- 删除外键
ALTER TABLE employee DROP FOREIGN KEY emp_dept_fk;
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

 

-- 添加外键
ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id);

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主键名称(主表列名称);

  

posted @ 2022-07-24 11:16  魔光领域  阅读(57)  评论(0编辑  收藏  举报