若我們要用 SQL 來在一個表格上添加新的欄位,我們可以用 ALTER TABLE 的指令來宣告我們要改變這個表格的架構,接下來在同一句 SQL 我們用 ADD 指令來宣告我們要添加一個新的欄位。

語法

在 MySQL、Oracle 和 SQL Server 上,ALTER TABLE Add Column 的語法為:

ALTER TABLE "表格名稱"
ADD "欄位名稱" "資料種類";

在 Google BigQuery 上, ALTER TABLE Add Column 的語法為,

ALTER TABLE "表格名稱"
ADD COLUMN "欄位名稱" "資料種類" [, ...];

在 SparkSQL and Hive SQL (HiveQL) 上, ALTER TABLE Add Column 的語法為,

ALTER TABLE "表格名稱"
ADD COLUMNS "欄位名稱" "資料種類";

範例

讓我們看一個例子。假設我們的起點是在 CREATE TABLE 那一頁所建立的 Customer 表格:

Customer 表格
 欄位名稱  資料種類 
 First_Name  char(50) 
 Last_Name  char(50) 
 Address  char(50) 
 City  char(50) 
 Country  char(25) 
 Birth_Date  datetime 

範例1:加一個欄位

我們的目標是新增一個名為「Gender」的欄位。要達到這個目的,我們輸入:

MySQL:

ALTER TABLE Customer ADD Gender char(1);

Oracle:

ALTER TABLE Customer ADD Gender char(1);

SQL Server:

ALTER TABLE Customer ADD Gender char(1);

Google BigQuery:

ALTER TABLE Customer ADD COLUMN Gender char(1);

SparkSQL:

ALTER TABLE Customer ADD COLUMNS Gender char(1);

HiveQL:

ALTER TABLE Customer ADD COLUMNS Gender char(1);

現在 Customer 表格結構如下:

Customer 表格
 欄位名稱  資料種類 
 First_Name  char(50) 
 Last_Name  char(50) 
 Address  char(50) 
 City  char(50) 
 Country  char(25) 
 Birth_Date  datetime 
 Gender  char(1) 

請注意,新的「Gender」欄位是 Customer 表格中的最後一個欄位。

範例2:加好幾個欄位

我們也可以一次加入不只一個新的欄位。要達到這個目的,我們在 ADD 之後加一個括號,然後按照我們想要的次序列出新的欄位以及該欄位的資料種類。不同欄位之間用逗號隔開。

舉例來說,如果我們要新增兩個欄位,一個叫 「Email」 ,而另一個叫 「Telephone」 ,我們將輸入以下的 SQL:

MySQL:

ALTER TABLE Customer ADD (Email char(30), Telephone char(20) );

Oracle:

ALTER TABLE Customer ADD (Email char(30), Telephone char(20) );

SQL Server:

ALTER TABLE Customer ADD (Email char(30), Telephone char(20) );

Google BigQuery:

ALTER TABLE Customer ADD COLUMN Email char(30), ADD COLUMN Telephone char(20);

SparkSQL:

ALTER TABLE Customer ADD COLUMNS (Email char(30), Telephone char(20) );

HiveQL:

ALTER TABLE Customer ADD COLUMNS (Email char(30), Telephone char(20) );

表格的架構現在變為:

Customer 表格
 欄位名稱  資料種類 
 First_Name  char(50) 
 Last_Name  char(50) 
 Address  char(50) 
 City  char(50) 
 Country  char(25 
 Birth_Date  datetime 
 Gender  char(1) 
 Email  char(30) 
 Telephone  char(20) 

請注意,Spark 只有一個 string 資料種類來儲存文字資料。在 SparkSQL 中指定 char() 資料種類不會造成錯誤,但新的欄位的資料種類將會是 string 而不是 char()。

下一頁: Change Column (更改欄位)

本頁最近於 2023年12月29日更新



Copyright © 2024   1keydata.com   版權所有