SQL中如何为表添加外键约束
子任务3.4 创建外键约束

2 创建外键约束
• 需求说明
– 为Student数据表的Classno(班级编号)字段创建外键约束。
图形化工具方式
创建外键约束
建表的同时建约束
T-SQL语句方式
表创建完成后增加约束
2 创建外键约束
表创建完成增加外键约束的语法格式:
ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY(列名[,…n]) REFERENCES 要联系的表(要联系的列[,…n]) [ON DELETE CASCADE|ON UPDATE CASCADE]
• 拓展任务 – 教材P98页外键约束。
谢 谢!
刘万辉
ON DELETE CASCADE表示级联删除,即父表(包含主键的表)中删除被引用行时,也将从 引用表(包含外键的表)中删除引用行。ON UPDATE CASCADE表示级联更新,即父表中 更新引用行时,也将在引用表中更新引用行。
2 创建外后的表为包含主键的表(称为主表或父表); – 外键约束可以保证表与表之间数据的一致性,维护引用完整性。
《SQL Server数据库技术》 课程
创建外键约束
讲授人:史桂红
目录页
PAGE OF CONTENT
01 外键约束及其作用
02 创建外键约束
1 外键及外键约束
外键:用于建立两个数据表之间 连接的一列或多列。
外键约束:外键表中外健字段值 必须与主键表中主键字段值保持 一致,外键约束用于强制引用完 整性。
sql操作数据库(3)--外键约束、数据库表之间的关系、三大范式、多表查询、事务

sql操作数据库(3)--外键约束、数据库表之间的关系、三⼤范式、多表查询、事务外键约束在新表中添加外键约束语法: constraint 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名)在已有表中添加外键约束:alter table 从表表名 add constraints 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名)删除外键语法: alter table 从表表名 drop foreign key 外键名称;级联操作:注意:在从表中,修改关联主表中不存在的数据,是不合法的在主表中,删除从表中已经存在的主表信息,是不合法的。
直接删除主表(从表中有记录数据关联) 会包删除失败。
概念:在修改或者删除主表的主键时,同时它会更新或者删除从表中的外键值,这种动作我们称之为级联操作。
语法:更新级联 on update cascade 级联更新只能是创建表的时候创建级联关系。
当更新主表中的主键,从表中的外键字段会同步更新。
删除级联 on delete cascade 级联删除当删除主表中的主键时,从表中的含有该字段的记录值会同步删除。
操作:-- 给从表student添加级联操作create table student(s_id int PRIMARY key ,s_name VARCHAR(10) not null,s_c_id int,-- constraint 外键约束名称 foreign key(外键的字段名称) references 主表表名(主键字段名)CONSTRAINT stu_cour_id FOREIGN key(s_c_id) REFERENCES course(c_id) -- 给s_c_id 添加外键约束ON UPDATE CASCADE ON DELETE CASCADE)insert into student VALUE(1,'⼩孙',1),(2,'⼩王',2),(3,'⼩刘',4);insert into student VALUE(4,'⼩司马',1),(5,'⼩赵',1),(6,'⼩钱',1);-- 查询学⽣表中的记录select * from student;-- 级联操作。
Oracle:SQL语句--对表的操作——添加主键约束

Oracle:SQL语句--对表的操作——添加主键约束–创建主外键(可以在创建表的同时添加主外键约束,也可以
–创建完成后再添加约束)
—–⽅法⼀:表创建的同时,添加主键约束
语法:
create table 表名
(
列名1 数据类型及长度 constraint 主键名称(⼀般主键名称为”PK_”开头) primary key,
列名2 数据类型及长度 not null,——-not null 约束该列不为空,不写表⽰可以为空
列名3 数据类型及长度
)tablespace 表空间名称;——-指定将该表放在某个表空间⾥,可以省略不指定
例:
create table T_DEPOSIT
(savingid VARCHAR2(20) constraint pk_savingid primary key,
savingname VARCHAR2(20) not null,
descrip VARCHAR2(50)
)tablespace ATM_tablespace;
————注意————-
CREATE TABLE T_cardInfo –银⾏卡信息表
(
cardID varchar2(19) primary key,
—— 如果此处这样定义主键,则主键名称系统⾃⼰定义设置
);
—–⽅法⼆:表创建后,添加主键约束
语法:
alter table 表名
add constraint 主键名称(⼀般主键名称为”PK_”开头) primary key(要设为主键的列名);
例:
alter table T_Grade
add constraint pk_gradeId primary key (gradeId);。
(转)SQLSERVER外键约束以及它的级联删除

(转)SQLSERVER外键约束以及它的级联删除sql server中建⽴外键约束有3中⽅式:1.enterprise manager中,tables,design table,设置table的properties,可以建⽴constraint, reference key;2.enterprise manager中,diagrams, new diagrams,建⽴两个表的关系。
3.直接⽤transact sql语句。
三个⽅法都需要先建⽴数据表。
-- 创建表author :create table [dbo].[author] ([id] [bigint] not null ,[authorname] [char] (10) null ,[address] [char] (480) null ,[introduction] [ntext] null)-- 创建表mybbs:reate table [dbo].[mybbs] ([id] [bigint] identity (1, 1) not null ,[authorid] [bigint] not null ,[title] [char] (40) null ,[date_of_created] [datetime] null ,[abstract] [char] (480) null ,[content] [ntext] null)设置表mybbs中的authorid为外键,参照author表的id字段,直接使⽤transact sql语句,过程如下:--增加表mybbs(authorid)的外键约束fk_mybbs_author,表mybbs中的authorid受表author中的主键id约束:begin transactionalter table dbo.mybbs add constraint fk_mybbs_authorforeign key (authorid)references dbo.author([id]) on update cascade on delete cascade--删除外键约束fk_mybbs_author:--alter table dbo.mybbs drop constraint fk_mybbs_author--rollbackcommit transaction上⾯on update cascade,on delete cascade两个选项,指明以后author表的id字段有delete,update操作时,mybbs表中的id也会被级联删除或更新。
sql语句 alter table

sql语句 alter tableALTER TABLE语句是SQL中用于修改现有表结构的关键字。
它可以用于添加、修改或删除表中的列、约束、索引和其他属性。
下面是10个使用ALTER TABLE语句的例子,以展示如何使用这个关键字来修改表结构。
1. 添加列:ALTER TABLE 表名ADD 列名数据类型 [约束条件];例如,要向名为"students"的表中添加一个新的"age"列,数据类型为整数,可以使用以下语句:ALTER TABLE studentsADD age INT;2. 修改列的数据类型:ALTER TABLE 表名ALTER COLUMN 列名新数据类型;例如,要将"students"表中的"age"列的数据类型从整数修改为浮点数,可以使用以下语句:ALTER TABLE studentsALTER COLUMN age FLOAT;3. 删除列:ALTER TABLE 表名DROP COLUMN 列名;例如,要从"students"表中删除"age"列,可以使用以下语句:ALTER TABLE studentsDROP COLUMN age;4. 添加主键约束:ALTER TABLE 表名ADD CONSTRAINT 约束名 PRIMARY KEY (列名);例如,要给"students"表中的"id"列添加主键约束,可以使用以下语句:ALTER TABLE studentsADD CONSTRAINT pk_students PRIMARY KEY (id);5. 删除主键约束:ALTER TABLE 表名DROP CONSTRAINT 约束名;例如,要从"students"表中删除名为"pk_students"的主键约束,可以使用以下语句:ALTER TABLE studentsDROP CONSTRAINT pk_students;6. 添加外键约束:ALTER TABLE 表名ADD CONSTRAINT 约束名FOREIGN KEY (列名) REFERENCES 参考表(参考列);例如,要在"students"表中添加一个外键约束,将"course_id"列引用到"courses"表的"id"列,可以使用以下语句:ALTER TABLE studentsADD CONSTRAINT fk_students_courses FOREIGN KEY (course_id) REFERENCES courses(id);7. 删除外键约束:ALTER TABLE 表名DROP CONSTRAINT 约束名;例如,要从"students"表中删除名为"fk_students_courses"的外键约束,可以使用以下语句:ALTER TABLE studentsDROP CONSTRAINT fk_students_courses;8. 添加索引:ALTER TABLE 表名ADD INDEX 索引名 (列名);例如,要在"students"表的"name"列上添加一个索引,可以使用以下语句:ALTER TABLE studentsADD INDEX idx_students_name (name);9. 删除索引:ALTER TABLE 表名DROP INDEX 索引名;例如,要从"students"表中删除名为"idx_students_name"的索引,可以使用以下语句:ALTER TABLE studentsDROP INDEX idx_students_name;10. 修改表名:ALTER TABLE 旧表名RENAME TO 新表名;例如,要将名为"old_students"的表更名为"new_students",可以使用以下语句:ALTER TABLE old_studentsRENAME TO new_students;通过使用ALTER TABLE语句,我们可以方便地修改表结构,以满足不同的需求。
SQL:addconstraint方法添加约束

格式:alter table 表名 add constraint 约束名称 check(列名)
例子:alter table ss add constraint pp check(age>20)
4、添加unique约束:
格式:alter table 表名 add constraint 约束名称 unique(列名)
例子:alter table ss add constraint pp unique(sname)
altertable表名addconstraint约束名称foreignkey列名references被引用表的名称列名
SQL:addconstraint方法添加约束
SQL: add constraint 方法添加约束
alter table 表名 add constraint 约束名称 约束类型(列名)
1、添加主键约束:
格式:alter table 表名 add constraint 约束名称 primary key(列名)
例子:alter table ss add constraint pp primary key(sid)
2、添加外键约束:
格式:alter table 表名 add constraint 约束名称 foreign key(列名) references 被引用表的名称(列名)
mysql外键约束的基本语法结构

MySQL外键约束的基本语法结构概述在关系型数据库中,外键是用来建立表与表之间关系的重要机制之一。
MySQL作为一种常用的关系型数据库管理系统,也支持外键约束。
本文将详细介绍MySQL外键约束的基本语法结构,包括创建外键、修改外键和删除外键。
创建外键创建外键是将两个或多个表之间关系建立起来的过程,通过外键可以实现数据一致性和完整性。
以下是创建外键的基本语法:ALTER TABLE child_tableADD CONSTRAINT fk_nameFOREIGN KEY (child_column)REFERENCES parent_table(parent_column);其中,child_table为子表,child_column为子表中的外键列,fk_name为外键的名称,parent_table为父表,parent_column为父表中子表外键列参照的列。
创建外键的步骤如下: 1. 使用ALTER TABLE语句来修改表结构。
2. 使用ADD CONSTRAINT关键字指定要添加的约束。
3. 使用FOREIGN KEY关键字指定外键列。
4. 使用REFERENCES关键字指定父表和父表列。
修改外键在一些情况下,需要对已经存在的外键进行修改。
MySQL允许对外键进行修改,包括修改外键名称、修改外键列以及修改外键参照的父表和父表列。
以下是修改外键的基本语法:ALTER TABLE child_tableDROP FOREIGN KEY fk_name;ALTER TABLE child_tableADD CONSTRAINT new_fk_nameFOREIGN KEY (new_child_column)REFERENCES new_parent_table(new_parent_column);其中,child_table为子表,fk_name为原有外键的名称,new_fk_name为修改后的外键名称,new_child_column为修改后的子表外键列,new_parent_table为修改后的父表,new_parent_column为修改后父表中子表外键列参照的列。
SQL中主键、外键完整性约束的作用以及创建语句

SQL中主键、外键完整性约束的作用以及创建语句
SQL的主键和外键约束
SQL的主键和外键的作用:
外键取值规则:空值或参照的主键值。
(1)插入非空值时,如果主键表中没有这个值,则不能插入。
(2)更新时,不能改为主键表中没有的值。
(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。
(4)更新主键记录时,同样有级联更新和拒绝执行的选择。
简而言之,SQL的主键和外键就是起约束作用。
关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键。
比如:
学生表(学号,姓名,性别,班级)
其中每个学生的学号是唯一的,学号就是一个主键;
课程表(课程编号,课程名,学分)
其中课程编号是唯一的,课程编号就是一个主键;
成绩表(学号,课程号,成绩)
成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以,学号和课程号的属性组是一个主键。