資料庫外鍵關系
1. 資料庫外鍵怎麼設置
sql 資料庫建表時怎麼設置外鍵,
1> -- 創建測試主表. ID 是主鍵.
2> CREATE TABLE test_main (
3> id INT,
4> value VARCHAR(10),
5> PRIMARY KEY(id)
6> );
7> go
-- 建表時設置外鍵
1> CREATE TABLE test_sub (
2> id INT,
3> main_id INT,
4> value VARCHAR(10),
5> PRIMARY KEY(id),
6> FOREIGN KEY (main_id) REFERENCES test_main
7> );
8> go
sql怎麼設置外鍵
可以在創建表的時候創建,也可以在創建表之後創建。
創建表時創建:
create table student
(id int primary key,
name char(4),
dept char(9)
sex char(4))
create table grade
(id int ,
grade int
constraint id_fk foreign key (id) references student (id)
)
或創建了兩表之後再建
alter table grade
add constraint id_fk foreign key (id) references student (id)
呵呵,希望能幫助你。
sql server中圖形界面如何設置外鍵
在那個屬性上右鍵 有約束 自己添加就OK了
mysql怎麼設置外鍵?
ALTER TABLE b ADD CONSTRAINT c FOREIGN KEY(c) REFERENCES a(c) ON DELETE CASCADE ON UPDATE CASCADE; 哎呀。。好像寫反了。我寫的是把表B的c設置為外鍵了。。你改一下吧。
如何在資料庫的建立表的時候設置表的外鍵
1> -- 創建測試主表. ID 是主鍵.
2> CREATE TABLE test_main (
3> id INT,
4> value VARCHAR(10),
5> PRIMARY KEY(id)
6> );
7> go
-- 建表時設置外鍵
1> CREATE TABLE test_sub (
2> id INT,
3> main_id INT,
4> value VARCHAR(10),
5> PRIMARY KEY(id),
6> FOREIGN KEY (main_id) REFERENCES test_main
7> );
8> go
sql server 2008 怎麼設置外鍵
建外鍵的前提是此外鍵必須是另外一個表的主鍵。建外鍵的步驟: 第一步打開要建外鍵表的設計器,右擊選擇「關系」。然後彈出「外鍵關系」窗體,我們選擇「添加」,然後點擊「表和列規范」後面的小按鈕,就會彈出另外一個窗體讓我們選擇主鍵表和列,選好之後點擊確定。然後我們INSERT和UPDATE規范,在更新規則和刪除規則有四個選項,分別是「不執行任何操作」、「級聯」、「設置為NULL」、「設置默認值」。默認的不執行任何操作。如果是「不執行任何操作」,當我們刪除或更新主鍵表的數據時,會告訴用戶不能執行刪除或更新該操作。「級聯」的意思是當我們刪除或更新主鍵表的數據時,會刪除或更新外鍵表中所涉及的相關數據的所有行。 「設置Null」的意思是當我們刪除或更新主鍵表的數據時,外鍵表中的外鍵列的值會設為Null,但前提是該列允許為空。 「設置默認值」的意思是如果我們將外鍵列定義了默認值,當我們刪除或更新主鍵表的數據時,外鍵表中的外鍵列的值設為定義的默認值。 當然我們可以用代碼創建,當我們在創建資料庫表T——Card時只要加上一句話就OK啦,「Foreign key (studentNo) references T_Student(studentNo)"。如果我們已經創建了改表,那如何用代碼實現了,這也很簡單也就一句話「 add constraint CMPKey(外鍵名) foreign key(studentNo) references T_Student(studentNo)」。
sql中怎樣創建外鍵約束
在創建表之後,添加外鍵約束:
alter table yuangong add constraint fk foreign key (部門罰) references bumen(部門號)
或者在創建表的時候添加外鍵
foreign key (部門號) references bumen(部門號)放在最後,用","與列分隔
資料庫中,一對多的時候外鍵設置在多的那張表嗎?如果一對一的時候,外鍵應該設置在哪裡?多對多的時候,
首先,外鍵引用的那個列在主表中必須是主鍵列或者唯一列。
所以1:n的肯定把外鍵建立在n的那張表上。
1:1,一般要看誰是主表,誰是附屬表,外鍵當然建立在附屬表中。
n:m的情況,需要建立一個關系表,兩個原表和其關系分別是1:n,1
:m
資料庫語句怎麼加外鍵
1,創建表的時候添加:foreign key (你的外鍵) references (表名)(欄位名);
2,創建好之後修改:
alter table dbo.mh_User
add constraint FK_mh_User_..._id foreign key (你的外鍵) references (表名)(欄位名);
Sql server怎樣創建主外鍵關系
在要設置關系的外鍵表中,右擊關系→添加→在表和列規范中選擇關聯的主表再選擇外鍵表與其關聯的欄位
2. 資料庫中的外鍵是什麼意思
外鍵(FK)是用於建立和加強兩個表數據之間的鏈接的一列或多列。通過將保存表中主鍵值的一列或多列添加到另一個表中,可創建兩個表之間的鏈接。這個列就成為第二個表的外鍵。
當創建或更改表時可通過定義FOREIGNKEY約束來創建外鍵。
例如,資料庫pubs中的titles表與publishers表有鏈接,因為在書名和出版商之間存在邏輯聯系。
titles表中的pub_id列與publishers表中的主鍵列相對應。titles表中的pub_id列是到publishers表的外鍵。
(2)資料庫外鍵關系擴展閱讀:
保持數據一致性,完整性,主要目的是控制存儲在外鍵表中的數據。 使兩張表形成關聯,外鍵只能引用外表中的列的值或使用空值。
學號在成績表(表2)中是主鍵,在學生表(表1)中是外鍵。如果不使用外鍵,表1的學號欄位插了一個值(比如20140999999),但是這個值在表2中並沒有,這個時候,資料庫允許插入,並不會對插入的數據做關系檢查。
然而在設置外鍵的情況下,插入表1學號欄位的值必須要求在表1的學號欄位能找到。 同時,如果要刪除表2的某個學號欄位,必須保證表2中沒有引用該欄位值的列,否則就沒法刪除。
這就是所謂的保持數據的一致性和完整性。如右圖,如果表1還引用表2的某個學號,卻把表1中的這個學號刪了,表2就不知道這個學號對應的學生是哪個學生。
3. 資料庫之主鍵外鍵
1,主鍵約束 (table的唯一標識)
能夠作為主鍵列的特點:該列不能為空,不能有重復值出現
創建表時指定主鍵的兩種方式:
CREATE TABLE stu(
sid CHAR(6) PRIMATY KEY,
sname VARCHAR(20),
age INT,
gender VARCHER(10)
);
指定sid列為主鍵列
CREATE TABLE stu(
sid CHAR(6),
sname VARCHAR(20),
age INT,
gender VARCHER(10),
PRIMARY KEY(sid)
);
指定sid列為主鍵列
修改表時指定主鍵:ALTER TABLE stu ADD PRIMATY KEY(sid);
刪除主鍵:ALTER TABLE stu DROP PRIMARY KEY;
2,主鍵自增長
因為主鍵列的特性是:必須唯一,不能為空,所以我們通常會指定主鍵為整形,然後設置其自動增長
創建表時指定主鍵自增長:
CREATE TABLE stu(
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(20),
age INT,
gender VARCHAR(10)
);
修改表時設置主鍵自增長:ALTER TABLE stu
3,非空約束
CREATE TABLE stu(
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(20) NOT NULL,
age INT,
gender VARCHAR(10)
);
對sname列設置了非空約束
4,唯一約束
某些列不能設置重復的值,所以可以對列添加唯一約束
CREATE TABLE stu(
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(20) NOT NULL UNIQUE,
age INT,
gender VARCHAR(10)
);
6,外鍵約束
外鍵特點:外鍵必須是另一個表的主鍵的值(外鍵要引用主鍵!),外鍵可以重復,外鍵可以為空,一張表可以有多個外鍵!
CREATE TABLE dept( //部門表
deptno INT PRIMARY KEY AUTO_INCREMENT,
deptname CHAR(20)
);
INSERT INTO dept VALUES(10,『研發部』);
INSERT INTO dept VALUES(20,『人力部』);
INSERT INTO dept VALUES(30,『財務部』);
CREATE TABLE emp( //員工表
empno INT PRIMARY KEY AUTO_INCREMENT,
ename VARCHAR(50),
dno INT, //員工所屬部門(外鍵),
CONSTRAINT fk_emp_dept FOREIGN KEY(dno) REFERENCES dept(deptno)
);
INSERT INTO emp(empno,ename) VALUES(NULL,『張三』),//外鍵可以不傳入值
INSERT INTO emp(empno,ename) VALUES(NULL,『李四』,10),//外鍵可以重復
INSERT INTO emp(empno,ename) VALUES(NULL,『王五』,10),
INSERT INTO emp(empno,ename) VALUES(NULL,『趙六』,80),//dept表沒有主鍵值為80的記錄,sql客戶端編譯報錯
7,一對一關系模型
創建老公表
CREATE TABLE hashand(
hid INT PRIMARY KEY AUTO_INCREMENT,
hname VARCHAR(50),
);
INSERT INTO hashand VALUES(NULL,『劉備』);
INSERT INTO hashand VALUES(NULL,『關羽』);
INSERT INTO hashand VALUES(NULL,『張飛』);
SELECT * FROM hashand
//創建老婆表
CREATE TABLE wife(
wid INT PRIMARY KEY AUTO_INCREMENT,
wname VARCHAR(50),
CONSTRAINT fk_wife_hashand FOREIGN KEY(wid) REFERENCES hashand(hid)
)
/**
wid:
1,非空
2,唯一
3,引用hid
*/
INSERT INTO wife VALUES(1,『楊貴妃』);
INSERT INTO wife VALUES(2,『妲己』);
INSERT INTO wife VALUES(3,『褒姒』);
SELECT * FROM wife;
對於一對一關系模型從表的主鍵即是外鍵,例如老公和老婆的關系模型,一個老公只能有一個老婆,一個老婆只能有一個老公
對於一對多關系模型主表的主鍵即是從表的外鍵,例如訂單和用戶的關系模型,一個用戶可以下單多次,對應多個訂單,而一個訂單只能屬於一個用戶
對於多對多關系模型沒有主表和從表之分,需要建立第三張表來記錄這兩張表的外鍵,建立兩個外鍵,分別引用這兩張表的主鍵
8,多對多關系模型
在表中簡歷多對多關系需要使用中間表,即需要三張表,在中間表中使用兩個外鍵,分別引用其他兩個表的主鍵,例如學生和老師的關系模型,一個老師可以有多個學生,一個學生可以有多個老師
CREATE TABLE student(
sid INT PRIMARY KEY AUTO_INCREMENT,
sname CHAR(40)
);
CREATE TABLE teacher(
tid INT PRIMARY KEY AUTO_INCREMENT,
tname CHAR(40)
);
CREATE TABLE stu_tea(
sid INT,
tid INT,
ADD CONSTRAINT fk_stu_tea_sid FOREIGN KEY(sid) REFERENCES student(sid),
ADD CONSTRAINT fk_stu_tea_tid FOREIGN KEY(tid) REFERENCES teacher(tid)
);
INSERT INTO student VALUES(NULL,『劉德華』);
INSERT INTO student VALUES(NULL,『梁朝偉』);
INSERT INTO student VALUES(NULL,『黃日華』);
INSERT INTO student VALUES(NULL,『苗僑偉』);
INSERT INTO student VALUES(NULL,『湯鎮業』);
INSERT INTO teacher VALUES(NULL,『崔老師』);
INSERT INTO teacher VALUES(NULL,『劉老師』);
INSERT INTO teacher VALUES(NULL,『石老師』);
SELECT * FROM student;
SELECT * FROM teacher;
INSERT INTO stu_tea VALUES(1,1); //劉德華是崔老師的學生
INSERT INTO stu_tea VALUES(2,1); //梁朝偉是崔老師的學生
INSERT INTO stu_tea VALUES(3,1);//黃日華是崔老師的學生
INSERT INTO stu_tea VALUES(4,1);//苗僑偉是崔老師的學生
INSERT INTO stu_tea VALUES(5,1);//湯鎮業是崔老師的學生
INSERT INTO stu_tea VALUES(2,2);//梁朝偉是劉老師的學生
INSERT INTO stu_tea VALUES(3,2);//黃日華是劉老師的學生
INSERT INTO stu_tea VALUES(4,2);//苗僑偉是劉老師的學生
INSERT INTO stu_tea VALUES(3,3);//黃日華是石老師的學生
INSERT INTO stu_tea VALUES(5,3);//湯鎮業是劉老師的學生
SELECT * FROM stu_tea;
這時在stu_tea這個中間表中的每條記錄都是來說明student表和teacher表的關系的
例如在stu_tea表中的記錄:sid為1001,tid為2001,這說明編號為1001的學生有一個編號為2001的老師
sid tid
1001 2001 //編號為1001的學生有一個編號為2001的老師
1001 2002 //編號為1001的學生有一個編號為2002的老師
1001 2003 //編號為1001的學生有一個編號為2003的老師
1002 2001 //編號為2001的老師有一個編號為1002的學生
1002 2004 //編號為2004的老師有一個編號為1002的學生
9,合並結果集
要求要合並的結果集中,列的類型和列數相同
UNION,去除重復行,UNION ALL,不去除重復行
4. 什麼是關系型資料庫,主鍵,外鍵,索引分別是什麼
1、關系型資料庫,是指採用了關系模型來組織數據的資料庫,其以行和列的形式存儲數據,關系型資料庫這一系列的行和列被稱為表,一組表組成了資料庫。
2、主關鍵字(primary key)是表中的一個或多個欄位,它的值用於唯一的標識表中的某一條記錄
3、外鍵表示了兩個關系之間的相關聯系。以另一個關系的外鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。外鍵又稱作外關鍵字
4、在關系資料庫中,索引是一種單獨的、物理的對資料庫表中一列或多列的值進行排序的一種存儲結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的數據頁的邏輯指針清單