foreign key是什么约束(数据库的4键2约束指的是什么)
本文目录
- 数据库的4键2约束指的是什么
- 数据库里的foreign key表示什么意思
- SQL语句的外键约束是什么
- SQL 的foreign key 约束具体怎么用,(表已创建好了之后)再用代码具体怎么写
- SQL的 “foreign key ”有什么用
- 数据库 foreign key中的语句是什么意思
- 外码约束和外键约束一样吗
- 什么是外键约束
数据库的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 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。
更多文章:
小程序滚动条样式(微信小程序怎么scroll-view始终出现滚动条)
2024年6月6日 00:47
textarea行数(如何得到textarea内容的高度或textarea内容的行数)
2024年8月12日 04:40
java配置csdn(如何在Java中设置TCP的KeepAliveTime-CSDN论坛)
2024年7月23日 19:13
塞尔达传说荒野之息全攻略(塞尔达传说荒野之息全主线任务攻略 塞尔达传说全主线任务图文攻略)
2024年7月3日 22:46
oracle查询数据库名称(怎样查看一个oracle数据库名称)
2024年8月24日 13:25
染发色板颜色大全(爱染发的女生注意了,染发色板5/36/3是什么颜色呢)
2024年7月12日 12:19
python从小到大的顺序输出(python 从键盘输入a、b两个数,按大小顺序输出它们)
2024年7月23日 07:32