- 表具体说明
- Impala - 创建表语句
- Impala - 插入语句
- Impala - 选择语句
- Impala - 描述语句
- Impala - 更改表
- Impala - 删除一个表
- Impala - 截断表
- Impala - 显示表
- Impala - 创建视图
- Impala - 改变视图
- Impala - 放下视图
- Impala - 条款
- Impala - 按条款排序
- Impala - Group By 子句
- Impala - 拥有子句
- Impala - 限制条款
- Impala - 抵消条款
- Impala - 联合条款
- Impala - 带子句
- 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中的表列表,您可以在其中找到客户表,如下所示。
[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
您可以使用showtables语句验证当前数据库中的表列表。您可以找到名为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 到现有表中DROP COLUMN的基本语法如下 -
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] > 描述用户; 查询:描述用户 +----------+--------+---------+ | 名称 | 类型 | 评论 | +----------+--------+---------+ | 编号 | 整数 | | | 名称 | 字符串| | | 年龄 | 整数 | | | 地址 | 字符串| | | 薪资| 大整数 | | | 电话号码 | 大整数 | | +----------+--------+---------+ 在 0.11 秒内获取 6 行
更改列的名称和类型
句法
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。以同样的方式,我们可以执行所有的更改查询。