mysql中怎么创建和查询外键 - vip共享吧
  • 网站首页
  • IT技术笔记
    • Java教程
    • MySql数据库
    • PHP开发
    • Python教程
    • JavaScript
    • SEO优化
    • 常用工具
  • 好资源福利
    • 会员账号共享
  • 网站模板源码
    • 小程序源码
    • 网站源码
  • 共享网络资源
  • 更多功能
    • 留言吐槽
    • 文章归档
    • 我的邻居
    • 史上今日
    • 视频解析
    • 高清壁纸
    • 公告动态
    • 广告合作
    • 关于我们


导航菜单
  • 网站首页
  • IT技术笔记
    • Java教程
    • MySql数据库
    • PHP开发
    • Python教程
    • JavaScript
    • SEO优化
    • 常用工具
  • 好资源福利
    • 会员账号共享
  • 网站模板源码
    • 小程序源码
    • 网站源码
  • 共享网络资源
  • 更多功能
    • 留言吐槽
    • 文章归档
    • 我的邻居
    • 史上今日
    • 视频解析
    • 高清壁纸
    • 公告动态
    • 广告合作
    • 关于我们
MySql

mysql中怎么创建和查询外键

2024/9/6 韩俊  MySql数据库 444 0

一、什么是外键

外键是一个表格中的一列或多列,它用于指定这个列或多列中的值必须与另一个表格中的数据或者另一个表格中的主键相匹配。这个被匹配的表格称为被参考表。外键是用于连接两个或多个表格的关系型数据库中的一种机制。

外键的目的是用来确保数据的完整性和一致性。当我们在一个表格中加入一行数据时,如果这个数据需要和另一个表格中的某些数据匹配,如果这个匹配关系是通过外键建立的,那么MySQL就会检查这个新增数据中的外键,看看在被参考表格中是否存在这个数据,如果不存在,就会拒绝在这个表格中插入这个数据。

二、如何创建外键

在MySQL中创建外键有多种方式,以下是两种比较常用的方式。

1、使用 ALTER TABLE 语句

通过 ALTER TABLE 语句添加外键的语法格式如下:

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (列名) REFERENCES 另一个表格的表名 (列名);

其中,外键名称是给外键的一个名称,这个名称应该具有唯一性,列名指的是当前表格的列名,另一个表格的表明和列名分别是被参考表的名称和被参考表的列名。

例如,我们有一个员工表(employees)和一个部门表(departments),他们之间是通过一个外键链接的,我们可以使用以下SQL语句创建这个外键。

ALTER TABLE employees ADD CONSTRAINT dept_fk FOREIGN KEY (dept_id) REFERENCES departments (dept_id);

这个语句的意思是,给员工表(employees)添加名为 dept_fk 的外键,dept_fk 指向employees表的dept_id列,它参考了departments表的dept_id列。

2、在创建表格时定义外键

在创建表格时定义外键也是一种常用的方式。语法格式如下:

CREATE TABLE 表名 (
列名 数据类型,
外键名称 FOREIGN KEY (列名) REFERENCES 另一个表格的表名 (列名)
);

例如,创建一个员工表(employees)和一个部门表(departments),并且使用dept_id列作为employees表的外键链接departments表的dept_id列,可以使用以下的SQL语句。

CREATE TABLE employees (
id INT NOT NULL,
name VARCHAR(50) NOT NULL,
dept_id INT,
PRIMARY KEY (id),
FOREIGN KEY (dept_id) REFERENCES departments (dept_id)
)

三、如何查询外键

一旦在MySQL中建立了外键,就可以使用MySQL的查询语句来查询它们。查询外键的语法格式如下:

SELECT * FROM 表名 WHERE 列名 IS NULL;

这个语句返回的是表格中列名为空的数据,如果这个列是被定义为外键的,那么这个查询结果就是表格中与外键没有匹配行的数据。这项查询结果非常实用,可帮助我们确定哪些记录未被正确匹配,需要手动解决。

例如,我们有一个 departments 表格,它的 dept_id 列被定义为外键,如果我们想要查询出那些在 departments 表格中没有匹配的记录,可以使用以下的SQL语句:

SELECT * FROM departments WHERE dept_id NOT IN (SELECT dept_id FROM employees);

这个语句的意思是,查询在 departments 表格中不包含在 employees 表格中的 dept_id 数据。

点赞:0 分享

上一篇
mysql中in条件使用字符串的方法如何优化
下一篇
Python3高级运算符
作者头像 作者名称 作者性别
韩俊

热门推荐

1 mysql视图指的是什么
2 mysql的explain有什么作用?
3 mysql慢查询如何开启及分析优化慢查询
4 MySQL索引创建原则是什么
5 mysql密码忘记了怎么重置
6 mysql时间戳如何转换

评论列表

取消回复

    •  
      Login

      韩俊

      趁你现在还有时间,尽你自己最大的努力,努力做成你最想做的那件事,成为你最想成为的那种人,过着你最想过的那种生活。这个世界永远比你想的要更精彩,不要败给生活。

      退出登陆
      • 10358文章
      • 455评论
      • 80微语
  • 广告赞助

  • 二零二五年07月
    一二三四五六日
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
  • 分类

    • 网站模板源码
    • IT技术笔记
    • 好资源分享
    • 共享网络资源
  • 最新文章

      • 求婚父母祝福语简短精辟
        • 幽默俏皮的祝福语简短
          • 拍摄国庆祝福语简短
            • 夏天防暑祝福语大全简短
              • 送橙子的祝福语简短
                • 恭喜做奶奶简短祝福语
                  • 简短教师节日祝福语
                    • 生日祝福语老公篇简短
  • 热门文章

    • 酷狗音乐VIP账号 酷狗音乐会员账号共享2017.01.29更新
    • 芒果tv vip会员账号 芒果tv会员账号共享2017.01.29更新
    • 爱奇艺vip账号 爱奇艺/PPS会员账号共享2016.12.12更新
    • 优酷/土豆vip会员账号 优酷会员账号共享2017.01.29更新
    • 活动:免费获得爱奇艺VIP/PPS会员账号50天以上的使用权!
    • 酷我音乐VIP账号 酷我音乐会员账号共享2016.12.31更新
    • 暴风影音会员账号 暴风影音会员账号共享2016.12.31更新
    • m1905会员账号 m1905会员账号共享2016.10.21更新
  • 最新评论

    • https://www.vipshare8.com/content/templates/meta/Static/images/tx/10.jpg

      你丫的 文章写得太好了 支持下!![F3...

    • https://www.vipshare8.com/content/templates/meta/Static/images/avatar.jpg

      很棒!刚在某网站看到这个,很欣赏,可惜下...

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=3861064027

      呃呃呃 oooo

    • https://www.vipshare8.com/content/uploadfile/202103/thum-490d1614564497.png

      回复了111:根据激活的时间有一年的有效期!

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=792480561

      到2025就到期了吗?

    • https://www.vipshare8.com/content/uploadfile/202103/thum-490d1614564497.png

      [blockquote]打卡时间:16:...

    • https://www.vipshare8.com/content/templates/meta/Static/images/tx/7.jpg

      俊哥,想借用迅雷一用!但需要手机验证!看...

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=3293901900

      感谢大大的分享

    • https://www.vipshare8.com/content/uploadfile/202103/thum-490d1614564497.png

      回复了好奥v:如果没有解析成功,可以切换接口...

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=131241242441

      现在视频解析网站怎么用不了啦?

  • 网站统计 I 当前在线:957人

    • 本站管理:1位
    • 用户总数:593位
    • 置顶文章:2篇
    • 日志总数:10358篇
    • 微语总数:80条
    • 评论总数:455条
    • 标签总数:83条
    • 页面总数:8页
    • 分类总数:14个
    • 链接总数:16条
    • 运行天数:3729天
    • 最后更新:7月14日
    • 登录
    • 注册
    • 找回
    Copyright © 2025vip共享吧网站地图 网站备案豫ICP备19004194号-1

    免责声明:本站资源仅供用于学习和交流,本站部分素材内容来源于网络,如有侵权/投稿等,请及时联系站长.

    • 首页
    • 秒懂百科 秒懂百科
    • 搜索
    • 史上今日

    大家都在搜

    • 喜马拉雅FM会员账号
    • qq音乐会员共享
    • 爱奇艺VIP账号共享
    • 哔哩哔哩vip会员账号
    • pptv会员
    • 掌阅vip账号共享
    • 微信小程序
    • redis
    • 百度云会员账号共享
    • javascript教程
    • 喜马拉雅vip会员共享
    • qq音乐vip账号共享
    • 网站源码
    • 全民娱乐
    • 搜狐视频vip账号
    • 千图网vip账号共享
    • 
    • 