MySQL資料庫操作(四) 多表之間的關係

2021-08-28 07:17:18 字數 3387 閱讀 9108

個人部落格:haichenyi.com。感謝關注

1、一張表可以有多個外來鍵

2、外來鍵是表的主鍵,可以是別的表,也可以是本身(少見)

3、外來鍵可以為null,可以重複,但是不能不存在,必須要查的到

建立語法foreign key(本表的列名) references 關聯的表名(關聯表的主鍵)

//建立乙個部門表

create table dept(

did int primary key auto_increment,

dname varchar(50)

);//插入幾條資料

insert into dept(did,dname) value(null,'銷售部');

insert into dept(did,dname) value(null,'技術部');

insert into dept(did,dname) value(null,'人力部');

insert into dept(did,dname) value(null,'保潔部');

//建立乙個員工表,這裡的的edid是乙個外來鍵,對應部門表的主鍵did

create table employee(

eid int primary key auto_increment,

ename varchar(50),

edid int,

constraint fk_empl_dept foreign key(edid) references dept(did)

);//或者

create table employee(

eid int primary key auto_increment,

ename varchar(50),

edid int

);alter table employee add constraint fk_empl_dept foreign key(edid) references dept(did);

//上面這樣也可以設定外來鍵

create table emp(

eid int primary key auto_increment,

ename varchar(50)

);create table hmp(

hid int primary key auto_increment,

hname varchar(50),

constraint fk_hmp_emp foreign key(hid) references emp(eid)

);//如上,這樣建立的兩張表emp與hmp就是一對一的關係

//插入資料

insert into emp values(1,'張三');

insert into hmp values(1,'李四');

//這樣張三跟李四就對應上了

create table teacher(

tid int primary key auto_increment,

tname varchar(50)

);create table student(

sid int primary key auto_increment,

sname varchar(50)

);create table stu_tea(

tid int,

sid int,

constraint fk_student foreign key(sid) references student(sid),

constraint fk_teacher foreign key(tid) references teacher(tid)

);//這裡的stu_tea就是關聯表。多對多並不是說多張表對應多張表

//插入資料

insert into teacher values(1,'黃老師');

insert into teacher values(2,'***');

insert into teacher values(3,'趙老師');

insert into student values(1,'張三');

insert into student values(2,'李四');

insert into student values(3,'王五');

insert into student values(4,'趙六');

//這裡黃老師教過張三,李四

insert into stu_tea values(1,1);

insert into stu_tea values(1,2);

//***教過王五,趙六

insert into stu_tea values(2,3);

insert into stu_tea values(2,4);

//趙老師教過張三,李四,王五,趙六

insert into stu_tea values(3,1);

insert into stu_tea values(3,2);

insert into stu_tea values(3,3);

insert into stu_tea values(3,4);

//上面這樣,乙個學生對應多個老師,乙個老師也對應多個學生,叫做多對多的關係

//我們一開始建立的員工表與部門表就是一對多

create table dept(

did int primary key auto_increment,

dname varchar(50)

);create table emp(

eid int primary key auto_increment,

ename varchar(50)

edid int,

constraint fk_emp_dept foreign key(edid) references dept(did)

);//這裡的一就是部門表(主表),多就是員工表(附表)

//插入資料

insert into dept values(10,'技術部');

insert into dept values(20,'人事部');

//張三,李四屬於技術部,王五屬於人事部

insert into emp values(null,'張三',10);

insert into emp values(null,'李四',10);

insert into emp values(null,'王五',20);

//乙個部門對應多個員工,一對多

MYSQL資料庫操作 多表操作

將多張表連在一起進行查詢。通過兩個表共有的列去進行拼接。多表連線,首先要在表之間建立連線。連線查詢一共分為以下幾類 交叉連線 內連線外連線 自然連線 將一張表的資料與另外一張表中的資料彼此交叉。也就是說把一張表中的每一行逐個與另一張表去進行匹配。沒有任何連線條件,所有的記錄都會被保留。select ...

mysql資料庫na (四)資料庫操作

1.載入驅動程式 class.forname com.mysql.jdbc.driver 2.連線資料庫 connection conn drivermanager.getconnection jdbc mysql localhost 埠號 預設3306 資料庫名稱?引數1 引數值1 引數2 引數值...

資料庫篇多表操作

第1章 多表操作 實際開發中,乙個專案通常需要很多張表才能完成。例如 乙個 專案就需要分類表 category 商品表 products 訂單表 orders 等多張表。且這些表的資料之間存在一定的關係,接下來我們將在單錶的基礎上,一起學習多表方面的知識。1.1 表與表之間的關係 有3類表關係 一對...