如何在 SQL 中创建带外键的表?
结构化查询语言 或 SQL 是一种标准的数据库语言,用于创建、维护和检索关系数据库中的数据,如 MySQL、Oracle、SQL Server、PostGre 等。
为了创建带有外键的表,我们必须了解几个键约束:
超级键:
唯一标识关系中元组的属性或属性集。
例:那么考虑一个客户数据库,
关系客户的 customer_id 足以区分一个元组和另一个元组。因此, customer_id 是一把超级钥匙。同样的, customer_id 和 customer_name 的组合对于关系客户来说也是超级关键。这里的客户 _ 姓名不是超级钥匙,因为可能几个人同名。
候选键:
一个超级键,使得关系中没有合适的子集是超级键。
例:客户名称和客户街道的组合足以区分客户关系的成员。那么, {customer_id} 和 {customer_name,customer_street} 都是候选键。虽然 customer_id 和 customer_name 一起可以区分客户元组,但是它们的组合并不能形成候选键,因为只有 customer_id 才是候选键。
主键:
选择候选关键字来唯一标识关系中的元组。在所有可用的候选键中,数据库设计者可以识别一个主键。未被选为主键的候选键称为备用键。
例:对于客户关系,我们可以选择 customer_id 作为主键。
外键:
外键表示表之间的关系。外键是一列(或一组列),其值从其他表的主键派生而来。定义外键的表称为外键表或详细信息表。定义主键并被外键引用的表称为主键表或主表。
我们可以通过以下方式向关系添加外键
方法-1 :
语法:
CREATE TABLE TABLE_NAME(
Column 1 datatype,
Column 2 datatype,
Column 3 datatype FOREIGN KEY REFERENCES Table_name(Column name), //Column which has to be a forigen key
..
..
Column n
)
考虑以下客户关系
T13】Geek 1T15】ChennaiT18T21】Geek 2T23】德里 T26T29】Geek 3【T39 | 客户 id | 客户名称 | 客户地址 | | --- | --- | --- | | One hundred and one | | One hundred and two | One hundred and three |为了创建下表,我们使用以下命令
CREATE TABLE Customer(
Customer_id int primary key,
Customer_name varchar(20),
Customer_Address varchar(20),
)
现在考虑销售关系,
18T21】16652104 | 客户标识 | 项目标识 | payment types/methods | | --- | --- | --- | | One hundred and one | One million three hundred and thirty-four thousand one hundred and fifty-one | 货到付款 | | One hundred and one | debit card | | |所以在这个关系中, Customer_id 是从上面的客户关系中获取的外键。我们可以使用以下命令创建该表。
CREATE TABLE SALES(
Customer_id int FOREIGN KEY REFERENCES Customer(Customer_id)
Item_id int,
Payment_Mode varchar(20),
)
方法-2 :
语法:
CREATE TABLE TABLE_NAME(
Column 1 datatype,
Column 2 datatype,
Column 3 datatype //Column which has to be a forigen key
..
..
Column n
CONSTRAINT Constraint_name FOREIGN KEY (Column name) REFERENCES Table_Name(Column name),
)
现在为了使用客户表创建相同的销售表,我们可以运行以下命令
CREATE TABLE SALES(
Customer_id int,
Item_id int,
Payment_Mode varchar(20),
CONSTRAINT FK_Sales FOREIGN KEY (Customer_id)REFERENCES Customer(Customer_id)
)
然后我们得到以 customer_id 为外键的下表。
版权属于:月萌API www.moonapi.com,转载请注明出处