当前位置:首页 » 操作系统 » 外键数据库

外键数据库

发布时间: 2022-12-25 01:36:20

1. 数据库中外键的概念及作用。

表A中有字段(如身份证号)做了主键,表B中也有这个字段(身份证号),这里的身份证号一定来自表A同样字段里的内容,那么表B的这个字段就叫表A字段的外键,也就是两个表以身份证号这个字段建立了联系。

表A中身份证号字段里面的身份证号一定是唯一的,不能有重复,而表B里面的同一个身份证号可以出现多次。这称为表A身份证号字段与表B身份证号字段建立了一对多的关系。

2. 数据库的主键和外键有什么区别

主键:
概念
主关键字(主键,primary key)是被挑选出来,作表的行的惟一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。 主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。
作用
1)保证实体的完整性;
2)加快数据库的操作速度
3) 在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。
4) ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
特点
1) 一个表中只能有一个主键。如果在其他字段上建立主键,则原来的主键就会取消。在ACCESS中,虽然主键不是必需的,但最好为每个表都设置一个主键。
2)主键的值不可重复,也不可为空(NULL)。

外键:

如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。

以上是摘抄的,简单来说,主键就是一个关系中作为标识用的,而外键是其他关系中的属性,使用外键可避免冗余。

3. 数据库中的外键是什么意思

外键(FK)是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。

当创建或更改表时可通过定义FOREIGNKEY约束来创建外键。

例如,数据库pubs中的titles表与publishers表有链接,因为在书名和出版商之间存在逻辑联系。

titles表中的pub_id列与publishers表中的主键列相对应。titles表中的pub_id列是到publishers表的外键。

(3)外键数据库扩展阅读:

保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值或使用空值。

学号在成绩表(表2)中是主键,在学生表(表1)中是外键。如果不使用外键,表1的学号字段插了一个值(比如20140999999),但是这个值在表2中并没有,这个时候,数据库允许插入,并不会对插入的数据做关系检查。

然而在设置外键的情况下,插入表1学号字段的值必须要求在表1的学号字段能找到。 同时,如果要删除表2的某个学号字段,必须保证表2中没有引用该字段值的列,否则就没法删除。

这就是所谓的保持数据的一致性和完整性。如右图,如果表1还引用表2的某个学号,却把表1中的这个学号删了,表2就不知道这个学号对应的学生是哪个学生。

4. 数据库语句怎么加外键

1、以具有 DBA 权限的用户身份连接到数据库,执行 ALTER TABLE 语句,将表定义更新为包括外键定义。创建一个名为 Skills 的表,其中包含潜在技能列表,然后创建一个与 Skills 表具有外键关系、名为 EmployeeSkills 的表。

5. 在数据库中的外键与主键的关系是什么,为什么要设外键

1、外键的概念:外键是关系数据库三个完整性的五个约束条件之一,是表与表之间建立的一种关系。在Oracle数据库的scott/tiger用户中,表Dept和Emp通过外键进行了关联。在这里Dept表叫主表,Emp表叫从表,外键是字段Deptno。x0dx0a2、加入外键的条件:a、两个表有相同属性字段,取值范围相同;x0dx0a b、外键在主表中是主键或者是唯一字段;x0dx0a c、外键可以是多个字段的组合。x0dx0a 记住一句话:从表的外键是主表的主键或唯一字段。

6. 数据库外键

所谓外键:如果公钥关系中是主键,然后在公共密钥被称为另一个关系的外键。因此,外键关系代表了两者之间的联系。与另一个表的主键的外键关系被称为主表的外键被称为主表,从表中的表。至于主键:主键被挑出唯一确定的候选键表行。一个表只能有一个主键。可以称为主键与主键。正如我们可以看到:如果名称是B表的主键,表A作为名称或外键。从上述定义表A表B是主表中,表A表B表,

7. 数据库外键约束

数据库外键约束:这个是实现表与表之间的约束,从表的字段值必须在主表中。存在外键约束毕竟是一个约束,只是保证数据完整性的一个手段。

8. 数据库中的外键是什么意思

外键也称为外码或外部关键字。如果一个属性集不是所在关系的关键字,但是是其他关系的关键字,则该属性集称为外部关键字。

在关系数据库中可以通过外键使两个关系关联,这种联系通常是一对多的,其中主关系称为被参照关系,从关系称为参照关系。

9. 数据库之主键外键

1,主键约束 (table的唯一标识)

能够作为主键列的特点:该列不能为空,不能有重复值出现

创建表时指定主键的两种方式:

CREATE TABLE stu(

sid CHAR(6) PRIMATY KEY,

sname VARCHAR(20),

age INT,

gender VARCHER(10)

);

指定sid列为主键列

CREATE TABLE stu(

sid CHAR(6),

sname VARCHAR(20),

age INT,

gender VARCHER(10),

PRIMARY KEY(sid)

);

指定sid列为主键列

修改表时指定主键:ALTER TABLE stu ADD PRIMATY KEY(sid);

删除主键:ALTER TABLE stu DROP PRIMARY KEY;

2,主键自增长

因为主键列的特性是:必须唯一,不能为空,所以我们通常会指定主键为整形,然后设置其自动增长

创建表时指定主键自增长:

CREATE TABLE stu(

sid INT PRIMARY KEY AUTO_INCREMENT,

sname VARCHAR(20),

age INT,

gender VARCHAR(10)

);

修改表时设置主键自增长:ALTER TABLE stu 

3,非空约束

CREATE TABLE stu(

sid INT PRIMARY KEY AUTO_INCREMENT,

sname VARCHAR(20) NOT NULL,

age INT,

gender VARCHAR(10)

);

对sname列设置了非空约束

4,唯一约束

某些列不能设置重复的值,所以可以对列添加唯一约束

CREATE TABLE stu(

sid INT PRIMARY KEY AUTO_INCREMENT,

sname VARCHAR(20) NOT NULL UNIQUE,

age INT,

gender VARCHAR(10)

);

6,外键约束

外键特点:外键必须是另一个表的主键的值(外键要引用主键!),外键可以重复,外键可以为空,一张表可以有多个外键!

CREATE TABLE dept( //部门表

deptno INT  PRIMARY KEY AUTO_INCREMENT,

deptname CHAR(20)

);

INSERT INTO dept VALUES(10,‘研发部’);

INSERT INTO dept VALUES(20,‘人力部’);

INSERT INTO dept VALUES(30,‘财务部’);

CREATE TABLE emp(   //员工表

empno INT PRIMARY KEY AUTO_INCREMENT,

ename VARCHAR(50),

dno INT, //员工所属部门(外键),

CONSTRAINT fk_emp_dept FOREIGN KEY(dno) REFERENCES dept(deptno)

);

INSERT INTO emp(empno,ename)  VALUES(NULL,‘张三’),//外键可以不传入值

INSERT INTO emp(empno,ename)  VALUES(NULL,‘李四’,10),//外键可以重复

INSERT INTO emp(empno,ename)  VALUES(NULL,‘王五’,10),

INSERT INTO emp(empno,ename)  VALUES(NULL,‘赵六’,80),//dept表没有主键值为80的记录,sql客户端编译报错

7,一对一关系模型

创建老公表

CREATE TABLE hashand(

hid INT PRIMARY KEY AUTO_INCREMENT,

hname VARCHAR(50),

);

INSERT INTO hashand VALUES(NULL,‘刘备’);

INSERT INTO hashand VALUES(NULL,‘关羽’);

INSERT INTO hashand VALUES(NULL,‘张飞’);

SELECT * FROM hashand

//创建老婆表

CREATE TABLE wife(

wid INT PRIMARY KEY AUTO_INCREMENT,

wname VARCHAR(50),

CONSTRAINT fk_wife_hashand FOREIGN KEY(wid)  REFERENCES hashand(hid)

)

/**

wid:

1,非空

2,唯一

3,引用hid

*/

INSERT INTO wife VALUES(1,‘杨贵妃’);

INSERT INTO wife VALUES(2,‘妲己’);

INSERT INTO wife VALUES(3,‘褒姒’);

SELECT * FROM wife;

对于一对一关系模型从表的主键即是外键,例如老公和老婆的关系模型,一个老公只能有一个老婆,一个老婆只能有一个老公

对于一对多关系模型主表的主键即是从表的外键,例如订单和用户的关系模型,一个用户可以下单多次,对应多个订单,而一个订单只能属于一个用户

对于多对多关系模型没有主表和从表之分,需要建立第三张表来记录这两张表的外键,建立两个外键,分别引用这两张表的主键

8,多对多关系模型

在表中简历多对多关系需要使用中间表,即需要三张表,在中间表中使用两个外键,分别引用其他两个表的主键,例如学生和老师的关系模型,一个老师可以有多个学生,一个学生可以有多个老师

CREATE TABLE student(

sid INT PRIMARY KEY AUTO_INCREMENT,

sname CHAR(40)

);

CREATE TABLE teacher(

tid INT PRIMARY KEY AUTO_INCREMENT,

tname CHAR(40)

);

CREATE TABLE stu_tea(

sid INT,

tid INT,

ADD CONSTRAINT fk_stu_tea_sid FOREIGN KEY(sid) REFERENCES student(sid),

ADD CONSTRAINT fk_stu_tea_tid FOREIGN KEY(tid) REFERENCES teacher(tid)

);

INSERT INTO student VALUES(NULL,‘刘德华’);

INSERT INTO student VALUES(NULL,‘梁朝伟’);

INSERT INTO student VALUES(NULL,‘黄日华’);

INSERT INTO student VALUES(NULL,‘苗侨伟’);

INSERT INTO student VALUES(NULL,‘汤镇业’);

INSERT INTO teacher VALUES(NULL,‘崔老师’);

INSERT INTO teacher VALUES(NULL,‘刘老师’);

INSERT INTO teacher VALUES(NULL,‘石老师’);

SELECT * FROM student;

SELECT * FROM teacher;

INSERT INTO stu_tea VALUES(1,1); //刘德华是崔老师的学生

INSERT INTO stu_tea VALUES(2,1); //梁朝伟是崔老师的学生

INSERT INTO stu_tea VALUES(3,1);//黄日华是崔老师的学生

INSERT INTO stu_tea VALUES(4,1);//苗侨伟是崔老师的学生

INSERT INTO stu_tea VALUES(5,1);//汤镇业是崔老师的学生

INSERT INTO stu_tea VALUES(2,2);//梁朝伟是刘老师的学生

INSERT INTO stu_tea VALUES(3,2);//黄日华是刘老师的学生

INSERT INTO stu_tea VALUES(4,2);//苗侨伟是刘老师的学生

INSERT INTO stu_tea VALUES(3,3);//黄日华是石老师的学生

INSERT INTO stu_tea VALUES(5,3);//汤镇业是刘老师的学生

SELECT * FROM stu_tea;

这时在stu_tea这个中间表中的每条记录都是来说明student表和teacher表的关系的

例如在stu_tea表中的记录:sid为1001,tid为2001,这说明编号为1001的学生有一个编号为2001的老师

sid          tid

1001       2001 //编号为1001的学生有一个编号为2001的老师

1001       2002 //编号为1001的学生有一个编号为2002的老师

1001       2003 //编号为1001的学生有一个编号为2003的老师

1002       2001 //编号为2001的老师有一个编号为1002的学生

1002       2004 //编号为2004的老师有一个编号为1002的学生

9,合并结果集

要求要合并的结果集中,列的类型和列数相同

UNION,去除重复行,UNION ALL,不去除重复行

热点内容
为什么还要输入支取密码 发布:2025-05-11 08:32:24 浏览:362
数据库课程设计案例 发布:2025-05-11 08:15:33 浏览:51
为什么安卓不能通过蓝牙传东西 发布:2025-05-11 08:15:27 浏览:717
tomcat下载linux 发布:2025-05-11 07:47:06 浏览:792
phpcookie设置时间 发布:2025-05-11 07:36:15 浏览:111
固态硬盘需要缓存吗 发布:2025-05-11 07:29:09 浏览:606
松江换门密码锁哪里有 发布:2025-05-11 07:23:21 浏览:327
自动配置代理什么意思 发布:2025-05-11 07:16:51 浏览:994
notepad编写php 发布:2025-05-11 07:10:50 浏览:865
茄子快传的文件夹 发布:2025-05-11 07:04:30 浏览:734