SQL 表的删除(DROP TABLE)和更新(ALTER TABLE)
目錄一、表的刪除(DROP TABLE 語句)二、表定義的更新(ALTER TABLE 語句)三、向 Product 表中插入數據請參閱
學習要點
使用
DROP TABLE語句來刪除表。使用
ALTER TABLE語句向表中添加列或者從表中刪除列。
一、表的刪除(DROP TABLE 語句)
此前介紹的都是關于 Product 表的內容的創建,下面我們就來介紹一下刪除表的方法。刪除表的 SQL 語句非常簡單,只需要一行 DROP TABLE 語句即可。
KEYWORD
DROP TABLE語句
語法 3 刪除表時使用的 DROP TABLE 語句
DROP TABLE <表名>;
如果想要刪除 Product 表,只需要像代碼清單 3 那樣書寫 SQL 語句即可 [1]。
代碼清單 3 刪除 Product 表
DROP TABLE Product;
DROP 在英語中是“丟掉”“舍棄”的意思。需要特別注意的是,刪除的表是無法恢復的 [2]。即使是被誤刪的表,也無法恢復,只能重新創建,然后重新插入數據。
如果不小心刪除了重要的業務表,那就太悲劇了。特別是存儲了大量數據的表,恢復起來費時費力,請大家務必注意!
法則 12
刪除了的表是無法恢復的。
在執行
DROP TABLE語句之前請務必仔細確認。
二、表定義的更新(ALTER TABLE 語句)
有時好不容易把表創建出來之后才發現少了幾列,其實這時無需把表刪除再重新創建,只需使用變更表定義的 ALTER TABLE 語句就可以了。 ALTER 在英語中就是“改變”的意思。下面就給大家介紹該語句通常的使用方法。
KEYWORD
ALTER TABLE語句
首先是添加列時使用的語法。
語法 4 添加列的 ALTER TABLE 語句
ALTER TABLE <表名> ADD COLUMN <列的定義>;
特定的 SQL
Oracle 和 SQL Server 中不用寫
COLUMN。ALTER TABLE <表名> ADD <列名> ;另外,在 Oracle 中同時添加多列的時候,可以像下面這樣使用括號。
ALTER TABLE <表名> ADD (<列名>,<列名>,……);
例如,我們可以使用代碼清單 4 中的語句在 Product 表中添加這樣一列,product_name_pinyin(商品名稱(拼音)),該列可以存儲 100 位的可變長字符串。
代碼清單 4 添加一列可以存儲 100 位的可變長字符串的 product_name_pinyin 列
DB2 PostgreSQL MySQL
ALTER TABLE Product ADD COLUMN product_name_pinyin VARCHAR(100);
Oracle
ALTER TABLE Product ADD (product_name_pinyin VARCHAR2(100));
SQL Server
ALTER TABLE Product ADD product_name_pinyin VARCHAR(100);
反之,刪除表中某列使用的語法如下所示。
語法 5 刪除列的 ALTER TABLE 語句
ALTER TABLE <表名> DROP COLUMN <列名>;
特定的 SQL
Oracle 中不用寫
COLUMN。ALTER TABLE <表名> DROP <列名> ;另外,在 Oracle 中同時刪除多列的時候,可以像下面這樣使用括號來實現。
ALTER TABLE <表名> DROP (<列名>,<列名>,……);
例如,我們可以使用代碼清單 5 中的語句來刪除之前添加的 product_name_pinyin 列。
代碼清單 5 刪除 product_name_pinyin 列
SQL Server DB2 PostgreSQL MySQL
ALTER TABLE Product DROP COLUMN product_name_pinyin;
Oracle
ALTER TABLE Product DROP (product_name_pinyin);
ALTER TABLE 語句和 DROP TABLE 語句一樣,執行之后無法恢復。誤添的列可以通過 ALTER TABLE 語句刪除,或者將表全部刪除之后重新再創建。
法則 13
表定義變更之后無法恢復。
在執行
ALTER TABLE語句之前請務必仔細確認。
三、向 Product 表中插入數據
最后讓我們來嘗試一下向表中插入數據。從下一章開始,大家將會使用插入到 Product 表中的數據,來學習如何編寫操作數據的 SQL 語句。
向 Product 表中插入數據的 SQL 語句如代碼清單 6 所示。
代碼清單 6 向 Product 表中插入數據的 SQL 語句
SQL Server PostgreSQL
-- DML :插入數據
BEGIN TRANSACTION;------------------①
INSERT INTO Product VALUES ('0001', 'T恤衫', '衣服', 1000, 500, '2009-09-20');
INSERT INTO Product VALUES ('0002', '打孔器', '辦公用品', 500, 320, '2009-09-11');
INSERT INTO Product VALUES ('0003', '運動T恤', '衣服', 4000, 2800, NULL);
INSERT INTO Product VALUES ('0004', '菜刀', '廚房用具', 3000, 2800, '2009-09-20');
INSERT INTO Product VALUES ('0005', '高壓鍋', '廚房用具', 6800, 5000, '2009-01-15');
INSERT INTO Product VALUES ('0006', '叉子', '廚房用具', 500, NULL, '2009-09-20');
INSERT INTO Product VALUES ('0007', '擦菜板', '廚房用具', 880, 790, '2008-04-28');
INSERT INTO Product VALUES ('0008', '圓珠筆', '辦公用品', 100, NULL,'2009-11-11');
COMMIT;
特定的 SQL
DBMS 不同,代碼清單 6 中的 DML 語句也略有不同。
在 MySQL 中運行時,需要把 ① 中的
BEGIN TRANSACTION;改寫成START TRANSACTION;在 Oracle 和 DB2 中運行時,無需使用 ① 中的
BEGIN TRANSACTION;(請予以刪除)。這些在不同的 DBMS 中使用的 DML 語句,可以從這里下載。
使用插入行的指令語句 INSERT,就可以把表 2 中的數據都插入到表中了。開頭的 BEGIN TRANSACTION 語句是開始插入行的指令語句,結尾的 COMMIT 語句是確定插入行的指令語句。這些指令語句將會在 數據的插入 中詳細介紹,大家不必急于記住這些語句。
專欄
表的修改
本節將名為
Product的表作為例子進行了講解,估計會有些讀者在匆忙中把表名誤寫成了Poduct,創建出了名稱錯誤的表,這可怎么辦呢?如果還沒有向表中插入數據,那么只需要把表刪除,再重新創建一個名稱正確的表就可以了。可是如果在發現表名錯誤之前就已經向表中插入了大量數據,再這樣做就麻煩了。畢竟插入大量的數據既費時又費力。抑或起初決定好的表名,之后又覺得不好想換掉,這種情況也很麻煩。
其實很多數據庫都提供了可以修改表名的指令(
RENAME)來解決這樣的問題。例如,如果想把Poduct表的名稱變為Product,可以使用代碼清單 A 中的指令。KEYWORD
RENAME代碼清單 A 變更表名
Oracle PostgreSQL
ALTER TABLE Poduct RENAME TO Product;DB2
RENAME TABLE Poduct TO Product;SQL Server
sp_rename 'Poduct', 'Product';MySQL
RENAME TABLE Poduct to Product;通常在
RENAME之后按照 <變更前的名稱>、<變更后的名稱> 的順序來指定表的名稱。各個數據庫的語法都不盡相同,是因為標準 SQL 并沒有
RENAME,于是各個數據庫便使用了各自慣用的語法。如上所述,在創建了錯誤的表名,或者想要保存表的備份時,使用這些語句非常方便。但美中不足的是,由于各個數據庫的語法不同,很難一下子想出恰當的指令。這時大家就可以來參考本專欄。
請參閱
數據庫是什么
數據庫的結構
SQL 概要
表的創建
表的刪除和更新
(完)
隨后還需使用 Product 表來學習相關知識,請不要刪除 Product 表。如果已經刪除,請重新創建 Product 表。 ↩?
其實很多 RDBMS 都預留了恢復的功能,但還是請大家認為是無法恢復的。 ↩?
總結
以上是生活随笔為你收集整理的SQL 表的删除(DROP TABLE)和更新(ALTER TABLE)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: brew 镜像_Docker牛刀小试:安
- 下一篇: jsp中两个double相乘_图像处理中