SQL Server:主键与外键设置与相关理解

这篇具有很好参考价值的文章主要介绍了SQL Server:主键与外键设置与相关理解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、定义与作用

主键:表中能够唯一地辨别事物的属性。通过主键能够查询出表中一条完整的记录,同时使用主键能防止表中出现重复的记录,避免了数据的冗余。

外键:通俗讲就是表中一个属性是来自另一张表的主键,该属性被称为该表的外键,外键可以有不止一个。外键存在的意义就是将事物与事物之间联系起来。

二、SSMS设置表的主键与外键

1、利用SQL语句建立查询设置

举了一个学生、课程以及学生成绩关系表的例子:

--代码
create table [表名] (
    属性名 类型 primary key,
    属性名 类型 foreign key references [外键来自的表](外键的属性名),
    属性名 类型 not null,
    属性名 类型 null,
        ···  ···);

--实例
create table Student(                        --创建Student表
	Stu_id varchar(10) primary key,          --学号Stu_id设置为主键
	Stu_name nvarchar(10) not null,          --学生姓名
	Stu_sex nvarchar(2) default '男');       --学生性别,设置默认值为'男'


create table Course(                         --创建课程信息表Course
	Course_id varchar(4) primary key,        --课程编号Course_id设置为主键
	Course_name varchar(10) not null);       --课程姓名


create table StudentGrade(                                            --创建成绩表
	stu_id varchar(10) foreign key references Student(Stu_id),        --学生学号设置为外键
	Course_id varchar(4) foreign key references Course(Course_id),    --课程号设置为外键
	Grade int null);                                                  --学生成绩

2、利用鼠标点击操作创建(SSMS环境下)

     1) 设置主键 

a.在已创建Student表的前提下,点击Student表,右击,选择<设计>

SQL Server:主键与外键设置与相关理解

         b.选择属性Stu_id,右击,选择设置主键

SQL Server:主键与外键设置与相关理解

SQL Server:主键与外键设置与相关理解

         设置完成,Course表主键设置同上。

        2)设置外键

a.选择StudentGrade表,如1)中a所示选择<设计>

b.选择属性Stu_id,右击,选择<关系>

SQL Server:主键与外键设置与相关理解

c.在弹出的窗口选择<添加> 

SQL Server:主键与外键设置与相关理解

d.点击表和列规范最右边的三个小点(白色背景可能看不到,但点最右边也差不多了)

SQL Server:主键与外键设置与相关理解

e.关系名可以重新编辑,最好是能让自己记得住或看得懂含义的名字。将主键表和外键表设置完后点击右下方确认即可。

SQL Server:主键与外键设置与相关理解

 三、主键表与外键表(个人的总结与反思...)

 刚开始上课的时候我就有点搞不清主键表与外键表,特别是设置的这张图里,SQL Server:主键与外键设置与相关理解(假设正在设置的这张StudentGrade表称为本表,其他表相对地称为外表),我认为外键表应该是指外键本来所在的表,即外表,因此应该设置为Student才对,但是这个框框一直编辑不了;而主键表应该指我正在编辑的这张StudentGrade表才对,但是当选择StudentGrade之后,下面列选项的框框就变成空的,没有列可选。

SQL Server:主键与外键设置与相关理解

 但是将两个操作互换后又能得到想要的结果,所以当时就半懵半混过去了。

然后偶然听到郝斌老师的课之后才恍然大悟

        首先,主键表应该是指外键所来自的那个表,即例子中的Student表,在Student表中Stu_id是该表的主键,因此该表称为主键表;而外键表则指Stu_id扮演外键的时候所在的表,即例子中StudentGrade表。文章来源地址https://www.toymoban.com/news/detail-406066.html

到了这里,关于SQL Server:主键与外键设置与相关理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Django之主键外键详解

    在ORM操作处了解的文章中,我们已经初步接触到了主键与外键的字段定义,那么本文以详细介绍主键外键的使用方法等 1.外键 在Django中,外键是一种关系字段,用于建立不同模型之间的关联关系。外键字段允许一个模型引用另一个模型的主键,从而创建模型之间的关系。 使

    2024年02月07日
    浏览(36)
  • 主键和外键的含义及区别

    表中经常有一个列或多个列的组合,其值能唯一的标识表中的每一行。这样的一列或多列称为表的主键。 外键:用来表示表与表之间联系,是表中的一个列。 主键和外键都是用于维护数据库完整性的一种机制。 1、主键是唯一标识一条记录,不能重复,不允许为空;而外键可

    2024年02月12日
    浏览(40)
  • SQL设置自增主键

    当表中字段无法充当主键或者无法设置联合主键时,可以考虑用自增序号设置主键 前提表中需要先创建一个id字段,用于充当主键,然后再进行以下操作 参数含义介绍: – 这里注意使用英文符号 – 序列重置到1000

    2024年02月13日
    浏览(40)
  • 主键、外键、建表范式、MySQL索引、用户管理

    1.1 问题 完成如下练习: 练习主键的创建、查看、删除、添加、验证主键 练习复合主键的使用 练习与auto_increment连用的效果 1.2 方案 主键使用规则: 表头值不允许重复,不允许赋NULL值 一个表中只能有一个primary key 表头 多个表头做主键,称为复合主键,必须一起创建和删除

    2024年01月16日
    浏览(49)
  • MySQL:创建数据库,数据表,主键和外键

    目录 前言: 安装MySQL: 打开MySQL: 创建数据库: 查看已建数据库: 查看数据库引擎: 创建数据表:  主键约束: 单字段主键: 多字段联合主键: 外键约束: MySQL数据库安装了很久,一直也没静下心来学习,因为起步太晚,所以什么都想学点,又感觉有些力不从心,目前

    2023年04月27日
    浏览(135)
  • 一文彻底搞清楚MySQL的主键、外键、约束和各种索引

    主键用于唯一标识表中每一行数据,外键用于建立表与表之间关联关系,约束用于限制表中数据的规则,索引用于加速查询。 主键是一种用于唯一标识表中每一行数据的标识符。在Mysql中,主键可以是一个或多个列的组合,但是必须满足以下条件: 主键列的值必须唯一,不能

    2024年02月08日
    浏览(51)
  • 通过DBeaver 给Postgre SQL表 设置主键自增

    1.创建表 CREATE TABLE public.company ( id int4 NOT NULL , name text NOT NULL, age int4 NOT NULL, address bpchar(50) NULL, salary float4 NULL, join_date date NULL, CONSTRAINT company_pkey PRIMARY KEY (id) ); 2.插入数据(不传入id) INSERT INTO public.company (name, age, address, salary, join_date) VALUES(\\\'Kobe\\\', 20, \\\'Lake\\\', 10000, \\\'1996-07-13\\\');  

    2024年02月12日
    浏览(71)
  • 【MySQL】MySQL表的约束-空属性/默认值/列属性/zerofill/主键/自增长/唯一键/外键

    表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束的本质是通过计数手段,倒逼程序员,插入正确的数据,反过来,站在mysql的视角,凡是插入进来的数据,都是符合约束的 约束的最终模板:保证数据的完整性和可预期性

    2024年02月01日
    浏览(49)
  • SQL SERVER 日期函数相关内容

    最近跟日期相关的内容杠上了,为方便自己后期查阅,特地做笔记。 DECLARE @chanenddate datetime----截止日期转成当天的年月日+尾巴 DECLARE @chanbengindate datetime----开始日期转成当天的年月日+0000000   截取日期的 年月日,字符串类型 convert(varchar, cast(@begindate as date), 23) 截取日期的 时

    2024年02月11日
    浏览(42)
  • SQL Server 查询数据并汇总相关技巧 23.08.08

    GROUPING 是一个聚合函数,它产生一个附加的列,当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0。 仅在与包含 CUBE 或 ROLLUP 运算符的 GROUP BY 子句相联系的选择列表中才允许分组。 语法 GROUPING ( column_name ) 参数 col

    2024年02月14日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包