`

SQL外键及建立关系时各选项的讲解

    博客分类:
  • java
阅读更多
    子表,父表的定义: 拥有外键的表是子表。主键被<a target="_self"><span style="text-decoration: underline;">其它</span></a>表引用的表是父表。<br>换句话说:因为父表的标识被很多个子表中的记录引用,所以叫父表。<br>拥有外键关系,并且可以随便删除数据,不影响其它表的数据的那个表叫子表。<br><br>使用的时候谁做为谁的外键,主要从以下两点考虑:<br>          1/,删除是如何相互影响的,删除记录受约束的那个是父表,不受约束的那个是子表;<br>          2/,记录必须先存在的是父表;
<span>关于外键、关系以</span><br><br>两种用途:<br>1/, 最常用的一种: 减少重复数据.表a中拥有外键,表b的数据基本是不允许删除的.这时选择对 insert 和 update 强制关系即可.<br>2/,其次,是增加一个从属表. 如果表a删除一条记录时,表b中也随着删除一条相关联的记录,那么外键关系中,表a的主键是表b的外键。这种关系,实际上表b是表a的从属表(即表a是父表),选择对 insert 和 update 强制关系时,如果向表b中插入数据,表a中必须已经存在对应的记录。选择级联删除相关的字段时,删除表a中的一条记录,就会删除对应的表b中的一条记录。<br><br><br>参考资料:<br><br>1,sql2000 中 ,设计表>管理关系中 关于外键的5个选项都起什么作用?<br><br>创建中检查现存数据<br><br>创建关系时将关系应用于外键表中的现有数据。如果选定该对话框,一个错误信息将会通知您有违反约束的数据。<br><br>对 insert 和 update 强制关系<br><br>如果选择该选项,则只要使用这些语句在外键表中添加或更新数据时都将强制约束。<br><br>对复制强制关系<br><br>如果选择该选项,则无论何时将外键表复制到一个不同的<a target="_self"><span style="text-decoration: underline;">数据库</span></a>,都将强制关系的引用完整性。<br>级联更新相关的字段<br><br>无论何时更新主键值,都指示数据库将新的键值传播到相应的外键字段。<br><br>级联删除相关的字段<br><br>无论何时删除主表中的行,都指示数据库从外键表中删除相应的行。<br><br>2,cascade 有 什么作用?<br><br>on   delete   {cascade   |   no   action}<br>  <br>指定当表中被更改的行具有引用关系,并且该行所引用的行从父表中删除时,要对被更改行采取的操作。默认设置为   no   action。   <br>  <br>如果指定   cascade,则从父表中删除被引用行时,也将从引用表中删除引用行。如果指定   no   action,sql   server   将产生一个错误并回滚父表中的行删除操作。<br>  <br>如果表中已存在   on   delete   的   instead   of   触发器,那么就不能定义   on   delete   的cascade   操作。<br>  <br>例如,在   northwind   数据库中,orders   表和   customers   表之间有引用关系。orders.customerid   外键引用   customers.customerid   主键。<br>  <br>如果对   customers   表的某行执行   delete   语句,并且为   orders.customerid   指定   on   delete   cascade   操作,则   sql   server   将在   orders   表中检查是否有与被删除的行相关的一行或多行。如果存在相关行,那么   orders   表中的相关行将随   customers   表中的被引用行一同删除。<br>  <br>反之,如果指定   no   action,若在   orders   表中至少有一行引用   customers   表中要删除的行,则   sql   server   将产生一个错误并回滚   customers   表中的删除操作。<br>  <br>on   update   {cascade   |   no   action}<br>  <br>指定当表中被更改的行具有引用关系,并且该行所引用的行在父表中更新时,要对被更改行采取的操作。默认设置为   no   action。   <br>  <br>如果指定   cascade,则在父表中更新被引用行时,也将在引用表中更新引用行。如果指定   no   action,sql   server   将产生一个错误并回滚父表中的行更新操作。<br>  <br>如果表中已存在   on   delete   的   instead   of   触发器,那么就不能定义   on   delete   的cascade   操作。<br>  <br>例如,在   northwind   数据库中,orders   表和   customers   表之间有引用关系。orders.customerid   外键引用   customers.customerid   主键。<br>  <br>如果对   customers   表的某行执行   update   语句,并且为   orders.customerid   指定   on   update   cascade   操作,则   sql   server   将在   orders   表中检查是否有与被更新行相关的一行或多行。如果存在相关行,那么   orders   表中的相关行将随   customers   表中的被引用行一同更新。<br>  <br>反之,如果指定了   no   action,若在   orders   表中至少存在一行引用   customers   表中要更新的行,那么   sql   server   将引发一个错误并回滚   customers   表中的更新操作。<br>3,一个sql创建外键的例子:<br><br>/*建库,名为student_info*/<br>create database student_info<br>/*使用student_info*/<br>use student_info<br>go<br>/*建student表,其中s_id为主键*/<br><span style="color: #008000;">create table student<br>(<br>s_id int identity(1,1) primary key,<br>s_name varchar(20) not null,<br>s_age int<br>)<br></span>go<br>/*建<a target="_self"><span style="text-decoration: underline;">test</span></a>表,其中test_no为主键*/<br><span style="color: #008000;">create table test<br>(<br>test_no int identity(1,1) primary key,<br>test_name varchar(30),<br>nax_marks int not null default(0),<br>min_marks int not null default(0)<br>)<br></span>go<br>/*建marks表,其中s_id和test_no为外建,分别映射student表中的s_id和test表中的test_no*/<br><span style="color: #008000;">create table marks<br>(<br>s_id int not null,<br>test_no int not null,<br>marks int not null default(0),<br>primary key(s_id,test_no),<br>foreign key(s_id) references student(s_id),<br>foreign key(test_no) references test(test_no)<br>)<br></span><span style="color: #000000;">go</span>
 
0
5
分享到:
评论

相关推荐

    在powerdesigen中建立主外键关联表

    外键(Foreign Key)则是引用另一个表的主键,用于建立两个表之间的关系,确保数据的一致性和参照完整性。 步骤1:创建概念数据模型(Conceptual Data Model,CDM) 打开PowerDesigner,选择“文件”&gt;“新建”&gt;...

    mysql外键的使用

    在关系数据库中,外键用于建立和加强两个表之间的联系,确保引用的完整性。本文将详细讲解MySQL中外键的使用及其重要性。 首先,理解外键的定义:外键(Foreign Key)是一个字段,它的值来源于另一个表的主键。这个...

    LINQ通过外键级联添加和删除数据库的示例

    在关系型数据库中,外键是一个字段,它的值来源于另一个表的主键,用于建立和维护两个表之间的关联。级联操作是指当主表中的记录被添加或删除时,根据外键约束,从表的相关记录也会自动进行相应的添加或删除。 在C#...

    SQL2005数据库学习课件 讲解详细

    SQL2005数据库系统是微软公司推出的一款重要的关系型数据库管理系统,对于初学者和专业人士来说,都是一个深入了解数据库管理、查询和优化的良好平台。本课件“SQL2005数据库学习课件 讲解详细”正是针对这一主题,...

    sql2000教程与数据库建立

    本教程旨在帮助初学者及有经验的用户深入理解SQL Server 2000,通过详细讲解与实际操作相结合的方式,让大家能够熟练地建立和管理数据库。 1. **SQL Server 2000概述**:SQL Server 2000是由Microsoft开发的数据库...

    sql教案讲解.doc

    ### 数据库原理与SQL Server 2021详解...以上是关于数据库原理与SQL Server 2021的详细介绍,涵盖了数据库的基础概念、关系数据库的基本术语、范式理论、E-R模型、SQL Server 2021的新增功能及管理工具等方面的知识点。

    sql sever自学教程 pdf格式

    SQL Server是一款由微软公司开发的关系型数据库管理系统,广泛应用于企业数据存储、管理和分析。本教程专为初学者设计,旨在帮助你快速掌握SQL Server的基本概念、安装与配置、数据库管理以及查询语言SQL。 1. SQL ...

    数据库技术与应用 外键约束-D习题与作业.doc

    本篇将详细讲解外键约束的含义、作用以及如何在实际应用中设置。 首先,外键(Foreign Key,简称FK)是一种数据库约束,用于建立并维护两个表之间的关联。它指向另一个表的主键(Primary Key,简称PK),这个“另一...

    北大青鸟SQL Server课件3.0 (PPT)

    在SQL Server中,数据以表格形式存储,每个表格称为一个表,表之间可以通过键(如主键和外键)建立关系,形成了关系型数据库的基础。学习SQL Server,首先要理解实体、属性、关系等数据库设计的基本概念。 【安装与...

    SQL SQL2000 数据库使用指南 图解教程

    SQL Server 2000是微软公司推出的一款关系型数据库管理系统,它在企业级数据管理、分析和应用程序开发中扮演着重要角色。本教程通过丰富的图解,使得复杂的数据库概念变得易于理解,非常适合对数据库技术感兴趣的...

    SQL Server 2000 学习教程

    接着,教程将带领读者熟悉SQL Server 2000的安装与配置过程,包括服务器的启动、停止以及设置安全性选项,如登录账户、权限管理和角色分配。这部分内容对于确保数据库系统的稳定运行至关重要。 数据库的设计和创建...

    《数据库应用技术-SQL Server 2005实用教程》

    此外,还会讲解如何配置SQL Server服务、设置安全选项以及连接到数据库引擎。 2. **数据库设计**:数据库设计是整个应用的基础,本教程将涵盖关系数据库理论,如实体关系模型(ER模型),以及如何使用SQL Server ...

    SQL2000电子版教程

    这一章会详细阐述如何安装SQL Server 2000,包括硬件和软件需求、安装选项以及安装过程中的注意事项。同时,也会讲解配置服务器和数据库的步骤,确保系统能够正常运行。 第三章:数据库和表的管理 本章将深入讨论...

    sql2005创建数据库和表

    本教程将详细讲解如何在SQL Server 2005中进行这些操作,并通过两个实际的例子来展示如何设置关系、主键、约束和默认值。 首先,我们来创建一个新的数据库。在SQL Server Management Studio (SSMS) 中,选择“对象...

    oracle sql developer操作分析.doc

    以下将详细讲解SQL Developer的一些核心功能和操作技巧。 1. **创建SQL脚本文件** - **方法一**:在SQL Developer的“文件”菜单中,选择“新建”&gt;“SQL脚本”,即可创建一个新的SQL编辑窗口,然后在此窗口中编写...

    数据库原理与SQL Server PPT教案和PPT,讲义

    2. 关系数据库:详细讲解关系理论,包括实体、属性、键、外键等概念,以及第一范式(1NF)、第二范式(2NF)和第三范式(3NF)等规范化原则。 3. SQL语言:SQL(Structured Query Language)是用于管理和处理关系...

    sql速成教程

    - **建立数据库时的选项:** 设定数据库参数。 - **设计数据库:** 规划数据库结构。 - **建立数据字典:** 管理数据库元数据。 - **建立关键字段:** 定义主键、外键等。 - **CREATETABLE语句:** 创建新表。 - **...

    SQL 2000 速成版

    2. 安装与配置:详述SQL Server 2000的安装步骤,包括硬件需求、软件环境配置、安装选项选择以及服务器的启动与停止。 3. 数据库管理:讲解如何创建、修改和删除数据库,理解数据库文件的类型(如MDF、NDF、LDF)...

    SQL Server实例大全

    《SQL Server实例大全》是一本全面讲解SQL Server数据库管理系统的实用教程,包含了各种实际操作案例,旨在帮助读者深入理解和熟练掌握SQL Server的核心功能。通过丰富的实例和详尽的注释,本书旨在提升读者在数据库...

Global site tag (gtag.js) - Google Analytics