首页 > 数据库 >【学习笔记】数据库外键

【学习笔记】数据库外键

时间:2022-09-28 19:33:27浏览次数:41  
标签:COMMENT 10 gradeid 数据库 笔记 外键 KEY NULL

数据库外键

 

方式一:在创建表的时候,添加外键

CREATE TABLE `grade`(
    `gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级id',
    `gradename` VARCHAR(10) COMMENT '年级名称',
    PRIMARY KEY(`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
​
CREATE TABLE `student`(
    `id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '学号',
    `name` VARCHAR(20) NOT NULL COMMENT '姓名',
    `age` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
    `gradeid` INT(10) NOT NULL COMMENT '学生年级',
    PRIMARY KEY(`id`),
    KEY `FK_gradeid` (`gradeid`),
    CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

学生表的 gradeid 要去引用 年级表的 gradeid

步骤:

  • 定义外键key KEY FK_gradeid (gradeid),

  • 给外键添加约束(执行引用),CONSTRAINT FK_gradeid FOREIGN KEY(gradeid) REFERENCES grade(gradeid)

删除有外键关系的表时,必须先删除引用别人的表,在删除被引用的表

 

方式二:创建表完成后,给表添加外键约束

​
CREATE TABLE `grade`(
    `gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级id',
    `gradename` VARCHAR(10) COMMENT '年级名称',
    PRIMARY KEY(`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
​
CREATE TABLE `student`(
    `id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '学号',
    `name` VARCHAR(20) NOT NULL COMMENT '姓名',
    `age` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
    `gradeid` INT(10) NOT NULL COMMENT '学生年级',
    PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
​
ALTER TABLE `student` ADD 
CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`)

 

以上的操作都是物理外键,是数据库级别的外键,不建议使用(避免数据库过多造成混乱)

  • 数据库就是单纯的表,只用来存数据,只有行和列

  • 我们想使用多张表的数据,即外键,可以用程序去实现

标签:COMMENT,10,gradeid,数据库,笔记,外键,KEY,NULL
From: https://www.cnblogs.com/wztblogs/p/16739328.html

相关文章

  • JAVA Spring学习笔记 ------Bean
    Bean容器为什么要使用Bean容器因为希望减少new的操作,这样当我们的类名发生改变时,影响会降到最小Bean相当于一个管家原来需要我们自己new的对象现在统统通过Bean来创建......
  • JAVA Spring学习笔记------注解开发
    注解开发可以在对应的类中配置Bean具体方法如下:利用@Component来声明当前类为Bean@Component("userDaoimpl")//Reposity和component效果一样//spring对于不同的层......
  • JAVA Spring学习笔记------Spring整合Mybatis
    Spring整合Mybatis首先看一下项目目录   因为以前所有的知识点都在一个模块里,而且目录比较混乱所以对模块重构了一下首先我们要在pom.xml文件中声明所需要的依赖......
  • [学习笔记]AC自动机
    首先请确保你学会了这些前置知识:\(\operatorname{Trie}\)树\(\qquad\)和\(\qquad\)\(\operatorname{KMP}\)然后就可以学习所谓的\(\mathfrak{AC}\)自动机了\(......
  • 学习笔记-SQL注入1(注入点类型)
    SQL注入示例通过在用户名出传入参数'or1=1--进行万能密码登录selectusername,passwdfromuserwhereusername='text'andpassword='text'//正常语......
  • 《代码大全2》阅读笔记二——基本数据类型
    今天我阅读了《代码大全2》的第十二章——基本整数类型。谈起基本整数类型,我的脑海中就浮现出来整数、浮点数、字符串、布尔变量等这些整数类型,这章主要讲解了这几种整数类......
  • Android进阶笔记-7. Context详解
    Context数量Activity数量+Service数量+1(1为Application)Context的继承关系Context下有两个子类,ContextWrapper是上下文功能的封装类,而ContextImpl则是上下文功能......
  • linux系统下运行java项目,(做笔记)
    原链接处:Linuxjar包后台运行-阿里云开发者社区(aliyun.com) Linuxjar包后台运行2016-04-10 1755简介: Linux运行jar包命令如下:方式一:java -jarshareniu.ja......
  • PADS应用笔记:Layout时怎么隐藏飞线
    问题在布局时,地线太多影响看图,要怎么隐藏掉呢方法选中线后,右键设置查看网络,然后将线添加到查看列表,然后查看未布的线设置为无要重新显示的话:Ctrl+Alt+N打开网络显示......
  • PADS应用笔记:Layout里对齐和等间距方法
    问题怎么在layout布局时,对元件进对齐和等间距布局呢?方法关于对齐,鼠标选中多个元件后,邮件直接选对齐就好了,根据需求进行中心或者上下左右对齐关于等间距,有两个方法1.......