mysql數據庫_關系的創建


一對多關系建立 

以部門表與員工表為例

create  table  dep(
    id int primary key auto_increment,    #創建主鍵非空且唯一
    dep_name varchar(128),
    dep_desc  varchar(128)
   );    

create  table  emp(
    id int primary key auto_increment,
    emp_name varchar(128),
    emp_gender enum('mail', 'femail', 'others') default 'mail'  #使用枚舉選擇性別,默認為mail
    dep_id int,                             #創建關聯字段
    foreign key (dep_id) references dep(id) #創建與dep表關聯的外鍵dep_id
    on update cascade              #級聯更新
    on delete cascade                 #級聯刪除          #創建與dep表關聯的外鍵,級聯更新,級聯刪除
   );

插入部門數據

insert into dep(dep_name, dep_desc) values('銷售部', '買賣'),('技術部','搞技術'),('財務部','管錢')

插入員工數據

insert into emp(emp_name, emp_gender, dep_id) values('張三', 18, 1),('李四',19,2),('王五', 20, 3),('馬六', 21, 1)

 

注意:需要在創建關聯表之前創建被關聯表, 在多的一方去建立外鍵

 

 

多對多關系建立

在創建多對多關系的時候, 先把兩個普通的表創建出來, 然后創建一個專門存放多對多關系的一個表(第三張表), 使用這張表去做關系綁定

以圖書表和作者表為例

 

create  table  book(
    id int primary key auto_increment,
    title varchar(64),
    price int
    );


create  table  authors(
    id int primary key auto_increment,
    name varchar(64),
    age int
    );


create  table  book_authors(
    id int primary key auto_increment,
    book_id int,
    foreign key(book_id) references book(id)
    on update cascade
    on delete cascade,
    author_id int,
    foreign key(author_id) references authors(id)
    on update cascade
    on delete cascade
    );

 

插入書籍數據

insert into book(title, price) values('圍城', 199),('', 187),('柒個我', 299)

插入作者數據

insert into authors(name, age) values('張三', 18),('李四', 19)

插入第三張表數據

insert into book_authors(book_id, author_id) values(1,1),(1,2),(2,1),(3,1),(3,2)

 

 

 

一對一關系建立

在創建一對一的關系時, 外鍵可以建立在任何一張表, 但是推薦建立在查詢頻率比較高的那一張表

以用戶表為例

 

create  table  authordetail(
    id int primary key auto_increment,
    ipoh int,
    addr varchar(128)
    );


create  table  author(
    id int primary key auto_increment,
    name varchar(16),
    age int,
    authordetail_id int unique,          # 一對一關系id不能重復
    foreign key(authordetail) references authordetail(id)
    on update cascade
    on delete cascade
    );

 

 

 

 

修改表的語句

1. 修改表名
ALTER TABLE 表名
      RENAME 新表名;
2. 增加字段
ALTER TABLE 表名
      ADD 字段名 數據類型 [完整性約束條件…],
      ADD 字段名 數據類型 [完整性約束條件…];
ALTER TABLE 表名
      ADD 字段名 數據類型 [完整性約束條件…] FIRST; # 直接移到最前面
ALTER TABLE 表名
      ADD 字段名 數據類型 [完整性約束條件…] AFTER 字段名; # 尋找插哪個字段的后面
3. 刪除字段
ALTER TABLE 表名
      DROP 字段名;
4. 修改字段 # modify只能改字段數據類型完整約束,不能改字段名,但是change可以!
ALTER TABLE 表名
      MODIFY 字段名 數據類型 [完整性約束條件…];
ALTER TABLE 表名
      CHANGE 舊字段名 新字段名 新數據類型 [完整性約束條件…];

 

 

 

復制表

create  table 新表名  select * from 表名(要復制的表)    # 只會復制表結構,key不會復制: 主鍵、外鍵和索引

 


免責聲明!

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



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