刪除表是指刪除資料庫中已經存在的表。刪除表時,會刪除表中的所有資料。因此,我們在刪除表的時候要特別小心。
mysql中通過drop table語句來刪除表。由於建立表時可能存在外來鍵約束,一些表成為了與之關聯的表的父類。要刪除這些表,情況還有點複雜,因為不能直接刪除。
ok,這篇部落格我在這裡詳細的整理下刪除沒有被關聯的普通表和被其他表關聯的父類的方法。
mysql中,直接使用drop table語句可以刪除沒有被其他關聯的普通表,其基本語法如下:
drop table 表名
其中,『表名』引數為要刪除的表的名稱。
ok,現在我們來實際操作下資料庫:
create table `user` (
`id` int(11) not null auto_increment,
`name` varchar(5) collate utf8_bin not null,
`card_id` varchar(20) collate utf8_bin default null,
`age` int(11) default '25',
primary key (`id`),
unique key `age_unique` (`card_id`)
) engine=innodb auto_increment=4 default charset=utf8 collate=utf8_bin;
然後我要刪除到這張表,
ok,沒問題,成功的刪除user表了。
ok,同樣的,現在我們離實際操作下資料庫,建表語句如下:
create table linkinframe.`user` (
`id` int(11) not null auto_increment,
`name` varchar(5) collate utf8_bin not null,
`card_id` varchar(20) collate utf8_bin default null,
`age` int(11) default '25',
primary key (`id`),
unique key `age_unique` (`card_id`)
) engine=innodb auto_increment=4 default charset=utf8 collate=utf8_bin;
create table `address` (
`id` int(11) not null,
`user_id` int(11) default null,
`name` varchar(45) collate utf8_bin default null,
primary key (`id`),
key `user_id_idx` (`user_id`),
constraint `user_id` foreign key (`user_id`) references `user` (`id`) on delete cascade on update cascade
) engine=innodb default charset=utf8 collate=utf8_bin;
ok,現在我們刪除主表user,
drop table linkinframe.user;
刪除失敗,資料庫報錯:
cannot delete or update a parent row: a foreign key constraint fails。
那要怎麼辦呢?1,最簡單最直接的辦法是,先刪除子表address,然後在刪除父表。但是這樣子可能會影響到子表的其他資料2,另一種辦法就是先刪除子表的外來鍵約束,然後再刪除父表。這種辦法,不會影響到子表的其他資料,可以保證資料庫的安全。實際操作中也是往往使用第2種方式,只刪除從表的外來鍵約束而不是把整個從表都刪除掉。
ok,現在我們先去刪除從表address的外來鍵約束:
alter table linkinframe.address drop foreign key user_id;
我們先來檢視下從表的表結構:
ok,外來鍵刪除成功,現在我們在刪除主表user;
ok,結果顯示user已經不存在了,主表刪除成功。
刪除乙個表時,表中所有的資料也會被刪除。因此,在刪除表的時候一定要慎重。
最穩妥的做法就是先將表中所有的資料備份出來,然後在刪除表,一般刪除表後發現造成了損失,還可以通過備份的資料還原表,以便將損失降低到最小。
oracle語句管理表 DDL
學習oracle的語句管理之前,我們需要了解oracle的體系結構 oracle database 資料庫是由 資料庫 例項組成 從概念上來看,例項是暫時的,它不過是一組邏輯劃分的記憶體結構和程序結構,例項會隨著程序的關閉而關閉,但是資料庫不一樣,資料庫是一堆物理檔案,資料庫是永久存在磁碟上的 除非...
獲取表約束的DDL語句
昨天同事遇到乙個有關約束的問題.其他同事設定了2個資料庫,其中乙個是從另外乙個exp imp的,但不知什麼原因,現在2個資料庫的使用者下表的約束存在很多不同.他就問我有什麼方法將原庫的約束匯出來,然後重新在新的資料庫中 建立.當然最簡單的方法是使用exp重新匯出原來資料庫的結構資訊,然後匯入新資料庫...
DDL語句(三) 表的管理
一 建立表 語法 create table if not exists 表名 欄位名 字段型別 約束 欄位名 字段型別 約束 欄位名 字段型別 約束 二 修改表 1 新增列 alter table 表名 add column 列名 型別 first after 欄位名 2 修改列的型別或約束 alt...