MySQL外鍵及串聯刪除 && 表的儲存引擎與建立索引 && 刪除資料庫和表

來源:互聯網
上載者:User

標籤:

Messages表:

mysql>create table Messages(

       ->message_id int auto_increment primary key, 

       ->user_name varchar(50) not null,

       ->author_id int not null,

       ->body text,

       ->forum_id int not null);

Forums表:

mysql>create table Forums(

        ->forum_id int auto_increment primary key,

        ->name varchar(150),

        ->description text,

        ->owner_id int);

兩種最常見的引擎是MyISAM和InnDB。(MyIsAm更快並且表格儲存體所需空間更少,,InnoDB 支援SQL交易處理所需的更加健壯的表和記錄鎖定);

在SQL中使用create table 語句時可以指定儲存引擎:

mysql>create table Messages(

       ->message_id int auto_increment primary key, 

       ->user_name varchar(50) not null,

       ->author_id int not null,

       ->body text,

       ->forum_id int not null

       ->)engine InnoDB;

 

對於某個表,比如Messages表,我們常常希望有效搜尋這個表,在只給定使用者名稱(user_name)的條件下尋找記錄。

我們可以通過把索引添加到create table語句中完成這一操作:

mysql>create table Messages(

       ->message_id int auto_increment primary key, 

       ->user_name varchar(50) not null,

       ->author_id int not null,

       ->body text,

       ->forum_id int not null

       ->index(user_name)

       ->)engine InnoDB;

如果我們後來又發現需要頻繁的搜尋author_id欄位,那麼使用create index 語句 我們可以在建立表之後建立索引:

create index author_id on Messages (author_id);

 

外鍵和串聯刪除::::

前面的連個表中,我們發現用於訊息的表具有引用forums表的外鍵,:forums_id int not null

 這表示我們希望messages中的forums_id只能是來自forums表中的forums_id 的合法標示符,雖然可以在使用者添加訊息時候添加一下代碼驗證forums_id是合法的,但是我們可以讓資料庫伺服器通過強制外鍵來替我們完成這個工作,:

foreign key (formus_id) references Forums (forums_id);   

如果試圖把forums_id欄位添加不表示來自適當表的合法標示符到Messages表,就會導致錯誤。

 

當我們想刪除一個表時例如Forums 就會導致Messages表中有一行指向不在的Forums表,我們在設計Web應用程式時候,希望資料庫自動刪除所有屬於這個表的訊息,那麼可以進一步修改foreign key約束,讓他執行串聯刪除。當父表(Forums)中的記錄被刪除時候,子表(Messages)中外鍵引用的的被設定為剛被刪除的父記錄的Id(例如forums_id)的任何記錄也被資料庫引擎刪除。

通過在外鍵聲明中添加on delete cascade :

foreign key (forums_id) references Forums (forum_id)

   on delete cascade

 

刪除資料庫和表:

在SQL中,使用drop database和drop table 查詢執行這些任務。這兩個查詢都使用要刪除的實體的名稱作為參數:

drop database 資料庫名;

drop table 表名;

 

MySQL外鍵及串聯刪除 && 表的儲存引擎與建立索引 && 刪除資料庫和表

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.