在學習MySQL數據庫時,外鍵是一個非常重要的概念。它可以幫助我們建立表與表之間的關系,使數據的存儲更加合理化。
以下是一個關于學生成績的例子。我們準備創建兩個表:學生表和成績表。學生表中存儲了學生的姓名、性別、年齡等信息;成績表中存儲了學生的姓名以及語文、數學和英語三門科目的成績。
-- 創建學生表 create table student( id int primary key auto_increment not null, -- 學號 name varchar(20), -- 姓名 sex varchar(2), -- 性別 age int -- 年齡 ); -- 創建成績表 create table score( id int primary key auto_increment not null, -- 學號 name varchar(20), -- 姓名 chinese int, -- 語文成績 math int, -- 數學成績 english int, -- 英語成績 foreign key (id) references student(id) -- 外鍵關聯學生表的id字段 );
在上面的代碼中,我們使用了外鍵將成績表的學號字段id與學生表的id字段進行了關聯。
接下來,我們可以向學生表和成績表中插入一些數據:
-- 向學生表中插入數據 insert into student(name, sex, age) values('張三', '男', 18); insert into student(name, sex, age) values('李四', '女', 19); insert into student(name, sex, age) values('王五', '男', 20); -- 向成績表中插入數據 insert into score(name, chinese, math, english) values('張三', 90, 80, 70); insert into score(name, chinese, math, english) values('李四', 85, 75, 65); insert into score(name, chinese, math, english) values('王五', 95, 85, 75);
注意,在向成績表中插入數據時,我們只需填寫姓名和三門科目的成績,而不需要填寫學號。這是因為,MySQL會根據外鍵的定義,自動獲取學生表中對應的學號。
當我們需要查詢某個學生的成績時,只需使用帶有join子句的select語句即可:
-- 查詢張三的成績 select s.name, sc.chinese, sc.math, sc.english from student as s join score as sc on s.id = sc.id where s.name = '張三';
在上面的查詢語句中,我們使用了join子句將學生表和成績表進行了關聯。在where子句中,我們指定了查詢條件為姓名為張三。
通過上面的例子,我們可以看到,外鍵的使用可以幫助我們更好地組織數據庫中的數據,提高數據的存儲效率和查詢效率。
上一篇mysql外鍵可以保證
下一篇mysql外鍵建在哪個表