📜  如何在 SQL 中创建带有外键的表?

📅  最后修改于: 2022-05-13 01:54:38.747000             🧑  作者: Mango

如何在 SQL 中创建带有外键的表?

结构化查询语言或 SQL 是一种标准的数据库语言,用于从 MySQL、Oracle、SQL Server、PostGre 等关系数据库中创建、维护和检索数据。

为了创建一个带有外键的表,我们必须知道几个关键约束:

超级钥匙:

唯一标识关系中元组的属性或属性集。

例如:考虑一个客户数据库,然后,



关系客户的CUSTOMER_ID足以区分不同的元组。因此, customer_id是一个超级键。同样, customer_idcustomer_name的组合是关系客户的超级键。这里的customer_name不是超级键,因为几个人可能有相同的名字。

候选键:

一个超级键,使得没有适当的子集是关系中的超级键。

例如: customer_namecustomer_street的组合足以区分客户关系的成员。那么{customer_id}{customer_name,customer_street}都是候选键。尽管customer_idcustomer_name一起可以区分客户元组,但它们的组合并不能形成候选键,因为只有 customer_id才是候选键。

首要的关键 :

选择候选键以在关系中唯一地标识元组。在所有可用的候选键中,数据库设计者可以识别出一个主键。未被选为主键的候选键称为备用键。

例如:对于客户关系,我们可以选择customer_id作为主键。

外键:



外键表示表之间的关系。外键是一列(或一组列),其值是从某个其他表的主键派生的。定义外键的表称为外表或详细信息表。定义主键并被外键引用的表称为主表或主表。

我们可以通过以下方式向关系添加外键

方法一:

句法 :

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
)

考虑以下客户关系

Customer_idCustomer_nameCustomer_Address
101Geek 1Chennai
102Geek 2Delhi
103Geek 3Bombay
104Geek 4Pune
105Geek 5Nashik

为了创建下表,我们使用以下命令

CREATE TABLE Customer(
    Customer_id int primary key,
    Customer_name varchar(20),
    Customer_Address varchar(20),
)

现在考虑销售关系,

Customer_idItem_IdPayment_Mode
1011334151COD
10116652Debit Card
1041009Paypal
10214543COD

所以在这个关系中, 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_idItem_IdPayment_Mode
1011334151COD
10116652Debit Card
1041009Paypal
10214543COD

然后我们得到下表,以customer_id为外键。