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;