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語句中主外鍵怎么弄
一、創建表約束
語法:
ALTER TABLE table_name
ADD CONSTRAINT constraint_name constraint_type constraint_definition
table_name 要修改的表的名稱
constraint_name 約束的名稱
constraint_type 約束的類型,有以下四種:
PRIMARY KEY 主鍵約束
FOREIGN KEY 外鍵約束
CHECK 檢查約束
UNIQUE 唯一約束
constraint_defintion 約束的定義,不同的約束種類約束的定義是不一樣的,每種約束的定義如下:
PRIMARY KEY (field_list)
FOREIGN KEY (source_field_name) REFERENCES target_table(target_field_name)
CHECK (condition)
UNIQUE (field_name)
例如:
1. 將Topic表的Id字段修改為主鍵
ALTER TABLE Topic
ADD CONSTRAINT PK_Topic PRIMARY KEY (Id)
2. Reply表的TopicId字段引用Topic表的Id字段
ALTER TABLE Reply
ADD CONSTRAINT FK_Reply_Topic FOREIGN KEY (TopicId) REFERENCES Topic(Id)
3. Student表的Sex字段必須填寫“男”或“女”
ALTER TABLE Student
ADD CONSTRAINT CHK_Sex CHECK(Sex='男' OR Sex='女')
二、刪除表約束
語法:
ALTER TABLE table_name
DROP CONSTRAINT constraint_name
SQL語句基礎學習外鍵是怎樣的
外來鍵是一個(或數個)指向另外一個表格主鍵的欄位。
外來鍵的目的是確定資料的參考完整性(referential integrity)。換言之,只有被準許的資料值才會被存入資料庫內。
舉例來說,假設我們有兩個表格:一個 CUSTOMER 表格,里面記錄了所有顧客的資料;另一個 ORDERS 表格,里面記錄了所有顧客訂購的資料。 在這里的一個限制,就是所有的訂購資料中的顧客,都一定是要跟在 CUSTOMER 表格中存在。
在這里,我們就會在 ORDERS 表格中設定一個外來鍵,而這個外來鍵是指向 CUSTOMER 表格中的主鍵。這樣一來,我們就可以確定所有在 ORDERS 表格中的顧客都存在 CUSTOMER 表格中。
換句話說,ORDERS表格之中,不能有任何顧客是不存在于 CUSTOMER 表格中的資料。 這兩個表格的結構將會是如下: CUSTOMER 表格 欄位名性質 SID主鍵 Last_Name First_Name ORDERS 表格 欄位名性質 Order_ID主鍵 Order_Date Customer_SID外來鍵 Amount 在以上的例子中,ORDERS 表格中的 customer_SID 欄位是一個指向 CUSTOMERS 表格中 SID 欄位的外來鍵。
以下列出幾個在建置 ORDERS 表格時指定外來鍵的方式: MySQL: CREATE TABLE ORDERS (Order_ID integer, Order_Date date, Customer_SID integer, Amount double, Primary Key (Order_ID), Foreign Key (Customer_SID) references CUSTOMER(SID)); Oracle: CREATE TABLE ORDERS (Order_ID integer primary key, Order_Date date, Customer_SID integer references CUSTOMER(SID), Amount double); SQL Server: CREATE TABLE ORDERS (Order_ID integer primary key, Order_Date datetime, Customer_SID integer references CUSTOMER(SID), Amount double); 以下的例子則是藉著改變表格架構來指定外來鍵。 這里假設 ORDERS 表格已經被建置,而外來鍵尚未被指定: MySQL: ALTER TABLE ORDERS ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid); Oracle: ALTER TABLE ORDERS ADD (CONSTRAINT fk_orders1) FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid); SQL Server: ALTER TABLE ORDERS ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid);。
SQL語句的外鍵約束
兩個表格的結構將會是如下:
CUSTOMER 表格
欄位名 性質
SID 主鍵
Last_Name
First_Name
ORDERS 表格
欄位名 性質
Order_ID 主鍵
Order_Date
Customer_SID 外來鍵
Amount
在以上的例子中,ORDERS 表格中的 customer_SID 欄位是一個指向 CUSTOMERS 表格中 SID 欄位的外來鍵。
以下列出幾個在建置 ORDERS 表格時指定外來鍵的方式:
MySQL:
CREATE TABLE ORDERS
(Order_ID integer,
Order_Date date,
Customer_SID integer,
Amount double,
Primary Key (Order_ID),
Foreign Key (Customer_SID) references CUSTOMER(SID)); (注:這句就是外鍵的約束)
Oracle:
CREATE TABLE ORDERS
(Order_ID integer primary key,
Order_Date date,
Customer_SID integer references CUSTOMER(SID),
Amount double);
SQL Server:
CREATE TABLE ORDERS
(Order_ID integer primary key,
Order_Date datetime,
Customer_SID integer references CUSTOMER(SID),
Amount double);
以下的例子則是藉著改變表格架構來指定外來鍵。這里假設 ORDERS 表格已經被建置,而外來鍵尚未被指定:
MySQL:
ALTER TABLE ORDERS
ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid);
Oracle:
ALTER TABLE ORDERS
ADD (CONSTRAINT fk_orders1) FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid);
SQL Server:
ALTER TABLE ORDERS
ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(sid);
SQL 語句來創建表主鍵外鍵
insert into 表(列名1,列名2,。,列名n) values('值1','值2',。..,'值n');//若全部列都添加,表后面的括號可省略;
-----------
select * from 表 //查詢所有
select * form 表 where 條件 //有條件查詢
select 列名1,列名2,列名n from 表 //只查詢幾個字段
------------
create trigger 觸發器名 on 表
for insert //或者delete,update
as
{
//SQL語句
}