国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

directory search
前言 MySQL的使用 MySQL多表同時(shí)刪除方案 MySQL跨表、多表更新SQL語句總結(jié) MySQL存儲(chǔ)引擎 安裝 常規(guī)方式編譯安裝MySQL 采用cmake方式編譯安裝MySQL 使用rpm包安裝MySQL 使用yum方式安裝MySQL 采用二進(jìn)制方式免編譯安裝MySQL 多實(shí)例的安裝 什么是多實(shí)例 多實(shí)例的作用、問題以及應(yīng)用場(chǎng)景 多實(shí)例安裝01【推薦】 多實(shí)例官方安裝方案02 啟動(dòng)、用戶和權(quán)限管理 單實(shí)例MySQL的啟動(dòng)和關(guān)閉的方法 設(shè)置及修改MySQL root用戶密碼 找回丟失的MySQL root用戶密碼 創(chuàng)建MySQL用戶及用戶權(quán)限管理 基礎(chǔ)命令的操作 MySQL庫和表相關(guān)操作 MySQL中的索引操作 MySQL常用命令 MySQL的錯(cuò)誤代碼 MySQL復(fù)習(xí)秘籍 備份與恢復(fù) 備份 恢復(fù) mysqlbinlog命令 服務(wù)日志 主從復(fù)制 主從復(fù)制部署配置問題匯總 主從復(fù)制讀寫分離 災(zāi)難恢復(fù) 配置phpmyadmin連接多實(shí)例MySQL MySQL語句大全 用戶創(chuàng)建、權(quán)限、刪除 數(shù)據(jù)庫與表顯示、創(chuàng)建、刪除 Mysql表復(fù)制及備份還原 數(shù)據(jù)庫表中數(shù)據(jù)操作 修改表中的指定一條數(shù)據(jù) 查詢表 日志 批量修改Mysql表引擎為InnoDB的方法 數(shù)據(jù)庫抽象層 PDO PDO對(duì)象常用方法 PDO 事務(wù)處理 PDO 與 MySQLi 二者效率簡(jiǎn)單比較 大小寫敏感性 lower_case_table_names CentOS7安裝MySQL5.7密碼查看與修改
characters

MySQL多表同時(shí)刪除方案

MySQL可以在一個(gè)SQL語句中刪除多張表的記錄,也可以通過多個(gè)表之間的關(guān)聯(lián)關(guān)系刪除某個(gè)表的數(shù)據(jù),在MySQL4.0版本之后MySQL支持多表刪除。

假定目前有兩張表goodsgoods_price表,前者是保存商品的具體信息,后者是保存商品的價(jià)格,具體的表結(jié)構(gòu)如下:

create table goods (
`id` int unsigned primary key auto_increment,
`goods_name` varchar(30) not null default ''
)engine innodb charset utf8;
create table goods_price (
`goods_id` int unsigned not null,
`price` decimal(8,2) not null default '0.00'
)engine innodb charset utf8;
insert into goods values (1,'商品1'),(2,'商品2'),(3,'商品3'),(4,'商品4'),(5,'商品5');
insert into goods_price values (1,'5.44'),(2,'3.22'),(3,'5.55'),(4,'0.00'),(5,'4.54');

在delete時(shí)使用逗號(hào)分割刪除

這里我們不適用join連接操作進(jìn)行刪除,具體SQL如下:

delete g.*,p.* from goods as g,goods_price as p where g.id = p.goods_id and g.id = 1;

使用連表查詢

使用inner join刪除

使用inner join在連接時(shí)指定表與表之間的關(guān)聯(lián)關(guān)系進(jìn)行刪除,具體SQL如下:

DELETE g.*,p.* FROM goods as g INNER JOIN goods_price as p ON g.id=p.goods_id WHERE g.id = 2;

使用連接刪除的時(shí)候不必刪除所有表數(shù)據(jù),上面的SQL語句會(huì)同時(shí)刪除goodsgoods_price兩張表中的數(shù)據(jù),但是可以指定DELETE g.*從而只刪除goods表中的記錄,而不刪除goods_price表中的記錄[DELETE g.* FROM goods as g INNER JOIN goods_price as p ON g.id=p.goods_id WHERE g.id = 3;],但是在這里明顯是不合適的,但是我們可以這樣做。

使用left join刪除

left join的使用方法如上,具體的SQL如下:

DELETE g.*,p.* FROM goods as g LEFT JOIN goods_price as p ON g.id=p.goods_id WHERE g.price = '0.00';

使用外鍵約束

給表新增約束外鍵并使用級(jí)聯(lián)(cascade)方式對(duì)表與表之間關(guān)系進(jìn)行約束。具體的SQL如下:

alter table goods_price
add constraint FK_goods_id foreign key(goods_id)
 references goods(id) on delete cascade on update cascade;

修改完后我們后期刪除主表數(shù)據(jù),關(guān)聯(lián)表數(shù)據(jù)也會(huì)被刪除。

delete from goods where id=5;
Previous article: Next article: