日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

ef mysql 外键 一对一_MySQL 外键 一对一 一对多 多对多 复制

發布時間:2024/8/23 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ef mysql 外键 一对一_MySQL 外键 一对一 一对多 多对多 复制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#外鍵

## 1,學習外鍵首先要明白表與表之間的關系

? 首先要換位思考 在考慮了這邊 還要考慮另一邊

? 然后在下定論### 判斷表關系的語法

#### 圖書與出版社

? 一本書可不可以有多個出版社 不可以

? 一個出版社可不可以出版多本書 可以

? 這就是一對多關系#### 圖書與作者

? 一本書可不可以有多個作者 可以

? 一個作者可不可以寫多本書 可以

? 多對多的關系### 作者與作者信息

? 一個作者可不可以有多個個人信息 不可以

? 一個作者的個人信息能不能有多個作者 不可以

? 要么兩個是一對一,要么沒關系

primary key 主鍵約束,該約束的意思就是,該字段的值非空且不能重復

關鍵字 references 建立表與表之間的關系

foreign key 外鍵約束,意思就是該字段與另外一張表有聯系.好比兒子必定有爸爸,要是有人想把爸爸K掉,兒子就肯定不干了!反之沒兒子的人如果要被K,就沒人管啦## 2,一對多

?#foreign key會帶來什么效果

?1,在創建表的時候,先創建 被關聯的表不帶有foreign key

? 創建完在創建帶有foreign key

```python

create table dep(

id int primary key auto_increment,

dep_name char(10),

dep_comment char(60)

);

create table emp(

id int primary key auto_increment,

name char(15),

gender enum('male','female') not null default 'male',

dep_id int,

foreign key (dep_id) references dep(id) 給這個dep_ip傳入的id必須是

另一個表的id 而 referencnces 就是鏈接起另一張表 dep 里面一般都放的是令一張表的主鍵 且在給dep_id 傳值的時候必須是另一張表有的id 如果沒有就報錯

on update cascade

on delete cascade

);

insert into dep (dep_name,dep_comment) values

('教學部','輔導學生,教授python'),

('外交','中國形象大屎'),

('技術部門','技術能力有限部門');

insert into emp (name,gender,dep_id) values

('jason','male',1),

('egon','male',2),

('taken','female',3);

```## 3,多對多

```python#圖書表與作者表之間的關系

"""仍然站在兩張表的角度:

1.站在圖書表:一本書可不可以有多個作者,可以!那就是書多對一作者

2.站在作者表:一個作者可不可以寫多本書,可以!那就是作者多對一書

雙方都能一條數據對應對方多條記錄,這種關系就是多對多!"""

#先來想如何創建表?圖書表需要有一個外鍵關聯作者,作者也需要有一個外鍵字段關聯圖書。問題來了,先創建誰都不合適!如何解決?#建立第三張表,該表中有一個字段fk左表的id,還有一個字段是fk右表的id

create table author (

id int primary key auto_increment,

name char(10));

create table book(

id int primary key auto_increment,

bname char(10),

price int);

insert into author (name) values

('egon'),

('jason'),

('yangxin'),

('alex');

insert into book (bname,price) values

('php從入門到消失',1000),

('葵花寶典',553),

('小澤瑪利亞大戰蒼井空',200009),

('小澤精選',20000),

('小倉精選',2222);

create table author2book(

id int primary key auto_increment,

author_id int,

book_id int,

foreign key (author_id) references author(id)

on update cascade

on delete cascade,

foreign key (book_id) references author(id)

on update cascade

on delete cascade);

insert into author2book(author_id,book_id) values

(1,2),

(2,3),

(3,4),

(1,4),

(4,2);

```## 4,一對一

用戶名 和用戶信息

?

```python

左邊的表記錄唯一對應右邊的一條記錄,反之也一樣

create table username(

id int primary key auto_increment,

name char(10) notnull,

age intnotnull);

insert into username(name,age) values

('jason',98),

('yangxin',18),

('wukai',10);

create table card(

id int primary key auto_increment,

identity int unique,#該字段唯一

username_id int unique,#該字段唯一

foreign key (card_id) references username(id)

on delete cascade

on update cascade);

insert into card(identity,username_id) values

('170020',1),

('125435',2),

('146547',3);

```## 5修改表

```python#mysql對大小寫不敏感!!!

語法: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 舊字段名 新字段名 舊數據類型 [完整性約束條件…]; ? ? ?ALTER TABLE 表名

CHANGE 舊字段名 新字段名 新數據類型 [完整性約束條件…];

```## 6復制表

?

```python#復制表 語法 create table 表名 select *from 被復制的表名#只能復制表的結構+記錄 不會復制 主鍵 外鍵 和索引

```

總結

以上是生活随笔為你收集整理的ef mysql 外键 一对一_MySQL 外键 一对一 一对多 多对多 复制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。