zoukankan      html  css  js  c++  java
  • 数据库表的主外键

    主键

    主键(primary key):全称叫做“主键约束”,可以是一列或者多列组合,其值可以唯一标识这条数据。

    所以主键唯一性,不可以为空。

    创建主键:

    创建表的时候创建主键

    CREATE  TABLE  food(id INT PRIMARY KEY,name CHAR(32));
    

    在这里插入图片描述
    创建主键,并且自增长
    (就是插入数据时可不指定主键字段,一般都为id int类型)
    缺陷:
    如果删除之前的数据,不会自动填充补全数字,如把id=3的数据从表中删除
    1
    2
    4
    5
    这样的,中间3会没有,空的

    CREATE TABLE food(id INT PRIMARY KEY AUTO_INCREMENT,name CHAR(32));
    

    在这里插入图片描述

    添加主键:

    在已经存在的表当中添加主键(字段是已经存在的字段)

    ALTER TABLE food ADD PRIMARY KEY (id);
    

    在这里插入图片描述

    ALTER TABLE food ADD PRIMARY KEY AUTO_INCREMENT (id); 由于版本 问题,当前命令不会报错,但是无法将主键设置自增长。导致添加的 数据主键为0

    修改为自增长:modify
    ALTER TABLE food MODIFY id INT AUTO_INCREMENT PRIMARY EKY;

    在这里插入图片描述
    添加实际上是将一个已经存在的字段修改为主键

    **删除主键:**
    ALTER TABLE food DROP PRIMARY KEY ;
    

    在这里插入图片描述

    删除主键只是删除了主键类型,并没有删除字段
    在这里插入图片描述

    如果主键设置自增长,先通过修改语句去掉自增长,然后在删除主键。
    ALTER TABLE food MODIFY id INT; 去掉自增长
    ALTER TABLE food DROP PRIMARY KEY ; 删除主键

    外键

    外键:(foreign key):全称叫做“外键约束”,主要用来约束一对多关系, 一对多关系当中,多表当中用外键来关联一表当中的主键字段。

    create table parent(id int primary key auto_increment,name char(32));
    
    create table child(
    id int primary key auto_increment,
    name 	char(32),
    p_id int, 
    foreign key(p_id) references parent(id)
    );
    

    1、必须先有外键字段,再设置外键
    2、一表必须先创建出来,最好有主键;
    3、外键字段的数据必须一表对应字段(主键)有的数据。

    多对多关系中,需在关系表创建时设置多个外键,对应相应表中的主键字段

    在这里插入图片描述
    在这里插入图片描述

    多对多关系中:
    专业:
    在这里插入图片描述
    课程:
    在这里插入图片描述
    关系:
    在这里插入图片描述
    创建多对多关系:
    创建专业表

    create table major(id int primary key auto_increment,name char(32));
    

    创建课程表

    create table course(id int primary key auto_increment,name char(32));
    

    创建关系表

    create table major_course(
    id int primary key auto_increment, 设置主键
    major_id int, 设置和专业关联的字段
    course_id int, 设置和课程关联的字段
    foreign key(major_id) references major(id), 使用major_id和major表的	id字段进行外键关联
    foreign key(course_id) references course(id)使用course_id和course表	的id字段进行外键关联
    );
    
  • 相关阅读:
    vmware克隆linux出错:Device eth0 does not seem to be present
    IDEA中项目路径问题
    Intellij idea 报错:Error : java 不支持发行版本5
    equals和==的区别
    指定Python版本下pip安装“pip install”
    大数据5V特点(5Vs of Big Data)
    大二下每周总结
    大二 下学期——期末个人总结(课程评价及加分项)
    大二下学期第二次个人作业第二阶段
    大二下学期第二次个人作业第二阶段
  • 原文地址:https://www.cnblogs.com/ilovepython/p/11068863.html
Copyright © 2011-2022 走看看