当前位置: 首页 > news >正文

数据库继续学习


  1. 数据库中的外键约束的作用是什么?

    • 外键约束用于在多表操作中保证数据的一致性、完整性和正确性。它确保引用的数据在主表中存在,从而避免孤立记录的出现。
  2. 物理外键与逻辑外键的选择?

    • 推荐使用逻辑外键。逻辑外键是指在应用程序层面上实现外键约束,而不是在数据库层面。这样做的好处是可以提供更大的灵活性,允许在不同的数据库系统之间更容易地迁移数据,同时也可以在不依赖数据库外键约束的情况下实现业务逻辑。

      在SQL Server中实现物理外键,可以通过以下步骤进行:

    • 首先,确保要创建外键的两个表已经存在,并且外键字段的数据类型与主键字段的数据类型相匹配。

    • 使用ALTER TABLE语句或CREATE TABLE语句来创建外键约束。以下是使用ALTER TABLE语句创建外键的基本语法:

    • ALTER TABLE 子表名
      ADD CONSTRAINT 外键约束名
      FOREIGN KEY (外键列名)
      REFERENCES 主表名 (主键列名)

      例如,如果有两个表OrdersCustomers,想要在Orders表中添加一个指向Customers表的外键,可以执行如下操作:

      ALTER TABLE Orders
      ADD CONSTRAINT FK_CustomerOrder
      FOREIGN KEY (CustomerID)
      REFERENCES Customers (CustomerID)

      这样,Orders表中的CustomerID字段就被设置为外键,引用了Customers表的CustomerID字段。

    • 可以为外键约束添加附加选项,如ON DELETE CASCADE(当主表的记录被删除时,相关的外键记录也会被删除)或ON UPDATE CASCADE(当主表的记录更新时,相关的外键记录会被更新)等,以满足不同的业务需求。

    • 如果需要删除外键约束,可以使用ALTER TABLE语句,并指定外键约束名,如下所示:

    • 可以使用SQL Server Management Studio (SSMS) 图形化工具来创建外键,通过对象资源管理器找到目标表,右键点击表选择“设计”,然后在表设计器中设置外键关系。
    • 通过这些步骤,你可以在SQL Server中实现物理外键,以确保数据的完整性和一致性。

      ALTER TABLE 子表名
      DROP CONSTRAINT 外键约束名

      例如,要删除上面创建的外键约束FK_CustomerOrder,可以使用:

      ALTER TABLE Orders
      DROP CONSTRAINT FK_CustomerOrder

  1. 数据库中如何体现多对多的表关系?
  2. 需要建立一张中间表,中间表中有两个外键字段,分别关联两方的主键。

在数据库设计中,多对多关系是指两个实体间可以有多个实例相互关联。例如,学生和课程的关系,一个学生可以选修多门课程,一门课程也可以被多个学生选修。为了在关系型数据库中实现这种关系,通常会创建一个中间表(也称为联结表或关联表),这个中间表不包含其他业务字段,只用于存储两个实体间的关系。

中间表至少包含两个外键字段,这两个字段分别作为两个实体表的主键的外键。这样,中间表的每一条记录都代表了一个实体与另一个实体的关联关系。例如,在学生和课程的多对多关系中,中间表可能包含student_idcourse_id两个字段,它们分别引用了学生表和课程表的主键。

这种设计允许数据库以规范化的方式存储多对多关系,同时保持数据的一致性和完整性。


 

  1. 左外连接(LEFT JOIN):

    • 语法:SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 连接条件;
    • 说明:左外连接会返回左表(表1)的所有记录,即使右表(表2)中没有匹配的记录。如果右表中没有匹配的记录,结果集中右表的字段将显示为NULL。
  2. 右外连接(RIGHT JOIN):

    • 语法:SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 连接条件;
    • 说明:右外连接会返回右表(表2)的所有记录,即使左表(表1)中没有匹配的记录。如果左表中没有匹配的记录,结果集中左表的字段将显示为NULL。

在实际使用中,OUTER关键字可以省略,因为LEFT JOINRIGHT JOIN默认就是外连接。例如:

  • 左外连接示例:SELECT * FROM Employees LEFT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
  • 右外连接示例:SELECT * FROM Employees RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

相关文章:

数据库继续学习

数据库中的外键约束的作用是什么? 外键约束用于在多表操作中保证数据的一致性、完整性和正确性。它确保引用的数据在主表中存在,从而避免孤立记录的出现。 物理外键与逻辑外键的选择? 推荐使用逻辑外键。逻辑外键是指在应用程序层面上实现外键…...

车载以太网-UDPNM

文章目录 UDPNM定义在车载以太网中的作用网络节点状态监测唤醒和睡眠管理网络拓扑发现工作流程消息发送消息接收与处理与其他车载网络协议的比较和协作UDPNM的工作原理是什么?1.消息构建与发送原理消息格式构建发送机制2.消息接收与响应原理接收过程响应机制3.状态管理与定时器…...

网页核心页面设计(第8章)

一、伪元素 伪元素是 CSS 中的一种选择器,用于选择某些特定的元素或元素的一部分,而这些元素本身并不存在于文档的结构中。伪元素使得网页设计师可以更灵活地控制样式,从而可以为元素的内容、框架或文本提供额外的样式,增强网页的…...

在PowerShell下运行curl命令出现错误:Invoke-WebRequest : 无法处理参数,因为参数名称“u”具有二义性

今天在Windows 11下测试Nanamq的HTTP API,按照其文档输入: curl -i --basic -u admin:public -X GET "http://localhost:8081/api/v4/subscriptions" 结果出现二义性错误: 而且输入curl --help命令想看看参数说明的时候&#xff…...

医疗花费预测——协方差矩阵和热力图

引言 在医疗数据分析中,预测个人的医疗花费是一个重要的课题。这不仅有助于个人健康管理,也为医疗资源的合理分配提供了数据支持。本篇博客,我们将探讨如何利用协方差矩阵和热力图来分析和预测个人的医疗花费。我们将以DataFountain提供的数…...

react antd tabs router 基础管理后台模版

在构建 React 后台管理系统时,使用标签页的方式展示路由是一种高效且用户友好的设计模式。这种实现方式通常允许用户在多个页面之间快速切换,并保留页面的状态,类似于浏览器的多标签页功能。 需求分析 1.动态标签页:根据用户的导…...

【数据结构——栈与队列】环形队列的基本运算(头歌实践教学平台习题)【合集】

目录😋 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:编写一个程序实现环形队列的基本运算。 相关知识 为了完成本关任务,你需要掌握: 初始化队列、销毁队列、判断队列是否为空、进队列…...

【数据结构——栈与队列】链栈的基本运算(头歌实践教学平台习题)【合集】

目录😋 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:编写一个程序实现链栈的基本运算。 相关知识 为了完成本关任务,你需要掌握: 初始化栈、销毁栈、判断栈是否为空、进栈、出栈、取栈…...

GIT CLONE ERROR: remote: [session-ec426a86] Access denied

报错信息: remote: [session-ec426a86] Access denied 错误原因: 1.更换了不同的GIT仓或者账号 2.之前设置了默认账号密码信息 3. git init 只初始化了GIT项目,并没有清空原有的账号密码配置 处理方法: win11需要到个人文件…...

GitHub 正式收录 MoonBit 作为一门通用编程语言!核心用户突破三万!

MoonBit 编程语言正式被 Github 收录!这对于一个仅有两年发展时间的编程语言来说是一种高度认可,期待未来由 MoonBit 编写的项目数量快速增长,早日成为首个由国人研发迈进 10 万➕ 用户的编程语言。 最近用户数已经接近 3 万(数据…...

PHP中GD库的使用

由于我要用到php的验证码 <?php session_start();// 生成验证码 $random_code substr(md5(uniqid(mt_rand(), true)), 0, 6);// 将验证码保存到 session 中 $_SESSION[captcha] $random_code;// 创建图片 $font 6; $image_width 100; $image_height 40;// 创建图像 $…...

docker安装Elasticsearch和Kibana

上传文件 加载tar包 安装 1.安装elasticsearch 通过下面的Docker命令即可安装单机版本的elasticsearch&#xff1a; docker run -d \--name es \-e "ES_JAVA_OPTS-Xms512m -Xmx512m" \-e "discovery.typesingle-node" \-v es-data:/usr/share/elastics…...

【Linux】文件管理必备知识和基本指令

【Linux】文件管理必备知识和基本指令 什么是操作系统什么是文件什么是路径01. ls 指令02. pwd命令03. cd 指令04. touch指令05.mkdir指令&#xff08;重要&#xff09;&#xff1a;06.rmdir指令 && rm 指令&#xff08;重要&#xff09;&#xff1a;rmdir指令rm指令 0…...

欢迪迈手机商城设计与实现

文末获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 题目&#xff1a;欢迪迈手机商城设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管…...

量化交易系统开发-实时行情自动化交易-3.4.2.3.数字货币市场深度数据

19年创业做过一年的量化交易但没有成功&#xff0c;作为交易系统的开发人员积累了一些经验&#xff0c;最近想重新研究交易系统&#xff0c;一边整理一边写出来一些思考供大家参考&#xff0c;也希望跟做量化的朋友有更多的交流和合作。 接下来聊聊基于Okex交易所API获取市场深…...

有序集合ZSET【Redis对象篇】

&#x1f3c6; 作者简介&#xff1a;席万里 ⚡ 个人网站&#xff1a;https://dahua.bloggo.chat/ ✍️ 一名后端开发小趴菜&#xff0c;同时略懂Vue与React前端技术&#xff0c;也了解一点微信小程序开发。 &#x1f37b; 对计算机充满兴趣&#xff0c;愿意并且希望学习更多的技…...

力扣-图论-9【算法学习day.59】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非…...

如何选择安全、可验证的技术?

澳大利亚信号局的澳大利亚网络安全中心 (ASD 的 ACSC) 发布了一份指导文件&#xff0c;题为《选择安全和可验证的技术》&#xff0c;旨在帮助组织在采购软件&#xff08;专有或开源&#xff09;、硬件&#xff08;例如物联网设备&#xff09;和云服务&#xff08;SaaS、MSP 服务…...

Allure在自动化测试中的应用

01 Allure的简介及使用 1、应用场景 自动化的结果一定是通过一个报告来进行体现 Allure 是一个独立的报告插件&#xff0c;生成美观易读的报告&#xff0c;目前支持Python、Java、PHP、C#等语言 为dev/QA 提供详尽的测试报告、测试步骤、日志&#xff0c;也可以为管理层提供统…...

C# 探险之旅:第十一节 - 循环(foreach):一场“遍历”奇幻岛的大冒险!

嘿&#xff0c;勇敢的探险家们&#xff01;欢迎来到C#奇幻岛的第十一站——“遍历”奇幻岛&#xff01;今天&#xff0c;我们要乘坐一艘叫做foreach的魔法船&#xff0c;去遍历&#xff08;也就是一个一个看过来&#xff09;岛上那些神秘的宝藏箱&#xff01;准备好了吗&#x…...

Ubuntu24.04配置STMTrack

项目地址&#xff1a;https://github.com/fzh0917/STMTrack 一、安装 CUDA 参考链接&#xff1a; Ubuntu24.04配置DINO-Tracker Ubuntu多CUDA版本安装及切换 由于之前在其他项目中已经安装了 CUDA12.1&#xff0c;这次需要安装另一个版本。 1. 查看安装版本 按照 requireme…...

【Java学习笔记】Map接口和常用方法

一、 Map接口实现类的 特点[很实用] key是自己存的java对象 value是一个固定的 //当有相同的 k ,就等价于替换. 二、 Map常用方法 &#xff08;根据键–>k&#xff09; 三、Map接口遍历方法 package com.hspedu.map_; import java.util.*; /** * author 韩顺平 * ver…...

uniapp支持App横竖屏开发总结

一、需求&#xff1a; app要支持重力感应自动切换横竖屏&#xff0c;并切换后样式不能错乱 二、实现 官方文档 官方Git manifest.json文件中 "app-plus" : {"screenOrientation" : ["portrait-primary","portrait-secondary","…...

【工作笔记】Lombok版本变化导致的反序列化异常

Lombok版本变化导致的反序列化异常 背景 因为安全性的考虑&#xff0c;最近在梳理旧系统的系统依赖。改动依赖时候还好&#xff0c;毕竟只是换掉不再合作公司的旧依赖&#xff0c;没敢动别的太多东西。不过没多久&#xff0c;测试团队就找来了… 排查问题之第一次跑偏 旧系…...

多模态大语言模型 MLLM 部署微调实践

1 MLLM 1.1 什么是 MLLM 多模态大语言模型&#xff08;MultimodalLargeLanguageModel&#xff09;是指能够处理和融合多种不同类型数据&#xff08;如文本、图像、音频、视频等&#xff09;的大型人工智能模型。这些模型通常基于深度学习技术&#xff0c;能够理解和生成多种模…...

LNMP和Discuz论坛

文章目录 LNMP和Discuz论坛1 LNMP搭建1.1 编译安装nginx服务1.1.1 编译安装1.1.2 添加到系统服务 1.2 编译安装MySQL服务1.2.1 准备工作1.2.2 编辑配置文件1.2.3 设置路径环境变量1.2.4 数据库初始化1.2.5 添加mysqld系统服务1.2.6 修改mysql的登录密码 1.3 编译安装PHP服务1.3…...

Cadence学习笔记 2 PCB封装绘制

基于Cadence 17.4&#xff0c;四层板4路HDMI电路 更多Cadence学习笔记&#xff1a;Cadence学习笔记 1 原理图库绘制 目录 2、PCB封装绘制 2、PCB封装绘制 封装尺寸如下。 用Allegro做PCB封装前&#xff0c;要先做焊盘&#xff08;Allegro 比AD、PADS多一个步骤&#xff1a;绘制…...

网络安全——防火墙

基本概念 防火墙是一个系统&#xff0c;通过过滤传输数据达到防止未经授权的网络传输侵入私有网络&#xff0c;阻止不必要流量的同时允许必要流量进入。防火墙旨在私有和共有网络间建立一道安全屏障&#xff0c;因为网上总有黑客和恶意攻击入侵私有网络来破坏&#xff0c;防火…...

【CSS in Depth 2 精译_074】第 12 章 CSS 排版与间距概述 + 12.1 间距设置(下):行内元素的间距设置

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第四部分 视觉增强技术 ✔️【第 12 章 CSS 排版与间距】 ✔️ 12.1 间距设置 12.1.1 使用 em 还是 px12.1.2 对行高的深入思考12.1.3 行内元素的间距设置 ✔️ 12.2 Web 字体12.3 谷歌字体 文章目…...

短视频矩阵抖音SEO源码OEM独立部署

短视频优化矩阵源码涉及对抖音平台上的视频内容进行筛选与排序&#xff0c;目的是增强其在搜索引擎中的可见度&#xff0c;以便更多用户能够浏览到这些视频。而抖音SEO优化系统则是通过构建一个分析框架&#xff0c;来解析抖音上的用户数据、视频信息及标签等元素&#xff0c;并…...

珠宝店网站项目网页设计/荆州百度推广

<el-input-number v-model"num" :min"1" :max"10" label"描述文字"></el-input-number> 当num设置为 null 或者 "" 都不能将输入框的值变为空 后来发现 将num 设置为 undefined...

网站建设网络推广文章/个人网站首页设计

使用python制作ArcGIS插件&#xff08;4&#xff09;界面交互 by 李远祥 插件界面部分&#xff0c;除了一开始在设计器中设计的这些界面元素之外&#xff0c;还可以与操作系统进行一些输入输出的交互&#xff0c;这部分的实现全部在pythonaddins模块中。 pythonaddins模块包含了…...

做网站和做网页有什么区别/宁波seo托管公司

使用 get() 来处理返回的对象以得到基础的数组...

国内优秀的网站/网站页面禁止访问

1. 基本图算法 BFS和DFS详解以及java实现 推荐阅读 1. 广度优先搜索(BFS) 从临近源顶点s最近的顶点开始&#xff0c;通过对图G的边的探索发现从源顶点s能够抵达的每个顶点 1. 伪代码 BFS(G,s)for each vertex u 属于 G.V - {S}u.color WHITEu.d 无穷u.pi NILs.color GRA…...

嘉兴seo报价/南京seo收费

现在用wordpress的人越来越多&#xff0c;从个人到企业的博客。这Wordpress众多Wordpress资源有一定的关系。你可以通过选择一个适合自己的模板然后快速的建立自己的网站或者博客&#xff0c;甚者不需要任何专业的技术&#xff0c;就可以建立一个漂亮的站点。但是面对众多的模板…...

温州做网站就来温州易富网络/弹窗广告最多的网站

父窗体Form1 子窗体Form2 Form1中有一个datagridview控件和一添加按钮&#xff0c;Form2中有一个Text控件和一个保存按钮 要求点击Form1窗体上的添加按钮&#xff0c;弹出Form2&#xff0c;再text里面输入内容&#xff0c;点击保存自动关闭Form2&#xff0c;刷新Form1中datagri…...