6.1 改變數據庫的結構
最後,使用數據庫最有趣的部分是更改數據庫。如果你認為這是一件非常簡單的事情,那麼這裡有一個關於這個話題的軼事:
The service station master, wiping his hands, hands over the car to the client and chats along the way:
- But who do you work for?
- I am a cardiac surgeon, I perform heart operations.
- And they pay a lot?
- $20,000 per operation.
- Nothing for myself ... But we, in fact, are doing the same thing, sorting out the engines, and they pay me only $ 300 ...
- Do you want to earn as much as I do?
- Want...
The surgeon starts the engine in the car and turns to the master:
- Move over!
數據庫的情況完全相同。你想取出分錶的一部分數據?好的,你需要:
- 創建一個新表
- 將數據複製到這個新表中
- 從舊表中刪除列
- 更改所有引用舊表的 SQL 查詢
- 添加將訪問新表的 SQL 查詢
- 更改以舊方式處理表的 Java 代碼
- 更改備份和恢復腳本,因為現在表結構不匹配
- 如果您有開發人員的測試數據,您也需要更改它們
儘管實際上情況更糟:
新的數據庫結構:
- 首先你改變開發者機器上的表結構
- 那麼你確信這樣的結構真的更好
- 批准新的數據庫結構
遷移腳本:
- 您編寫將在真實數據庫上更改表數據等的腳本
- 在具有舊數據庫結構的機器上運行這些腳本,看看它是如何變化的
- 驗證新基地的所有關鍵位置
更新發售
- 停止生產數據庫
- 做一個完整的備份
- 執行腳本
- 由於市場上通常有很多,這些腳本可以工作數小時
您啟動產品並希望您不必回滾所有內容。
6.2 ALTER TABLE 語句
另一方面,更改表結構的腳本本身非常簡單。在某些方面,它類似於表創建腳本。表更改請求的一般視圖:
ALTER TABLE table
team 1,
team 2,
Team N
命令非常不同,但可以區分三個主要組:
ADD
- 添加一些東西到表MODIFY
- 更改表格中的內容DROP
- 刪除表中的內容
當我說一些事情時,它不是關於數據,而是關於表的結構。
例如,您決定向表中添加一個新列,那麼您需要執行以下查詢:
ALTER TABLE table
ADD COLUMN Name type
讓我們編寫一個查詢,將電子郵件列添加到我們的員工表中:
ALTER TABLE employee
ADD COLUMN email VARCHAR(10)
現在讓我們將電子郵件字符串的長度從 10 更改為 100:為此我們需要一個新腳本:
ALTER TABLE employee
MODIFY COLUMN email VARCHAR(100)
如果你想改變一個列的一些屬性,而不是它的類型,那麼你需要這個命令 ALTER COLUM
。讓我們設置默認的電子郵件值:
ALTER TABLE employee
ALTER COLUMN email VARCHAR(100) DEFAULT 'test@test.com'
最後,如果不需要,可以刪除該列:
ALTER TABLE employee
DROP COLUMN email
6.3 添加和刪除主鍵
還有一些更有用的例子。
假設我們忘記將id列聲明為主鍵。您始終可以通過以下方式單獨進行ALTER TABLE
:
ALTER TABLE employee
ADD PRIMARY KEY (email);
刪除它更容易:
ALTER TABLE employee
DELETE PRIMARY KEY;
GO TO FULL VERSION