MySQL基础入门(二)

多表内容

一对多

这个内容是黑马的入门问题,可以带大家思考一下这个怎么设计
在这里插入图片描述
我们要知道一个岗位可以对应很多用户,而一个用户只能对应一个岗位,这就属于一对多的类型
那么我们需要怎么将他们进行关联呢?
现在我们可以通过一个新的知识点来进行关联,使用外键进行约束。

外键约束

在关系型数据库中,外键约束(Foreign Key Constraint)是一种用于维护表与表之间关系的约束。它定义了两个表之间的引用关系,确保引用数据的完整性和一致性。

外键约束的作用可以总结为以下几点:

引用完整性:外键约束确保引用的数据必须存在于被引用的表中,以确保数据的完整性。这意味着在插入或更新数据时,引用的值必须存在于引用表的主键列或唯一索引列中。

数据一致性:外键约束确保引用的数据在被引用表中的变动能够正确反映在引用表中。如果尝试删除或修改被引用表中的某行数据,但在引用表中存在对该行数据的引用,则会触发外键约束,阻止删除或修改操作,以保持数据一致性。

关联查询:外键约束还可以用于进行关联查询。通过定义外键关系,可以使用JOIN操作来连接相关的表,从而实现跨表查询和数据关联分析。
在创建表时,可以使用FOREIGN KEY关键字来定义外键约束。一个外键约束通常由两个部分组成:

1.外键列(Foreign Key Column):在引用表中的列,用于存储与被引用表相关联的值。

2.引用表(Referenced Table):被引用的表,其中包含外键列对应的主键列或唯一索引列。

举例使用

CREATE TABLE orders (order_id INT PRIMARY KEY,customer_id INT,order_date DATE,...FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

这个定义了一个一个名为orders的表,其中customer_id列作为外键列,引用了customers表中的customer_id列。这样,每次插入或更新orders表时,数据库会验证customer_id的值是否存在于customers表的customer_id列中,并确保数据引用的完整性和一致性。

设计

下面我们来解决我们先前的问题,一个员工表和一个岗位表的外键约束
先直接创建这个员工表和岗位表

-- 创建岗位表
CREATE TABLE Position (position_id INT PRIMARY KEY,position_name VARCHAR(50)
);-- 创建员工表
CREATE TABLE Employee (employee_id INT PRIMARY KEY,employee_name VARCHAR(50),position_id INT,FOREIGN KEY (position_id) REFERENCES Position(position_id)
);

我们可以知道,员工的岗位内容,是依赖于岗位表的变化而变化的,当岗位表不需要某一个岗位的时候,公司就会将这部分员工剔除,那么员工中被删除岗位的那部分将被清除。
Position 表包含了岗位的信息,其中 position_id 是主键列,用于唯一标识每个岗位。Employee 表包含了员工的信息,其中 employee_id 是主键列,position_id 是外键列,用于关联岗位表的主键列 position_id。通过在 Employee 表的外键列上添加 FOREIGN KEY 约束,并引用 Position 表的主键列,我们可以正确的建立了员工表和岗位表之间的关联。

多对多类型

建立第三张中间表,中间表至少需要包含两个外键,分别关联两方的主键。
假设我们有两个表:学生表(Student)和课程表(Course),一个学生可以选择多门课程,一门课程也可以被多个学生选择。我们可以使用中间表来记录学生和课程之间的关联关系。

下面是一个示例 SQL 代码,展示了如何创建学生表、课程表和中间表,并建立它们之间的多对多关系:

-- 创建学生表
CREATE TABLE Student (student_id INT PRIMARY KEY,student_name VARCHAR(50)
);-- 创建课程表
CREATE TABLE Course (course_id INT PRIMARY KEY,course_name VARCHAR(50)
);-- 创建中间表
CREATE TABLE Student_Course (student_id INT,course_id INT,FOREIGN KEY (student_id) REFERENCES Student(student_id),FOREIGN KEY (course_id) REFERENCES Course(course_id),PRIMARY KEY (student_id, course_id)
);

学习这部分知识,需要多进行设计,联系,做到真正的熟练使用。

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

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

相关文章

yolov8官方新版源码中没有requirements.txt

题外话:最近在帮用户安装yolov8环境的时候,用户说最新版的没有requirements.txt文件,不知道怎么安装。最开始我还以为是用户下错了的呢,最后一看官方居然还真的没有。不得不说。ultralytics公司更新代码的速度可是真的快。 其实官…

苹果紧急修复两大零日漏洞,影响iPhone、iPad 和 Mac 设备

内容概述: 近日,苹果公司发布紧急安全更新,此次更新修复了两个在攻击中被利用并影响 iPhone、iPad 和 Mac 设备的零日漏洞。据统计,自今年年初以来已修复的零日漏洞数量已达到 20 个。其中提到此次发现的零日漏洞很可能已被iOS 1…

汽车保养软件app开发步骤

“增强您的动力,为您的旅程加油——每一刻都讲述着关爱的故事。构建汽车维护软件app,为您的车辆提供数字化的维修站,从而开启长寿之路。智能驾驶、互联驾驶、自信驾驶。” 疯狂地搜索旧收据并猜测上次换油时间的日子已经一去不复返了。如果您…

如何使用甘特图进行项目管理?

或许你在工作中或项目启动会议上听说过“甘特图”一词,但对此了解不多。虽然这些图表可能变得相当复杂,但基础知识并不难掌握。通过本文,你将清楚地了解什么是甘特图、何时使用甘特图、创建甘特图的技巧等等。 什么是甘特图? 甘特…

弱电工程计算机网络系统基础知识

我们周围无时无刻不存在一张网,如电话网、电报网、电视网、计算机网络等;即使我们身体内部也存在许许多多的网络系统,如神经系统、消化系统等。最为典型的代表即计算机网络,它是计算机技术与通信技术两个领域的结合。 计算机网络的…

python使用openpyxl操作excel

文章目录 前提读取已有excel创建一个excel工作簿对象创建excel工作簿中的工作表获取工作表第一种:.active 方法第二种:通过工作表名获取指定工作表​​​​​​第三种:.get_sheet_name() 修改工作表的名称数据操作写入数据按单元格写入通过指…

brew 安装openapi-generator提示@@HOMEBREW_JAVA@@/bin/java: No such file or directory

brew 安装openapi-generator之后,运行openapi-generator命令,提示HOMEBREW_JAVA/bin/java: No such file or directory 经过一番查阅,应该是Java没有配置到环境变量中 查询电脑已经安装的Java版本 /usr/libexec/java_home 编辑.bash_profile…

同义词替换降低论文相似度的注意事项 papergpt

大家好,今天来聊聊同义词替换降低论文相似度的注意事项,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 标题:同义词替换降低论文相似度的注意事项 …

Mybatis分页插件之PageHelper生效and失效原理解析

文章目录 前言整合PageHelperPageHelper生效原理PageHelper的分页参数和线程绑定核心拦截逻辑生成分页SQLdialect.afterAll() PageHelper失效原理分页失效案例分页失效原理总结 Mybatis拦截器系列文章:从零开始的 MyBatis 拦截器之旅:实战经验分享 构建自…

软件工程总复习笔记

软件工程课程复习提纲 文章目录 软件工程课程复习提纲一、基本知识点1. 软件工程的概念及目标2. 软件危机的概念及典型表现3. 瀑布模型的概念及特点4. 快速原型模型的特点5. 螺旋模型的基本思想6. 软件生命周期的概念及划分为哪几个阶段7. 软件需求的定义8. 常见的软件需求获取…

C++基础:指针数组和数组指针(大白话讲解)

指针数组&#xff1a;本质上是一个数组&#xff0c;数组中的每一个元素都是一个指针&#xff1b; 数组指针&#xff1a;本质上是一个指针&#xff0c;数组指针是一个指向数组的指针。 为了更直观的分析他们的区别&#xff0c;我举个例子&#xff1a; #include<iostream&g…

二手房交易流程及避坑指南

文章目录 一、写作目的二、主要流程1、查档2、签定金合同3、网签4、交首付5、解押过户6、出产证7、拿房款8、交房 一、写作目的 近几个月房价一直跌跌不休&#xff0c;对于投资客来说这段时间肯定不好过&#xff0c;但这段时间也正是置换房子的好时候&#xff0c;在这次的房产…