mysql資料庫 關係的建立

2022-07-28 05:42:18 字數 3424 閱讀 9562

一對多關係建立

以部門表與員工表為例

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不會複製: 主鍵、外來鍵和索引

資料庫 SQL建立關聯式資料庫

sql語句不區分大小寫 指令show databases 檢視當前資料庫伺服器下有什麼資料庫介面 指令use 庫名 切換當前資料庫 show tables 檢視當前資料庫下有哪些表 介面 當前庫支援的所有字符集 select from character sets 當前庫的預設字符集 show va...

mysql資料庫表關係 資料庫 表關係

上節回顧 1.建表語法 注意點 2.資料型別 今日內容 1.表之間的關係 多對一,多對多,一對一 2.複製表 分表 為什麼要分表?乙個表中 要儲存個人資訊又要儲存部門資訊 會導致大量的資料冗餘 所有資料存放在同乙個表中 將導致以下幾個問題 1.浪費空間 不致命 2.結構混亂 3.修改資料時 如果有一...

mysql關聯式資料庫 關聯式資料庫概述

為什麼需要資料庫?因為應用程式需要儲存使用者的資料,比如word需要把使用者文件儲存起來,以便下次繼續編輯或者拷貝到另一台電腦。要儲存使用者的資料,乙個最簡單的方法是把使用者資料寫入檔案。例如,要儲存乙個班級所有學生的資訊,可以向檔案中寫入乙個csv檔案 id,name,gender,score 1...