
- 表特定語句
- Impala - 建立表語句
- Impala - 插入語句
- Impala - 選擇語句
- Impala - 描述語句
- Impala - 修改表
- Impala - 刪除表
- Impala - 截斷表
- Impala - 顯示錶
- Impala - 建立檢視
- Impala - 修改檢視
- Impala - 刪除檢視
- Impala - 子句
- Impala - ORDER BY 子句
- Impala - GROUP BY 子句
- Impala - HAVING 子句
- Impala - LIMIT 子句
- Impala - OFFSET 子句
- Impala - UNION 子句
- Impala - WITH 子句
- Impala - DISTINCT 運算子
- Impala 有用資源
- Impala - 快速指南
- Impala - 有用資源
- Impala - 討論
Impala - 修改表
Impala 中的 ALTER TABLE 語句用於對給定表進行更改。使用此語句,我們可以新增、刪除或修改現有表中的列,還可以重新命名它。
本章介紹了各種型別的 ALTER 語句,並附有語法和示例。首先假設我們在 Impala 的 my_db 資料庫中有一個名為 customers 的表,資料如下所示
ID NAME AGE ADDRESS SALARY --- --------- ----- ----------- -------- 1 Ramesh 32 Ahmedabad 20000 2 Khilan 25 Delhi 15000 3 Hardik 27 Bhopal 40000 4 Chaitali 25 Mumbai 35000 5 kaushik 23 Kota 30000 6 Komal 22 Mp 32000
並且,如果您獲取 my_db 資料庫中的表列表,您可以在其中找到 customers 表,如下所示。
[quickstart.cloudera:21000] > show tables; Query: show tables +-----------+ | name | +-----------+ | customers | | employee | | student | | student1 | +-----------+
更改表名
語法
ALTER TABLE 重新命名現有表的語法如下:
ALTER TABLE [old_db_name.]old_table_name RENAME TO [new_db_name.]new_table_name
示例
以下是使用 alter 語句更改表名的示例。這裡我們將表 customers 的名稱更改為 users。
[quickstart.cloudera:21000] > ALTER TABLE my_db.customers RENAME TO my_db.users;
執行上述查詢後,Impala 會根據需要更改表名,並顯示以下訊息。
Query: alter TABLE my_db.customers RENAME TO my_db.users
您可以使用 show tables 語句驗證當前資料庫中的表列表。您可以找到名為 users 的表,而不是 customers。
Query: show tables +----------+ | name | +----------+ | employee | | student | | student1 | | users | +----------+ Fetched 4 row(s) in 0.10s
向表中新增列
語法
ALTER TABLE 向現有表新增列的基本語法如下:
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])
示例
以下查詢是一個演示如何向現有表新增列的示例。這裡我們在 users 表中添加了兩個列 account_no 和 phone_number(兩者都是 bigint 資料型別)。
[quickstart.cloudera:21000] > ALTER TABLE users ADD COLUMNS (account_no BIGINT, phone_no BIGINT);
執行上述查詢後,它將向名為 student 的表新增指定的列,並顯示以下訊息。
Query: alter TABLE users ADD COLUMNS (account_no BIGINT, phone_no BIGINT)
如果您驗證 users 表的架構,您可以在其中找到新新增的列,如下所示。
quickstart.cloudera:21000] > describe users; Query: describe users +------------+--------+---------+ | name | type | comment | +------------+--------+---------+ | id | int | | | name | string | | | age | int | | | address | string | | | salary | bigint | | | account_no | bigint | | | phone_no | bigint | | +------------+--------+---------+ Fetched 7 row(s) in 0.20s
從表中刪除列
語法
ALTER TABLE 在現有表中刪除列的基本語法如下:
ALTER TABLE name DROP [COLUMN] column_name
示例
以下查詢是刪除現有表中列的示例。這裡我們刪除名為 account_no 的列。
[quickstart.cloudera:21000] > ALTER TABLE users DROP account_no;
執行上述查詢後,Impala 會刪除名為 account_no 的列,並顯示以下訊息。
Query: alter TABLE users DROP account_no
如果您驗證 users 表的架構,您將找不到名為 account_no 的列,因為它已被刪除。
[quickstart.cloudera:21000] > describe users; Query: describe users +----------+--------+---------+ | name | type | comment | +----------+--------+---------+ | id | int | | | name | string | | | age | int | | | address | string | | | salary | bigint | | | phone_no | bigint | | +----------+--------+---------+ Fetched 6 row(s) in 0.11s
更改列的名稱和型別
語法
ALTER TABLE 更改現有表中列的名稱和資料型別的基本語法如下:
ALTER TABLE name CHANGE column_name new_name new_type
示例
以下是使用 alter 語句更改列的名稱和資料型別的示例。這裡我們將列 phone_no 的名稱更改為 email,其資料型別更改為 string。
[quickstart.cloudera:21000] > ALTER TABLE users CHANGE phone_no e_mail string;
執行上述查詢後,Impala 會進行指定的更改,並顯示以下訊息。
Query: alter TABLE users CHANGE phone_no e_mail string
您可以使用 describe 語句驗證 users 表的元資料。您可以觀察到 Impala 已對指定的列進行了所需的更改。
[quickstart.cloudera:21000] > describe users; Query: describe users +----------+--------+---------+ | name | type | comment | +----------+--------+---------+ | id | int | | | name | string | | | age | int | | | address | string | | | salary | bigint | | | phone_no | bigint | | +----------+--------+---------+ Fetched 6 row(s) in 0.11s
使用 Hue 修改表
開啟 Impala 查詢編輯器,在其中鍵入 alter 語句,然後單擊執行按鈕,如下面的螢幕截圖所示。

執行上述查詢後,它將把表 customers 的名稱更改為 users。同樣,我們可以執行所有 alter 查詢。