【mysql】给一张表添加外键的四种方法

2023-10-27

mysql外键、主键

一、添加外键

添加外键约束名字一定不能重复
如何添加外键

方法一:直接在属性值后面添加

create table score(
cscore int(11),
st_id int(50) references student(id),
cs_id int(30) references classes(id),
primary key(st_id,cs_id)
);

方法二:

create table score(
cscore int(11),
st_id int(50),
cs_id int(30),
primary key(st_id,cs_id),
FOREIGN KEY (st_id) REFERENCES student(id),
FOREIGN KEY (cs_id) REFERENCES classes(id)
);

方法三:添加约束

create table score(
cscore int(11),
st_id int(50),
cs_id int(30),
primary key(st_id,cs_id),
CONSTRAINT `FK_ID_ST` FOREIGN KEY (st_id) REFERENCES student(id),
CONSTRAINT `FK_ID_CS` FOREIGN KEY (cs_id) REFERENCES classes(id)
);

方法四:在表的定义外进行添加

alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);

二、添加主键

1.创建表的时候直接在表字段后,跟primary key关键字。(一张表有且只能有一个主键,主键具有唯一性。)

CREATE TABLE tb
(
id INT IDENTITY(1,1) PRIMARY KEY,
name VARCHAR(20)
)

2.在创建表的时候在所有字段后面使用primary key(主键字段列表)来创建主键(如果有多个字段作为主键被称为复合主键)

*CREATE TABLE table_test(
id INT NOT NULL,
name VARCHAR(20) NOT NULL,
address VARCHAR(20),
PRIMARY KEY(id)
);

复合键这样设置:

CREATE TABLE table_test(

user_id INT NOT NULL,

user_name VARCHAR(20) NOT NULL,

user_address VARCHAR(20),

PRIMARY KEY (user_id, user_name)

);*

3.在表创建好之后添加主键(表本身没有主键):

alter table 表名 add primary key(字段列表)
ALTER TABLE Employees
ADD CONSTRAINT PK_EmployeesID PRIMARY KEY (EmployeeID)

给表中没有的字段添加主键:

ALTER TABLE (表名) ADD id INT(16) NOT NULL
PRIMARY KEY AUTO_INCREMENT FIRST;

注:主键必须非空,自增需要自己设置。如下:

alter table(表名) modify id integer auto_increment

我们光说了添加主键,那么删除主键怎么办?

alter (表名) DROP PRIMARY KEY
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【mysql】给一张表添加外键的四种方法 的相关文章

随机推荐

  • 关于运算符重载的用法

    各类重载运算符的定义
  • 关于JDBC和JDBC-ODBC连接数据库

    本来之前已经配置成功了 后来重装 系统后 忘记了之前的步骤 弄了大半天 才重新配置好 要用JDBC连接数据库 先要安装SQLServer2000 的 驱动 安装完后在安装目录的lib文件夹里有三个文件 msbase jar mssqlser
  • 202316读书笔记

    202316读书笔记 作家榜名著 花间集 花半坼 雨初晴 满身香雾簇朝霞 娇艳轻盈香雪腻 作家榜名著 花间集 作者赵崇祚 房开江 这里有绮丽的艳词 缱绻的缠绵 温婉绵延的思愁 或慵懒梳洗迟 或思人催红颜老 则有绮筵公子 绣幌佳人 递叶叶之花
  • 星际无限CTO张超:IPFS分布式存储将成为新一代存储方式

    8月9日 IPFS分布式存储技术圆桌峰会在昆明盛大启幕 本次峰会汇集了包括大数据 分布式存储 人工智能 云计算 数字资产管理等各路行业大咖 论坛启智慧 共享创价值为目的 得到今日头条 腾讯新闻 火星财经 金色财经 春城晚报 都市时报等诸多媒
  • 解决miner.start() 返回null

    下面我列举了三种解决方案 前面两张是某两位大佬试出来的 第三种是我蒙出来的 第一种解决方案 转载自 http mp weixin qq com s AB9vj1EzOgWT7JyryfQhDg 问题场景 最近技术群中的朋友经常问到这样的问题
  • 前端在html页面之间传递参数的方法

    概念图 目标 前端在html页面之间传递参数的方法 项目中经常会出现的一种情况 有一个列表 比如商品列表 点击列表中的某一项商品 跳转至详情页面 跳转页面时 我们需要传递一个参数过去 这样我们才能通过这个参数进行数据请求 然后根据后台返回的
  • CNN(卷积神经网络)在自然语言处理中的应用

    本文参考自Convolutional Neural Networks for Sentence Classification 结尾处放上传送门 用传统方法进行文本分类任务时 通常将一篇文档所对应的tf idf 向量作为模型的特征输入 但是这
  • Python-求排列组合的方法

    1 调用 scipy 计算排列组合的具体数值 from scipy special import comb perm A perm 3 2 out A 6 0 C comb 3 2 out C 3 0 2 调用 itertools 获取排列
  • systemd 服务配置文件编写

    systemd service 简介 Systemd Service 是 systemd 提供的用于管理服务启动 停止和相关操作的功能 它极大的简化了服务管理的配置过程 用户只需要配置几项指令即可 相比于 SysV 的服务管理脚本 用户不需
  • 【mmdetection 】analyze_logs.py等工具测试

    绘制一些运行的分类损失 python tools analyze logs py plot curve work dirs faster rcnn r50 fpn 1x 20200306 175509 log json keys loss
  • 计算机主板南桥的作用,主板南桥是什么,主板南桥芯片在哪?

    主板南桥是什么 主板南桥芯片在哪 笔者稍懂一点电脑硬件 看到网友提问相关方面的问题 很是乐意回答 网络本来就崇尚人人为我 我为人人么 自己这点半瓶水的知识 本来就拜网上高手的科普文章所赐 所以遇到 像主板南桥是什么 主板南桥芯片在哪这类问题
  • QT学习:实现简单的登录登出界面功能

    在设计实现一个系统的时候 用户登录界面的设计可以说是必不可少的环节 而用户登录界面的实现说到底就是不同窗口之间的切换 在继续下面的工作之前 你首先要添加一个新的Qt设计师界面类 记住要选择Dialog without Buttons 否则方
  • Invalid block tag on line 129: ‘get_tag_list‘, expected ‘endblock‘. Did you forget to register or lo

    Django gt python manage py runserver时报错 Invalid block tag on line 129 get tag list expected endblock Did you fo rget to
  • 手把手教Electron+vue,打包vue项目,打包成桌面程序。

    1 现如今前端框架数不胜数 尤其是angular vue吸引一大批前端开发者 在这个高新技术快速崛起的时代 自然少不了各种框架的结合使用 接下来是介绍electron vue的结合使用 2 Electron是什么 对于我来说Electron
  • 最适合读研究生的城市,有你想去的城市吗?

    最适合读研究生的城市 有你想去的城市吗 有没有一座城市让你心生向往 你会因为城市而去选择院校还是因为学校爱上一座城 下面我们就来看一下人气最高 最适合读研的城市 1 北京 北京作为我国的首都 是全国政治文化中心 人称帝都 北京名校众多 既是
  • UML在软件开发各个阶段的应用

    一 UML5个互联视图 UML Unified Modeling Language 中常用5个互联的视图来描述系统的体系结构 如图 1 用例视图 Use case View 由专门描述可被最终用户 分析人员 测试人员看到的系统行为的用例图组
  • Markdown简介

    目录 什么是Markdown Markdown的发展简史 Markdown的基本写法 标题 文本 分隔线 列表 表格 区块 代码段 链接 图片 其他技巧 什么是Markdown Markdown是一种轻量级标记语言 Markdown的写法比
  • web UI 自动化测试:Selenium 语法详解 史上最全

    selenium主要是用来做自动化测试 支持多种浏览器 爬虫中主要用来解决JavaScript渲染问题 模拟浏览器进行网页加载 一 声明浏览器对象 注意点一 Python文件名或者包名不要命名为selenium 会导致无法导入 from s
  • c++ 语法错误 : 缺少“;”(在“*”的前面)

    语法错误 缺少 在 的前面 出现这个错误 我们当然不会考虑简单的原因 就是缺少 在的前面 那么来分析一下可能的不好发现的原因 error C4430 缺少类型说明符 假定为 int 注意 C 不支持默认 int c evan workspa
  • 【mysql】给一张表添加外键的四种方法

    mysql外键 主键 一 添加外键 二 添加主键 一 添加外键 添加外键约束名字一定不能重复 如何添加外键 方法一 直接在属性值后面添加 create table score cscore int 11 st id int 50 refer