mysql 多表操作2

2021-10-01 08:51:19 字數 2128 閱讀 3536

-- 1:一對多的關係(省表和市表)

-- 1 建立主表(省表)

create table province(

pid int primary key auto_increment,

pname varchar(20),

pdesc varchar(100)

);-- 2 建立從表(市表)

create table city(

cid int primary key auto_increment,

cname varchar(20),

cdesc varchar(100),

province_id int   #外來鍵列

);-- 3 建立外來鍵約束

alter table city add constraint fk_*** foreign key(province_id) references province(pid);

-- 4 給主表新增資料

insert into province values(null, '河北省','燕趙大地'),

(null, '山東省','齊魯聖地'),

(null, '河南省','中原腹地');

-- 5 給從表新增資料

insert into city values(null, '邯鄲市','趙國都城',1),

(null, '保定市','直隸總督',1),

(null, '青島市','青島啤酒',2),

(null, '濟南市','趵突泉城',2),

(null, '洛陽市','牡丹花城',3),

(null, '開封市','清明上河',3);

-- 2:使用者和角色(多對多)

-- 1建立演員表(左側主表)

create table user(

uid int primary key auto_increment,

uname varchar(20)

);-- 2建立角色表(右側主表)

create table role(

rid  int primary key auto_increment,

rname varchar(20)

);-- 3建立中間表(從表)

create table user_role(

uid int,

rid int

);-- 4建立外來鍵約束(2次)

alter table user_role add foreign key(uid) references user(uid);

alter table user_role add foreign key(rid) references role(rid);

-- 5給演員表新增資料

insert into user values(1,'鳴人'),(2,'佐助'),(3,'小櫻');

-- 6給角色表新增資料

insert into role values(1,'忍者'),(2,'學生'),(3,'火影人物');

-- 7給中間表新增資料

insert into user_role values(1,3),(2,2),(3,1);

-- 8  建立許可權表

create table privilege( 

pid int primary key auto_increment,

pname varchar(20)

);-- 9  第二個中間表

create table role_privilege(

rid int,

pid int

);-- 10 建立外來鍵約束

alter table role_privilege add foreign key(rid) references role(rid);

alter table role_privilege add foreign key(pid) references privilege(pid);

-- 11 給許可權表新增資料

insert into privilege values(1, '公升級'),(2,'吃拉麵'),(3,'跑');

-- 12 給中間表新增資料

insert into role_privilege values(1,1),(2,2),(3,3);

mysql的多表操作 MySQL多表操作

交叉連線 交叉連線 cross join 又稱笛卡爾連線 cartesian join 或叉乘 product 它是所有型別內連線的基礎。它把表看作是行記錄的集合,交叉連線即返回這兩個集合的笛卡爾積。這其實等價於內連線的連線條件始終為 真 或連線條件不存在。笛卡爾積引用自數學,在數學中,兩個集合x和...

MySQL多表操作

方式一 create table stu sid int primary key,sname varchar 20 age int 方式二 create table stu sid int,sname varchar 20 age int,primary key sid 方式三 create tab...

MySql多表操作

今日任務 教學目標 1.為什麼要拆表 1.1表的準備 建立一張分類表 類別id,類別名稱.備註 類別id為主鍵並且自動增長 建立一張明星表 明星id,明星名稱,明星身價,明星年齡,明星性別,明星類別.備註 明星id為主鍵並且自動增長 2.引用完整性 表和表之間存在一種關係,但是這個關係需要誰來維護和...