foreign key是什么约束(数据库的4键2约束指的是什么)

2024-07-23 06:27:40 11

foreign key是什么约束(数据库的4键2约束指的是什么)

本文目录

数据库的4键2约束指的是什么

对表中的数据进行限定,保证数据的正确性、有效性和完整性。分类:①、主键约束:primary key②、非空约束:not null③、唯一约束:unique④、外键约束:foreign key一、非空约束:not null,某一列的值不能为null创建表时添加约束CREATE TABLE stu(id INT,NAME VARCHAR(20) NOT NULL -- name为非空);12341234创建表完后,添加非空约束CREATE TABLE stu(id INT,NAME VARCHAR(20));ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;123456123456在这里插入图片描述删除name的非空约束ALTER TABLE stu MODIFY NAME VARCHAR(20);11在这里插入图片描述二、唯一约束:unique,某一列的值不能重复注意:唯一约束可以有NULL值,但是只能有一条记录为null在创建表时,添加唯一约束CREATE TABLE stu(id INT,phone_number VARCHAR(20) UNIQUE -- 手机号);12341234在这里插入图片描述删除唯一约束ALTER TABLE stu DROP INDEX phone_number;11在这里插入图片描述在表创建完后,添加唯一约束ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;11三、主键约束:primary key。注意:①、含义:非空且唯一②、一张表只能有一个字段为主键③、主键就是表中记录的唯一标识在创建表时,添加主键约束create table stu(id int primary key,-- 给id添加主键约束name varchar(20));12341234在这里插入图片描述删除主键-- 错误 alter table stu modify id int ;ALTER TABLE stu DROP PRIMARY KEY;1212在这里插入图片描述创建完表后,添加主键create table stu(id int,name varchar(20));ALTER TABLE stu MODIFY id INT PRIMARY KEY;123456123456自动增长:①、概念:如果某一列是数值类型的,使用 auto_increment 可以来完成值得自动增长②、在创建表时,添加主键约束,并且完成主键自增长create table stu(id int primary key auto_increment,-- 给id添加主键约束name varchar(20));12341234在这里插入图片描述③、 删除自动增长ALTER TABLE stu MODIFY id INT;11在这里插入图片描述④、添加自动增长ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;11四、外键约束:foreign key,让表于表产生关系,从而保证数据的正确性。CREATE TABLE emp(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(30),age INT,dep_name VARCHAR(30),dep_location VARCHAR(30));INSERT INTO emp VALUES (1, ’张三’, 20, ’研发部’, ’广州’);INSERT INTO emp VALUES (2, ’李四’, 21, ’研发部’, ’广州’);INSERT INTO emp VALUES (3, ’王五’, 20, ’研发部’, ’广州’);INSERT INTO emp VALUES (4, ’老王’, 20, ’销售部’, ’深圳’);INSERT INTO emp VALUES (5, ’大王’, 22, ’销售部’, ’深圳’);INSERT INTO emp VALUES (6, ’小王’, 18, ’销售部’, ’深圳’);12345678910111213141234567891011121314在这里插入图片描述通过上面的表格,我们可以知道,表中的信息是员工在不同的部门里面,于是我们可以将上面的一张表分开,分成两张表格。一张部门的表,一张员工的表。-- 创建部门表(id,dep_name,dep_location)CREATE TABLE department(id INT PRIMARY KEY AUTO_INCREMENT,dep_name VARCHAR(20),dep_location VARCHAR(20));-- 创建员工表(id,name,age,dep_id)CREATE TABLE employee(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),age INT,dep_id INT -- 外键对应主表的主键 );-- 添加两个部门INSERT INTO department VALUES(NULL, ’研发部’,’广州’),(NULL ,’销售部’, ’深圳’);-- 添加员工信息INSERT INTO employee (NAME,age,dep_id) VALUES(’张三’,20,1);INSERT INTO employee (NAME,age,dep_id) VALUES(’李四’,21,1);INSERT INTO employee (NAME,age,dep_id) VALUES(’王五’,20,1);INSERT INTO employee (NAME,age,dep_id) VALUES(’老王’,20,2);INSERT INTO employee (NAME,age,dep_id) VALUES(’大王’,22,2);INSERT INTO employee (NAME,age,dep_id) VALUES(’小王’,18,2);123456789101112131415161718192021222324123456789101112131415161718192021222324在这里插入图片描述倘若现在我们把删除department表里面的数据,是可以删除的;但是这不符合实际情况。因为我们此时虽然删除掉了deparment表里的数据,但是employee表里面还是存在部门的信息。只有当部门里面的员工全部开除后,我们才可以删除部门表。1.添加外键在创建表时,可以添加外键:create table 表名(....外键列constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称));1234512345-- 创建员工表(id,name,age,dep_id)CREATE TABLE employee(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),age INT,dep_id INT, -- 外键对应主表的主键 CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id));1234567812345678删除外键ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;11创建表之后,添加外键ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);112. 级联操作我们如果要是直接在deparment表中直接将id=1修改为id=5的话,是不可以的。因为department的id被关联到employee表中了,所以修改会产生错误。;但是我们可以通过级联操作进行修改。添加级联操作语法:ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE;123123分类:①、级联更新:ON UPDATE CASCADE②、级联删除:ON DELETE CASCADE示例演示:①、删除外键employee表中的外键(因为此时表中已经添加外键,需要先删除)-- 删除外键ALTER TABLE employee DROP FOREIGN KEY emp_dept_fk;1212②、添加外键的同时,还要添加级联操作ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY ( dep_id ) REFERENCES department ( id ) ON UPDATE CASCADE ON DELETE CASCADE;11③、倘若我们现在要是删除employee表中id=1的数据,那么department表中的数据也会跟着一起更新数据。delete from department where id=1;11-- 查询department表数据select * from department;1212在这里插入图片描述-- 查询employee表数据select * from employee;1212在这里插入图片描述

数据库里的foreign key表示什么意思

外键的意思,举个例子:有两张表course和score表,课程表中有个courseId字段,在成绩表中也会用到课程表中的courseId字段,那么这个courseId字段在成绩表中来说就是一个foreign key哈。不知道楼主理解没。。。

SQL语句的外键约束是什么

create table score。

SQL的主键和外键的作用:外键取值规则:空值或参照的主键值。

(1)插入非空值时,如果主键表中没有这个值,则不能插入。

(2)更新时,不能改为主键表中没有的值。

(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。

(4)更新主键记录时,同样有级联更新和拒绝执行的选择。

简而言之,SQL的主键和外键就是起约束作用。

alter table 外键表名 add constraint 约束名称 foreign key (外键字段) references 主键表名(约束列名)。

如果表A中的Ids是主键,要约束表B中得Aid列,那么语句应该是:alter table B add constraint A_B_Ids foreign key(Aid) references A(Ids)。

SQL 的foreign key 约束具体怎么用,(表已创建好了之后)再用代码具体怎么写

SQL FOREIGN KEY 约束

一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。

让我们通过一个实例来解释外键。请看下面两个表:

“Persons”表:

“Orders”表:

-from 树懒学堂

请注意:

  • ”Orders” 表中的 “P_Id” 列指向 “Persons” 表中的 “P_Id” 列。

  • “Persons” 表中的 “P_Id” 列是 “Persons” 表中的 PRIMARY KEY。

  • “Orders” 表中的 “P_Id” 列是 “Orders” 表中的 FOREIGN KEY。

  • FOREIGN KEY 约束用于预防破坏表之间连接的行为。

  • FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

ALTER TABLE 时的 SQL FOREIGN KEY 约束

当 “Orders” 表已被创建时,如需在 “P_Id” 列创建 FOREIGN KEY 约束,请使用下面的 SQL:

MySQL / SQL Server / Oracle / MS Access:

-from shulanxt

希望对题主有所帮助~

SQL的 “foreign key ”有什么用

SQL FOREIGN KEY 约束\x0d\x0a一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。\x0d\x0a通过一个例子来解释外键。请看下面两个表:\x0d\x0a"Persons" 表:\x0d\x0aId_PLastName FirstName Address City\x0d\x0a1Adams John Oxford Street London\x0d\x0a2Bush George Fifth Avenue New York\x0d\x0a3Carter Thomas Changan Street Beijing\x0d\x0a\x0d\x0a"Orders" 表:\x0d\x0aId_OOrderNo Id_P\x0d\x0a177895 3\x0d\x0a244678 3\x0d\x0a322456 1\x0d\x0a424562 1\x0d\x0a\x0d\x0a请注意,"Orders" 中的 "Id_P" 列指向 "Persons" 表中的 "Id_P" 列。\x0d\x0a"Persons" 表中的 "Id_P" 列是 "Persons" 表中的 PRIMARY KEY。\x0d\x0a"Orders" 表中的 "Id_P" 列是 "Orders" 表中的 FOREIGN KEY。\x0d\x0aFOREIGN KEY 约束用于预防破坏表之间连接的动作。\x0d\x0aFOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。\x0d\x0a\x0d\x0a下面的 SQL 在 "Orders" 表创建时为 "Id_P" 列创建 FOREIGN KEY:\x0d\x0aCREATE TABLE Orders\x0d\x0a(\x0d\x0aO_Id int NOT NULL,\x0d\x0aOrderNo int NOT NULL,\x0d\x0aId_P int,\x0d\x0aPRIMARY KEY (O_Id),\x0d\x0aFOREIGN KEY (Id_P) REFERENCES Persons(Id_P)\x0d\x0a)\x0d\x0a\x0d\x0a如需撤销 FOREIGN KEY 约束,请使用下面的 SQL:\x0d\x0a\x0d\x0aALTER TABLE Orders\x0d\x0aDROP FOREIGN KEY fk_PerOrders

数据库 foreign key中的语句是什么意思

foreign key 是个约束,意思是说如果你给A字段设置了外键约束,以后你要往A字段插入数据,这个数据一定是要在foreign key 后面跟的那个字段中存在的值。这个的意义就是约束了数据的完整性,不会插入错误的数据。打个比方你要给成绩这张表中的学生学号这个字段插入学号。如果这个学号设置了外键是学生表的学号,那么你要给成绩表的学号插入的学号一定是学生表的学号存在的,不会插入一个学生表中不存在的学号

外码约束和外键约束一样吗

一样。外码约束和外键约束是一样的,两者没什么区别。外码约束外键 (Foreign Key)约束:实施参照完整性约束。表中某列值只能引用其它表的主键列或唯一键列,参照完整性含义。外码约束或外键约束 foreign key指的是多表之间的,可以保护数据。

什么是外键约束

外键约束是指用于在两个表之间建立关系,需要指定引用主表的哪一列。

外键约束对子表如此检查处理:

在子表上进行INSERT、UPDATE 操作的限制是,要和主表中的主键值匹配,或为NULL, 否则不允许。

外键约束对父表如此检查处理:

在父表_上进行UPDATE、DELETE操作的限制,取决于在定义子表的外键时指定的ON UPDATE、ON DELETE子句(不同的DBMS支持的情况不尽相同)。众ON DELETE子 句各选项的作用:

1、No ACTION :删除主表记录,如果子表中有和主表匹配的记录,则不允许(产生一个错误提示)。此为默认操作(不指定ON DELETE子句, 系统自动采取的操作)。

2、CASCADE  (级联):删除主表记录,也将删除子表中的匹配记录。

3、SET NULL :删除主表记录,将子表中的匹配记录的外键值改为NULL。

4、SET DEFAULT :删除主表记录,将子表中的匹配记录的外键值改为默认值。众ONUPDATE子句各选项的作用。

扩展资料

外键的用途是确保数据的完整性。它通常包括以下几种: 

1、实体完整性,确保每个实体是唯一的(通过主键来实施) 

2、域完整性,确保属性值只从一套特定可选的集合里选择 

3、关联完整性,确保每个外键或是NULL(如果允许的话)或含有与相关主键值相配的值。

约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。例如,如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在 titles 表中记录书的信息时使用了。

则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了。

FOREIGN KEY 约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。

如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该操作不可实现。

若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。 

foreign key是什么约束(数据库的4键2约束指的是什么)

本文编辑:admin

更多文章:


二进制怎么算举例(二进制是怎么计算的)

二进制怎么算举例(二进制是怎么计算的)

各位老铁们好,相信很多人对二进制怎么算举例都不是特别的了解,因此呢,今天就来为大家分享下关于二进制怎么算举例以及二进制是怎么计算的的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录二进制是怎么计算的二进制的算法 多

2024年8月31日 06:50

currency symbol(java怎么输出货币符号)

currency symbol(java怎么输出货币符号)

大家好,如果您还对currency symbol不太了解,没有关系,今天就由本站为大家分享currency symbol的知识,包括java怎么输出货币符号的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录java怎

2024年9月3日 22:50

关于编程的图片(数控车床编程实例带图的)

关于编程的图片(数控车床编程实例带图的)

大家好,关于编程的图片相信很多的网友都不是很明白,包括数控车床编程实例带图的也是一样,不过没有关系,接下来就来为大家分享关于关于编程的图片和数控车床编程实例带图的的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录数

2024年6月29日 22:27

国家法定假期几天?假期的意思假期的意思是什么

国家法定假期几天?假期的意思假期的意思是什么

大家好,如果您还对假期不太了解,没有关系,今天就由本站为大家分享假期的知识,包括国家法定假期几天的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录国家法定假期几天假期的意思假期的意思是什么法定假期多少天法定假期有哪些

2024年7月19日 07:35

linux磁盘使用率过大现象(服务器磁盘占用过高问题解决)

linux磁盘使用率过大现象(服务器磁盘占用过高问题解决)

大家好,如果您还对linux磁盘使用率过大现象不太了解,没有关系,今天就由本站为大家分享linux磁盘使用率过大现象的知识,包括服务器磁盘占用过高问题解决的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录服务器磁盘占

2024年8月4日 05:35

mid find组合函数(excel函数MID与FIND)

mid find组合函数(excel函数MID与FIND)

大家好,今天小编来为大家解答以下的问题,关于mid find组合函数,excel函数MID与FIND这个很多人还不知道,现在让我们一起来看看吧!本文目录excel函数MID与FINDExcel中Mid配合Find公式 查找县或者区mid/f

2024年7月15日 13:45

paint英语怎么读(paint用英语怎么读)

paint英语怎么读(paint用英语怎么读)

本文目录paint用英语怎么读paint英语怎么说paint用英语怎么读paint的读音:英 。paint,英语单词,名词、动词,作名词时意为“油漆;颜料;(非正式)化妆;三秒区;(尤指模拟真画效果的)绘画功能;花马,(美)潘(人名)”,

2024年7月21日 02:33

小程序滚动条样式(微信小程序怎么scroll-view始终出现滚动条)

小程序滚动条样式(微信小程序怎么scroll-view始终出现滚动条)

本文目录微信小程序怎么scroll-view始终出现滚动条微信小程序怎么解决padding出现滚动条[wx]微信小程序自定义下拉刷新易语言怎么用纵向滚动条使主窗口向下滚动微信小程序实现左右联动的菜单列表手机滚动屏幕怎么搞微信小程序使用 on

2024年6月6日 00:47

textarea行数(如何得到textarea内容的高度或textarea内容的行数)

textarea行数(如何得到textarea内容的高度或textarea内容的行数)

大家好,textarea行数相信很多的网友都不是很明白,包括如何得到textarea内容的高度或textarea内容的行数也是一样,不过没有关系,接下来就来为大家分享关于textarea行数和如何得到textarea内容的高度或textar

2024年8月12日 04:40

act中文意思(act什么意思)

act中文意思(act什么意思)

本文目录act什么意思Act是什么意思ACT游戏中的ACT是什么意思act是什么意思Act的汉语意思是什么“Act”的汉语意思是什么act名词是什么意思act什么意思[英][ækt][美][ækt]vt.& vi.行动;做;表演;起作用n.

2024年5月7日 18:14

java配置csdn(如何在Java中设置TCP的KeepAliveTime-CSDN论坛)

java配置csdn(如何在Java中设置TCP的KeepAliveTime-CSDN论坛)

本文目录如何在Java中设置TCP的KeepAliveTime-CSDN论坛java socket编程中怎么获得本机mac-CSDN论坛CSDN上下载的JAVA东城大学在线答疑系统如何部署到tomcat上java HttpClient设置代

2024年7月23日 19:13

塞尔达传说荒野之息全攻略(塞尔达传说荒野之息全主线任务攻略 塞尔达传说全主线任务图文攻略)

塞尔达传说荒野之息全攻略(塞尔达传说荒野之息全主线任务攻略 塞尔达传说全主线任务图文攻略)

“塞尔达传说荒野之息全攻略”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看塞尔达传说荒野之息全攻略(塞尔达传说荒野之息全主线任务攻略 塞尔达传说全主线任务图文攻略)!本文目录塞尔达传说荒野之息全主线任务攻略 塞尔达传说全主线

2024年7月3日 22:46

电脑怎么强制结束任务(可以怎样强制关闭电脑运行程序)

电脑怎么强制结束任务(可以怎样强制关闭电脑运行程序)

本文目录可以怎样强制关闭电脑运行程序电脑强制关闭程序怎么操作怎么强制关闭电脑程序如何强制退出当前程序可以怎样强制关闭电脑运行程序本视频演示机型:组装台式机,适用系统:Windows10;首先打开电脑屏幕,多点开几个运行程序,然后在键盘上找到

2024年7月3日 12:18

oracle查询数据库名称(怎样查看一个oracle数据库名称)

oracle查询数据库名称(怎样查看一个oracle数据库名称)

其实oracle查询数据库名称的问题并不复杂,但是又很多的朋友都不太了解怎样查看一个oracle数据库名称,因此呢,今天小编就来为大家分享oracle查询数据库名称的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录

2024年8月24日 13:25

染发色板颜色大全(爱染发的女生注意了,染发色板5/36/3是什么颜色呢)

染发色板颜色大全(爱染发的女生注意了,染发色板5/36/3是什么颜色呢)

本文目录爱染发的女生注意了,染发色板5/36/3是什么颜色呢2020年最好看的染发颜色染发一共有哪几种颜色呀染发色板颜色及效果图男士染发颜色大全色板 男生染发什么颜色好看爱染发的女生注意了,染发色板5/36/3是什么颜色呢5/3是5°的黄色

2024年7月12日 12:19

主页模板主页(如何制作QQ空间主页模板)

主页模板主页(如何制作QQ空间主页模板)

本文目录如何制作QQ空间主页模板抖音商家主页模板怎么设置如何使用模板制作个人主页什么是个人主页模板51主页模板可以自己做吗如何制作QQ空间主页模板出现提示该地址没有审核的时候同时会出现示例,那里有很多网站可选,上传到腾讯审核过的网站即可,最

2024年7月20日 23:06

structures built(胡夫金字塔   英语介绍)

structures built(胡夫金字塔 英语介绍)

本文目录胡夫金字塔 英语介绍Collapsible Soilbuild怎么读胡夫金字塔 英语介绍A reference to Egypt, it was first thought of the pyramid is because

2024年7月17日 08:55

anxiety的形容词(“不安”的英语怎么说)

anxiety的形容词(“不安”的英语怎么说)

本文目录“不安”的英语怎么说don’t worry ! 和 don’t be worried ! 有什么区别worry用法形容人的情绪情绪词英语“不安”的英语怎么说名词‘不安’:unease, uneasiness, disturbance

2024年7月10日 09:31

python从小到大的顺序输出(python 从键盘输入a、b两个数,按大小顺序输出它们)

python从小到大的顺序输出(python 从键盘输入a、b两个数,按大小顺序输出它们)

本文目录python 从键盘输入a、b两个数,按大小顺序输出它们编写Python程序,对三个整型数据按从小到大的顺序输出python整数从小到大排序python按从小到大的顺序输出python输入三个数从小到大排序python作业:用分支语

2024年7月23日 07:32

rolling(roll in是什么意思)

rolling(roll in是什么意思)

本文目录roll in是什么意思拍电影时导演喊的Rolling和Action都是什么意思啊rolling怎么读rolling是什么意思rolling的网络用语是什么意思rolling中文读法roll的过去式及现在进行时rolling中文是什

2024年7月2日 19:06

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1730
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1155
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索