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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql修改级联表数据_MySQL数据库 外键,级联, 修改表的操作

發布時間:2024/7/23 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql修改级联表数据_MySQL数据库 外键,级联, 修改表的操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.外鍵: 用來建立兩張表之間的關系

- 一對多

- 多對多

- 一對一

研究表與表之間的關系:

1.定義一張 員工部門表

id, name, gender, dep_name, dep_desc

- 將所有數據存放在一張表中的弊端:

1.結構不清晰 ---> 不致命

2.浪費空間 ---> 不致命

3.可擴展性極差 ---> 不可忽視的弊端

- 類似于將所有python代碼存放在一個py文件中,強耦合到一起了----> 解耦合 ----> 拆分表

- 拆分表解決以上問題.

- 需要給兩張表之間,建立一種強有力的關系, 使用 “外鍵”

- !!!!! ****** 如何確認表與表之間的關系是 (一對多、多對多、一對一)

- 注意: 要確立兩張表之間的關系,必須站在兩個位置去思考:

- 站在員工表的位置: 多個員工能否對應一個部門? 能!!!

- 員工與部門: 多 對 一

- 員工表單向 多 對 一 部門表

- 站在部門表的位置: 多個部門能夠對應一個員工? 不能!!!

總結: 凡是單向 多 對 一 的表關系,稱之為 一對多 的外鍵關系。

- 外鍵: 語法: foreign key(當前表中建立關系的外鍵字段) references 被關聯表名(id)

- 一對多

# 創建兩張表

1.必須先建立被關聯表,再建立關聯表

# 被關聯表:

dep:

create table dep(

id int primary key auto_increment,

dep_name varchar(16),

dep_desc varchar(255)

);

# 關聯表:

emp:

create table emp(

id int primary key auto_increment,

name varchar(16),

age int,

gender enum('male', 'female', 'others') default 'male',

dep_id int not null,

foreign key(dep_id) references dep(id)

);

注:KEY中MUL代表外鍵

# 插入數據:

- 1.必須先插入被關聯表(dep)的數據,再插入關聯表(emp)的數據。

# dep:

insert into dep(dep_name, dep_desc) values('nb_外交部', '國際形象大使部門'),

('sb_教學部', '造程序員部門!!!!'),

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

# emp:

insert into emp(name, age, gender, dep_id)

values('tank', 17, 'male', 1),

('jason', 70, 'male', 2),

('sean', 50, 'male', 2),

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

('owen', 95, 'female', 3);

# 報錯,

insert into emp(name, age, gender, dep_id) values('大餅', 100, 'others', 999);

-級聯更新與級聯刪除(把關聯數據一起變更)

- on update cascade

- on delete cascade

-創建表

#被關聯表:

dep2:

create table dep2(

id int primary key auto_increment,

dep_name varchar(16),

dep_desc varchar(255)

);

#關聯表:

emp2:

create table emp2(

id int primary key auto_increment,

name varchar(16),

age int,

gender enum('male','female','others') default 'male',

dep_id int not null,

foreign key(dep_id) references dep2(id)

on update cascade

on delete cascade

);

- 插入數據

#dep:

insert into dep2(dep_name,dep_desc)values('nb_外交部','國際形象大使部門'),

('sb_教學部','造程序員部門!!!!'),('技術部','技術有限部門');

#emp:

insert into emp2(name,age,gender,dep_id)

values('tank',17,'male',1),

('jason',70,'male',2),

('sean',50,'male',2),

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

('owen',95,'female',3);

#報錯

insert into emp(name,age,gender,dep_id)values('大餅',100,'others',999);

- 更新數據或刪除數據

-更新記錄

update dep2 set id=200 where id=1;

-刪除記錄

delete from dep2 where id=200;

因為級聯,關聯數據一起變更為200

注意:mysql中沒有多對一,只有一對多

- 多對多

也必須站在兩張表的位置去思考;

- 錯誤示范:

#- 創建book表

create table book(

id int primary key auto_increment,

title varchar(20),

price int,

book_content varchar(255),

author_id int,

foreign key(author_id) references author(id)

on update cascade

on delete cascade

);

#- 創建author表

create table author(

id int primary key auto_increment,

name varchar(16),

age int,

book_id int,

foreign key(book_id) references book(id)

on update cascade

on delete cascade

);

- 問題: 無法知道哪張表是被關聯表

- 利用第三張表,為兩張表建立“多對多外鍵關系”。

#-book:

create table book(

id int primary key auto_increment,

title varchar(20),

price int,

book_content varchar(255)

);

#-auther:

create table author(

id int primary key auto_increment,

name varchar(16),

age int

);

#-book2author:

create table book2author(

id int primary key auto_increment,

book_id int,

author_id int,

foreign key(book_id) references book(id)

on update cascade

on delete cascade,

foreign key(author_id) references author(id)

on update cascade

on delete cascade

);

- 插入數據

#- book

insert into book(title, price, book_content) values

('金瓶mei', 199, '講述朦朧時光的小故事'),

('python從入門到斷氣', 2000, '學習如何一夜禿頭'),

('三體', 200, '跟著大佬進入宇宙奇幻世界')

;

- author

insert into author(name, age) values

('egon', 68),

('jason', 88);

- book2author:

insert into book2author(book_id, author_id) values

(1, 1),

(1, 2),

(2, 2),

(3, 1);

# 報錯, 插入的數據,book_id, author_id必須存在

insert into book2author(book_id,author_id) values(4, 4);

# 更新或刪除

#更新

update book set price =666 where id =1;

update book set id=4 where id=1;

#刪除

delete from book where id=4; (會刪除關聯表內容)

- 一對一:

- user_info:

id, name, age, gender, hobby, id_card

- user:

id , name, age, detail_id(外鍵)

- detail:

id, gender, hobby, id_card

user與detail表建立了 一對一的外鍵 關系。

foreign key 應該建在 使用頻率較高的一方。

-創建表

#被關聯表

create table customer(

id int primary key auto_increment,

name varchar(16),

media varchar(32)

);

#關聯表

create table student(

id int primary key auto_increment,

addr varchar(255),

phone_char(11),

id_card char(18),

# 外鍵必須設置成唯一的

customer_id int unique,

forign key(customer_id) references customer(id)

on update cascade

on delete cascade

);

- 插入數據

insert into customer(name,media) values

('hcy','facebook'),

('zsb1','ig'),

('zsb2','vk'),

('hb','探探');

insert into student(addr,phone,id_card,customer_id) values

('上海', '', '', 1),

('北京', '', '', 2);

# 報錯,一對一,關系必須 一一對應

insert into student(addr, phone, id_card, customer_id) values ('上海', '', '', 1);

- 插入數據:

insert into

修改表的操作

- 語法: 注意: mysql 關鍵字不區分大小寫

1. 修改表名

ALTER TABLE 表名 RENAME 新表名;

2. 增加字段

ALTER TABLE 表名 ADD 字段名 數據類型 [完整性約束條件…],ADD 字段名 數據類型 [完整性約束條件…]; # 添加到最后一列

ALTER TABLE 表名 ADD 字段名 數據類型 [完整性約束條件…] FIRST; # 添加到第一列

ALTER TABLE 表名 ADD 字段名 數據類型 [完整性約束條件…] AFTER 字段名; # 添加到某一列之后

3. 刪除字段

ALTER TABLE 表名 DROP 字段名;

4. 修改字段

ALTER TABLE 表名 MODIFY 字段名 數據類型 [完整性約束條件…]; # 修改數據類型

ALTER TABLE 表名 CHANGE 舊字段名 新字段名 舊數據類型 [完整性約束條件…]; # 修改字段名,保留字段類型

ALTER TABLE 表名 CHANGE 舊字段名 新字段名 新數據類型 [完整性約束條件…]; # 修改字段名與字段類型

- 復制表的操作:

復制表結構+記錄 (key不會復制: 主鍵、外鍵和索引)

mysql> create table new_service select * from service;

只復制表結構

# 將select * from service where 1=2; ---> 不要真實數據,需要表結構

mysql> create table new_customer select * from customer where 1=2;

MySQL的外鍵,修改表,基本數據類型,表級別操作,其他(條件,通配符,分頁,排序,分組,聯合,連表操作)

MySQL的外鍵,修改表,基本數據類型,表級別操作,其他(條件,通配符,分頁,排序,分組,聯合,連表操作): a.創建2張表 create table userinfo(nid int not nul ...

第二百八十節,MySQL數據庫-外鍵鏈表之一對多,多對多

MySQL數據庫-外鍵鏈表之一對多,多對多 外鍵鏈表之一對多 外鍵鏈表:就是a表通過外鍵連接b表的主鍵,建立鏈表關系,需要注意的是a表外鍵字段類型,必須與要關聯的b表的主鍵字段類型一致,否則無法創建索 ...

MySQL數據庫(4)_MySQL數據庫外鍵約束、表查詢

一.外鍵約束 創建外鍵 --- 每一個班主任會對應多個學生 , 而每個學生只能對應一個班主任 ----主表 CREATE TABLE ClassCharger( id TINYINT PRIMARY ...

MySQL數據庫--外鍵約束及外鍵使用

什么是主鍵.外鍵關系型數據庫中的一條記錄中有若干個屬性,若其中某一個屬性組(注意是組)能唯一標識一條記錄,該屬性組就可以成為一個主鍵. 比如: 學生表(學號,姓名,性別,班級) 其中每個學生的學號是唯 ...

mysql數據庫外鍵、主鍵詳解

一.什么是主鍵.外鍵: 關系型數據庫中的一條記錄中有若干個屬性,若其中某一個屬性組(注意是組)能唯一標識一條記錄,該屬性組就可以成為一個主鍵?比如??學生表(學號,姓名,性別,班級)?其中每個學生的學 ...

Database學習 - mysql 數據庫 外鍵

外鍵 外鍵約束子表的含義:如果在父表中趙達不到候選鍵,則不允許在子表上進行insert/update 外鍵預約對父表的含義:在父表上進行update/delete以更新或刪除子表中有一條或多條對應匹配 ...

MySQL數據庫-外鍵鏈表之一對多,多對多

外鍵鏈表之一對多 外鍵鏈表:就是a表通過外鍵連接b表的主鍵,建立鏈表關系,需要注意的是a表外鍵字段類型,必須與要關聯的b表的主鍵字段類型一致,否則無法創建索引 一對多:就是b表的某一個字段值對應a表外 ...

(4)MySQL的外鍵(不同表之間的數據關聯)

問題:下列這張表中部門等列名下輸入的數據沒有約束,那么可以隨便填寫符合規則的數據但是不符合實際需求的值,這樣就造成了不符合規則的數據在表中存在,外鍵就是為了解決這個問題,管理員可以在另一張表中設置好符 ...

黑馬MySQL數據庫學習day03 級聯 多表查詢 連接和子查詢 表約束

/* 存在外鍵的表 刪表限制: 1.先刪除從表,再刪除主表.(不能直接刪除主表,主表被從表引用,盡管實際可能還沒有記錄引用) 建表限制: 1.必須先建主表,再建從表(沒有主表,從表無法建立外鍵關系) ...

隨機推薦

swift 定位

iOS 8 及以上需要在info.plist文件中添加下面兩個屬性 NSLocationWhenInUseUsageDescription 使用應用期間 NSLocationAlwaysUsageDe ...

poj 1830 開關問題

開關問題 題意:給n(0 < n < 29)開關的初始和最終狀態(01表示),以及開關之間的關聯關系(關聯關系是單向的輸入a b表示a->b),問有幾種方式得到最終的狀態.否則輸出字 ...

Html5的&lt&semi;button&gt&semi;標簽

1.標簽是雙標簽,其內可添加文字,圖片等復雜的樣式. ?2.不僅可以在表單中使用,還可以在其他塊元素和內聯元素中使用. 3.一般在input標簽內添加name屬性,否則提交后不顯示.

win10關不了機解決辦法以及win10怎么禁止開機啟動項

1.win10關不了機解決辦法:https://zhidao.baidu.com/question/693962749213927924.html 2.win10怎么禁止開機啟動項:https://j ...

Java的常用命令javac與java

javac 可以使用javac -h來查看常用的命令: -> ~ # javac -help 用法: javac 其中, ...

Linux使用筆記

1:Ubuntu系統獲取超級權限: 在終端輸入:sudo passwd,重置uinx密碼.然后輸入 su ,輸入密碼,即可進入root權限. 2:更改文件屬性 Linux文件的基本權限有九個,分別是o ...

case when 多個條件 以及case when 權重排序

1. case when 多個條件 語法: SELECT nickname,user_name,CASE WHEN user_rank = '5' THEN '經銷商' WHEN user_rank ...

mxnet數據操作

# coding: utf-8 # In[2]: from mxnet import nd # In[3]: x = nd.arange(12) x # In[4]: x.shape,x.size # ...

騰訊Web前端開發框架JX&lpar;Javascript eXtension tools&rpar;

轉自:Web前端開發-Web前端工程師???騰訊Web前端開發框架JX(Javascript eXtension tools) JX – Javascript eXtension tools 一個類似 ...

洛谷P4762 &lbrack;CERC2014&rsqb;Virus synthesis(回文自動機&plus;dp)

傳送門 回文自動機的好題啊 先建一個回文自動機,然后記$dp[i]$表示轉移到$i$節點代表的回文串的最少的需要次數 首先肯定2操作越多越好,經過2操作之后的串必定是一個回文串,所以最后的答案肯定是由 ...

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的mysql修改级联表数据_MySQL数据库 外键,级联, 修改表的操作的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 漂亮人妻被黑人久久精品 | 蜜臀久久99精品久久一区二区 | 日本免费一区二区三区最新 | 深夜福利久久 | 日韩人妻无码精品综合区 | 欧美成人吸奶水做爰 | 色综合天天综合网天天看片 | 色亭亭 | 精品国产乱码一区二 | 男人视频网 | 在线观看国产福利 | 饥渴丰满的少妇喷潮 | 国产免费无码一区二区 | 久久黄色免费网站 | 欧美色图小说 | 欧美人与禽猛交乱配 | 国产成人精品一区二三区四区五区 | 少妇久久久久久久久久 | 日本午夜啪啪 | 欧美在线中文字幕 | 伊人久久久久久久久久 | 亚洲看| 18成人免费观看网站 | 18成人免费观看网站 | 色黄视频在线观看 | 97久久超碰 | 亚洲精品久久久久久久久久久 | 国产成人欧美一区二区三区91 | 成人精品一区二区 | 在线观看毛片av | 欧美成人777 | 五个女闺蜜把我玩到尿失禁 | 亚洲人成一区 | 免费在线激情视频 | 少妇姐姐 | 国产乱女淫av麻豆国产 | 在线高清观看免费观看 | 久久99精品久久久久久水蜜桃 | 欧美无遮挡高潮床戏 | 91福利在线视频 | 绿帽在线 | 日韩一区二区视频在线观看 | 日本视频中文字幕 | 日本黄色三级视频 | 国产精品夜夜夜爽阿娇 | 精品久久中文字幕 | 日韩第二页 | 国产一级视频在线 | 操模特| 男男做性免费视频网 | 欧美被狂躁喷白浆精品 | 久久久久久a | 蜜桃9999 | 中文字幕不卡在线播放 | 十八禁一区二区三区 | 成年人在线播放 | 国产无套粉嫩白浆内谢 | 成人激情视频在线观看 | 久久精品天天中文字幕人妻 | 男女做爰真人视频直播 | 国产在线网址 | 精品人妻无码一区二区三区换脸 | 欧美自拍色图 | av激情网站| 岛国一区二区 | 婷婷成人综合 | 深夜福利免费观看 | 国产精品午夜无码专区 | 欧美三级自拍 | 色婷婷av一区 | 播播开心激情网 | 欧美一区二区免费在线观看 | 色多多网站 | 一级作爱视频 | 1024日韩| 日韩在线视屏 | av成人在线电影 | av三级在线播放 | 欧美成人三级在线播放 | 国产成人综合在线 | 亚色视频在线观看 | 中文字幕在线视频一区 | 精品人妻伦一区二区三区久久 | 午夜精品久久久久久久久久久久 | 亚洲乱码日产精品bd在线观看 | 久久人人爽人人爽人人片av高清 | 伊人日日夜夜 | 黑丝啪啪 | 啦啦啦视频在线观看 | 少妇在军营h文高辣 | 日韩欧美中文字幕在线视频 | 男人av网| 亚洲美女屁股眼交3 | 久久免费少妇高潮久久精品99 | 色婷婷综合久久久中文字幕 | 国产精品免费久久 | 国产第20页 | 污视频在线观看网址 | 亚洲av少妇一区二区在线观看 |