SQL的主键和外键详解!

news/2025/2/23 4:02:14/

我是小玉,一个平平无奇的小天才!

主键和外键

概念:

SQL的主键表示唯一标识一条记录,不能有重复的,不允许为空。例如:一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
SQL的外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。外键与主键相对,作用就是通过主外键的之间关系使对张表中的数据更好的关联。

区别:

主键——一个表主键只能有一个

外键——一个表可以有多个外键

作用

主键——用来保证数据完整性
外键——用来和其他表建立联系用的

举例:

关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键。

比如:

学生表(学号,姓名,性别,班级),其中每个学生的学号是唯一的,学号就是一个主键;
课程表(课程编号,课程名,学分),其中课程编号是唯一的,课程编号就是一个主键;
成绩表(学号,课程号,成绩),成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以,学号和课程号的属性组是一个主键。(必须是属性组,一个表只能有一个主键)

成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键;同理,成绩表中的课程号是课程表的外键。

主键和外键的创建

主键:

主键一般在建表的时候会默认设置为 primary key,例如

create table students (
StudentNo int PRIMARY KEY IDENTITY(1,1), --加主键约束,还有标识列属性(两者构成实体完整性)
StudentName nvarchar(15) not null, --加非空约束,不加"not null" 默认为:可以为空
StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), --加外键约束,格式:FOREIGN KEY REFERENCES 关联的表名(字段名)
)

在上述的表的创建过程中,我们直接将StudentNo设置为主键了。
但有时候我们在建表的时候忘记设置主键,之后也是可以在这个表的后边补上。例如:

alter table 表名
add constraint 字段名 primary key
外键:

我们也可以用类似的方法进行外键的添加:

alter table 表名
add constraint 字段名
foreign key (字段名) references 关联的表名(关联的字段名)--注意'关联的表名'和'关联的字段名'

关于常用的主键和外键的介绍就给大家提供这么多,有问题可以留言!


http://www.ppmy.cn/news/777522.html

相关文章

sql外键_SQL外键

sql外键 When a database table is designed an important factor is to make sure that the table is scalable enough and is normalized at the same time. In order to make sure that the tables are well linked and normalized we use SQL foreign keys. 设计数据库表时…

数据库SQL语句之外键

数据库的关系模型中包括了①主键②外键③索引 本文主要讲解的是外键 一对一模型 即一个表的记录对应到另一个表的唯一一个记录 例如,students表的每个学生可以有自己的联系方式,如果把联系方式存入另一个表contacts,我们就可以得到一个“一…

SQL学习(七):怎么给一张表添加外键(四种方法)

如何添加外键 方法一:直接在属性值后面添加 create table score( cscore int(11), st_id int(50) references student(id), cs_id int(30) references classes(id), primary key(st_id,cs_id) ); 方法二: create table score( cscore int(11), st_id…

sql_外键

一、外键的定义 1. 外键是一种索引,是通过一张表中的一列指向另一张表的主键,使得这两张表产生关联 2. 是某个表中的一列,它包含在另一个表的主键中 3. 一张表中可以有一个外键也可以有多个外键 二、外键的作用 减少单张表的冗余信息 三…

SQL语句中的主键和外键

一.主键: 1.1)主键字段定义: 在数据库表中,如果有一组字段能够唯一确定一条记录,则可以把它们设计成表的主键字段。 例子:如果要创建一个人的信息表(字段:姓名,年龄,籍…

Elasticsearch + Kibana+Docker实现词云

需求 实现文件导入es,支持格式TXT、DOC、PPT、XLS、PDF、图片ik分词器远程热更新自定义扩展字典和停用字典Kibana配置词云,并显示对应文档详情和字典频次,且自定义显示字典 技术点 文件导入:es插件ingest-attachment图片文字识…

途乐证券|沪指缩量跌0.69%,汽车等板块走弱,稀土概念逆市活跃

6日早盘,三大股指股指盘中震动回落,科创50指数逆市上扬;两市半日成交超5000亿元,北向资金小幅净流出。 到午间收盘,沪指跌0.53%报3205.97点,深成指跌0.39%,创业板指跌0.61%,科创50指…

对比Excel两个sheet的数据是否相同

Excel存在两个sheet&#xff0c;名字分别叫admin和user再新建一个sheet&#xff0c;在A1单元格中输入公式【IF(admin!A1<>user!A1,“admin:”&admin!A1&" vs user:"&user!A1,"")】&#xff0c;两个sheet中相同的数据会显示空&#xff0c…