MySQL表的關聯關系


  在實際開發中數據表之間存在着各種關聯關系。在此,介紹MySQL中數據表的三種關聯關系。
  
  多對一
  
  多對一(亦稱為一對多)是數據表中最常見的一種關系。例如:員工與部門之間的關系,一個部門可以有多個員工;而一個員工不能屬於多個部門只屬於某個部門。在多對一的表關系 中,應將外鍵建在多的一方否則會造成數據的冗余。
  
  多對多
  
  多對多是數據表中常見的一種關系。例如:學生與老師之間的關系,一個學生可以有多個老師而且一個老師有多個學生。通常情況下,為了實現這種關系需要定義一張中間表(亦稱為連接表)該表會存在兩個外鍵分別參照老師表和學生表。
  
  一對一
  
  在開發過程中,一對一的關聯關系在數據庫中並不常見;因為以這種方式存儲的信息通常會放在同一張表中。
  mysql安裝:http://install.cuohei.com/
  接下來,我們來學習在一對多的關聯關系中如果添加和刪除數據。先准備一些測試數據,代碼如下:
  
  DROP TABLE IF EXISTS student;
  
  DROP TABLE IF EXISTS class;
  
  -- 創建班級表
  
  CREATE TABLE class(
  
  cid int(4) NOT NULL PRIMARY KEY,
  
  cname varchar(30)
  
  );
  
  -- 創建學生表
  
  CREATE TABLE student(
  
  sid int(8) NOT NULL PRIMARY KEY,
  
  sname varchar(30),
  
  classid int(8) NOT NULL
  
  );
  
  -- 為學生表添加外鍵約束
  
  ALTER TABLE student ADD CONSTRAINT fk_student_classid FOREIGN KEY(classid) REFERENCES class(cid);
  
  -- 向班級表插入數據
  
  INSERT INTO class(cid,cname)VALUES(1,'Java');
  
  INSERT INTO class(cid,cname)VALUES(2,'Python');
  
  -- 向學生表插入數據
  
  INSERT INTO student(sid,sname,classid)VALUES(1,'tome',1);
  
  INSERT INTO student(sid,sname,classid)VALUES(2,'lucy',1);
  
  INSERT INTO student(sid,sname,classid)VALUES(3,'lili',2);
  
  INSERT INTO student(sid,sname,classid)VALUES(4,'domi',2);
  
  1.關聯查詢
  
  查詢Java班的所有學生 MySQL命令:
  
  select * from student where classid=(select cid from class where cname='Java');
  
  2.關於關聯關系的刪除數據
  
  請從班級表中刪除Java班級。在此,請注意:班級表和學生表之間存在關聯關系;要刪除Java班級,應該先刪除學生表中與該班相關聯的學生。否則,假若先刪除Java班那么學生表中的cid就失去了關聯
  
  刪除Java班 MySQL命令:
  
  delete from student where classid=(select cid from class where cname='Java');
  
  delete from class where cname='Java';


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM