SQL语句详解四-DQL(数据查询语言-多表查询一)

文章目录

    • 表和表的关系
      • 一对一关系
      • 一对多、多对一关系
      • 多对多关系

表和表的关系

  • 概述:数据库中表的关系有三种,一对一关系、一对多的关系、多对多的关系。

一对一关系

  • 例如:一个人只能有一个身份证号,一个身份证号只属于一个人

  • 示例代码

    -- 创建数据库,并指定 utf8 字符集
    CREATE DATABASE IF NOT EXISTS school CHARACTER SET utf8;-- 使用数据库
    USE school;-- 创建人类表
    CREATE TABLE person(p_id INT PRIMARY KEY AUTO_INCREMENT,		-- 人类表 id p_name VARCHAR(40) NOT NULL,				-- 姓名字段p_address VARCHAR(200)						-- 地址字段
    );-- 创建身份证号表
    CREATE TABLE idcard(c_id INT PRIMARY KEY AUTO_INCREMENT,		-- 身份证号表 idc_number VARCHAR(18)						-- 身份证号字段
    );-- 插入数据
    INSERT INTO person VALUES(1 , '张三' ,'河南');
    INSERT INTO person VALUES(2 , '李四' ,'北京');
    INSERT INTO person VALUES(3 , '王五' ,'上海');INSERT INTO idcard VALUES(1 , '11111');
    INSERT INTO idcard VALUES(2 , '22222');
    INSERT INTO idcard VALUES(3 , '33333');-- 给人类表添加外键
    ALTER TABLE person ADD CONSTRAINT p_idcard FOREIGN KEY (p_id) REFERENCES idcard(c_id);
    
  • 一对一关系图

一对多、多对一关系

  • 例如:一门课程只能属于一个老师,一个老师可以有多门课程

    • 站在老师的角度,是一对多
    • 站在课程的角度,是多对一
    • 我们习惯把 一 的一方称之为 主表,多的一方称之为 从表
  • 示例代码

    -- 创建课程表
    CREATE TABLE course(c_id INT PRIMARY KEY AUTO_INCREMENT,		-- 课程表 idc_name VARCHAR(100),						-- 课程名称ct_id INT									-- 教师外键
    );-- 创建教师表
    CREATE TABLE teacher(t_id INT PRIMARY KEY AUTO_INCREMENT,		-- 教师编号t_name VARCHAR(40)							-- 教师姓名
    );-- 插入数据
    INSERT INTO course VALUES( 101, '语文',1);
    INSERT INTO course VALUES( 102, '数学',3);
    INSERT INTO course VALUES( 103, '英语',5);
    INSERT INTO course VALUES( 104, '政治',2);
    INSERT INTO course VALUES( 105, '历史',1);
    INSERT INTO course VALUES( 106, '地理',4);INSERT INTO teacher VALUES(1 , '张老师');
    INSERT INTO teacher VALUES(2 , '李老师');
    INSERT INTO teacher VALUES(3 , '王老师');
    INSERT INTO teacher VALUES(4 , '黄老师');
    INSERT INTO teacher VALUES(5 , '马老师');-- 给课程表添加外键
    ALTER TABLE course ADD CONSTRAINT c_teacher FOREIGN KEY (ct_id) REFERENCES teacher(t_id);
    
  • 一对多、多对一关系图

多对多关系

  • 例如:一门课程可以有多个学生,一个学生也可以有多门课程

    • 多对多可以看成两个多对一的关系,此时我们需要使用到中间表
  • 中间表的创建规则

    • 表名由多对多关系的两个表名称组成
    • 表中只有两个字段,分别建立对应外键关联到对应表的主键
    • 两个字段都是主键,组成联合主键
  • 示例代码

    -- 创建学生表
    CREATE TABLE student(s_id INT PRIMARY KEY AUTO_INCREMENT,		-- 学生表 ids_name VARCHAR(40) NOT NULL					-- 学生姓名字段
    );-- 创建中间表
    CREATE TABLE student_course(cc_id INT,									-- 课程表外键ss_id INT									-- 学生表外键
    );-- 插入数据
    INSERT INTO student_course VALUES(101 , 1);
    INSERT INTO student_course VALUES(101 , 2);
    INSERT INTO student_course VALUES(101 , 3);
    INSERT INTO student_course VALUES(102 , 3);
    INSERT INTO student_course VALUES(105 , 3);
    INSERT INTO student_course VALUES(104 , 2);INSERT INTO student VALUES(1,'张三');
    INSERT INTO student VALUES(2,'李四');
    INSERT INTO student VALUES(3,'王五');-- 添加外键
    ALTER TABLE student_course ADD CONSTRAINT c_sc FOREIGN KEY(cc_id) REFERENCES course(c_id);
    ALTER TABLE student_course ADD CONSTRAINT s_sc FOREIGN KEY(ss_id) REFERENCES student(s_id);
    
  • 多对多关系图

接下来,请看文章:多表查询!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/630492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32F103标准外设库——RCC时钟(六)

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…

PyQt5零基础入门(四)——信号与槽

信号与槽 前言信号与槽单对单直接连接使用lambda表达式 信号与槽多对多一个信号连接多个槽多个信号连接一个槽信号与信号连接 自定义信号 前言 PyQt5的信号与槽是一种对象之间的通信机制,允许一个QObject对象发出信号,与之相连接的槽函数将会自动执行。…

漏洞复现-科荣AIO UtilServlet任意命令执行漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

【MySQL】管理用户

DCL-管理用户 查询用户 use mysql; select * from user;创建用户 create user 用户名主机名 identified by 密码;修改用户密码 alter user 用户名主机名 identidied with mysql_native_password by 新密码;删除用户 drop user 用户名主机名;创建用户test,只能够…

地震预测系统项目实现

整个项目思路即在一组观测数据中&#xff0c;地震专家&#xff08;即用户&#xff09;输入观测窗口的最小数量和最大数量&#xff0c;进行预测峰值点 数据文件如图所示&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<fstream> #include<string> #include&…

CSS 设置背景图片

文章目录 设置背景颜色设置背景图片背景图片偏移量计算原点背景图片尺寸设置背景图片位置设置背景图片重复方式设置背景范围设置背景图片是否跟随元素移动测试背景图片 本文概念部分参考&#xff1a;CSS背景background设置 设置背景颜色 background-color 设置背景颜色 设置…

当我们谈上下文切换时我们在谈些什么

相信不少小伙伴面试时&#xff0c;都被问到过这样一个问题&#xff1a;进程和线程的区别是什么&#xff1f;大学老师会告诉我们&#xff1a;进程是资源分配的基本单位&#xff0c;线程是调度的基本单位。说到调度&#xff0c;就不得不提到CPU的上下文切换了。 何为CPU上下文切换…

香港服务器托管:你对服务器托管了解多少?

在当今数字化的时代&#xff0c;服务器托管已成为企业和网站运营的关键一环。对于许多企业来说&#xff0c;如何选择一个安全、稳定、高效的服务器托管方案&#xff0c;成为了确保业务连续性和数据安全的重要课题。那么&#xff0c;究竟什么是服务器托管&#xff0c;它又有哪些…

使用WAF防御网络上的隐蔽威胁之扫描器

在网络安全领域&#xff0c;扫描器是用于侦察和识别网络系统漏洞的工具。 它们可以帮助网络管理员识别安全漏洞&#xff0c;也可能被攻击者用来寻找攻击目标。 扫描器的基本概念 定义&#xff1a;扫描器是一种自动化工具&#xff0c;用于探测网络和服务器中的漏洞、开放端口、…

手机崩溃日志的查找与分析

手机崩溃日志的查找与分析 摘要 本文介绍了一款名为克魔助手的iOS应用日志查看工具&#xff0c;该工具可以方便地查看iPhone设备上应用和系统运行时的实时日志和崩溃日志。同时还提供了崩溃日志的分析查看模块&#xff0c;可以对苹果崩溃日志进行符号化、格式化和分析&#x…

统计学R语言 实验3 点估计

统计学R语言 实验3 点估计 一、实验目的 1. 掌握理解点估计的相关概念和方法。 2. 掌握理解点估计的估计质量好坏判断方法。 3. 熟悉R语言等语言的集成开发环境。 二、实验分析与内容 某灯泡厂从某日生产的一批灯泡中抽取10个灯泡进行寿命试验&#xff0c;得到灯泡寿命&…

leetocode 15 三数之和

题目 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例…

Linux网络引导自动安装centos7

目录 一、部署PXE远程安装服务 1. 系统装机的三种引导方式 2. pxe概述 3. 实现过程 4. 搭建过程中服务介绍 4.1 TFTP服务 4.2 vsftp&#xff1a;安装系统镜像文件获取方式 4.3 syslinux 4.4 DHCP服务 5. 操作过程 二、实现Kickstart无人值守安装 1. 安装Kickstart图…

计算机三级(网络技术)——应用题

第一题 61.输出端口S0 &#xff08;直接连接&#xff09; RG的输出端口S0与RE的S1接口直接相连构成一个互联网段 对172.0.147.194和172.0.147.193 进行聚合 前三段相同&#xff0c;将第四段分别转换成二进制 11000001 11000010 前6位相同&#xff0c;加上前面三段 共30…

AI图片物体移除器:高效、便捷的AI照片物体擦除工具

在我们的日常生活中&#xff0c;照片是一种重要的记录和表达方式。然而&#xff0c;有时候我们会遇到需要将照片中的某些物体和元素去除的情况。这时候&#xff0c;传统的图像处理软件可能过于复杂&#xff0c;让人望而却步。为了解决这个问题&#xff0c;AI图片物体移除器的软…

运筹说 第104期 | 2023全球高被引科学家名单发布!

2023年11月15日&#xff0c;全球领先的专业信息服务提供商科睿唯安发布2023年度“全球高被引科学家”名单&#xff0c;遴选全球高校、研究机构和商业组织中对所在研究领域具有重大和广泛影响的顶尖科学人才。最终&#xff0c;来自全球67个国家和地区1300多个机构的6849名科学家…

Node cool 跨域问题的解决

1.问题 自己在写后端接口的时候 发现一个接口在抖音小程序上可以调用 浏览器上也可以直接打开 但是在H5 的请求中 一直就是cors error 前端报这个跨域问题 在后端 报not Found 一开始以为是找不到 经过确定 发现是跨域问题 2.解决 在全局 configuration.ts 文件里有个全局…

申请开启|成为亚马逊云科技 Community Builder,共建云端社区!

在探索由技术打造的云端世界时&#xff0c;和同行者一起学习&#xff0c;与技术专家共同探讨是开发者成长的最佳助力&#xff01; 亚马逊云科技开发者社区 Community Builders 为技术爱好者和新兴思想领袖提供技术资源、学习和交流机会&#xff0c;帮助开发者探索、分享技术相关…

详解SpringCloud微服务技术栈:Gateway网关(断言、过滤器、跨域问题)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;详解SpringCloud微服务技术栈&#xff1a;Feign远程调用、最佳实践、错误排查 &#x1f4da;订阅专栏&#xff1a;微服务技术全家…