【MaxCompute】学习笔记操作表sql
創建表
命令格式:
# 建表 CREATE TABLE [IF NOT EXISTS] table_name[(col_name data_type [COMMENT col_comment], ...)][COMMENT table_comment][PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)][AS select_statement] # 復制表CREATE TABLE [IF NOT EXISTS] table_nameLIKE existing_table_name實例:創建表 shop 用于存儲所有的店鋪信息:
create table shop( shop_name string comment '店鋪名', shop_location string comment ' 商店地址', revenue double comment '多少錢' )comment '表備注';備注:
在下面的例子中,創建表 sale_detail 保存銷售記錄,該表使用銷售時間(sale_date)和銷售區域(region)作為分區列:
create table sale_detail( shop_name string comment '店鋪名',, customer_id string comment '顧客ID',, total_price double comment '總價',) partitioned by (sale_date string comment '銷售時間',region string comment '銷售區域');也可以通過 CREATE TABLE … AS SELECT …語句創建表,并在建表的同時將數據復制到新表中,
如:
如果只想復制已有表結構,而不復制任何數據,可以用 CREATE LIKE,用這種方式創建的新表會復制表的結構,列注釋,表注釋以及定義在表上的統計項。
create table shop_tmp like shop;注意:
正常情況下,規定建的分區層次不超過 5 級
創建視圖
命令格式:
CREATE [OR REPLACE] VIEW [IF NOT EXISTS] view_name[(col_name [COMMENT col_comment], ...)][COMMENT view_comment][AS select_statement]注:
刪除表
命令格式:
DROP TABLE [IF EXISTS] table_name;實例:
DROP TABLE shop;注:
if exists:可選。如果不指定if exists且表不存在,則返回異常。如果指定if exists,無論表是否存在,均返回成功。
刪除視圖
命令格式:
DROP VIEW [IF EXISTS] view_name;重命名表
命令格式:
ALTER TABLE table_name RENAME TO new_table_name;Rename 操作僅修改表的名字,不改動表中的數據。:
ALTER TABLE shop RENAME to store;重命名視圖
命令格式:
ALTER VIEW view_name RENAME TO new_view_name;添加分區
命令格式:
ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec partition_spec:: (partition_col = partition_col_value, partition_col = partiton_col_value, ...)注意:
如果未指定 IF NOT EXISTS 而同名的分區已存在,則出錯返回。
如為 sale_detail 表添加一個新的分區,用來存儲 2011 年 10 月 10 日杭州地區的銷售記錄:
ALTER TABLE sale_detail ADD IF NOT EXISTS PARTITION (sale_date= '20111010', region=' hangzhou');刪除分區
命令格式:
ALTER TABLE table_name DROP [IF EXISTS] partition_spec’;如從表 sale_detail 中刪除一個分區,該分區存儲的是 2011 年 10 月 10 日杭州地區的銷售記錄。這個操作不必掃描全表判斷銷售日期和銷售區域。
ALTER TABLE sale_detail DROP PARTITION(sale_date=‘20111010’,region=‘hangzhou’);修改列名和列注釋
ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment]備注:
實例:
ALTER TABLE shop CHANGE shop_location shop_city STRING COMMENT ' in which city the shop';修改表的注釋
ALTER TABLE table_name SET COMMENT ‘tbl comment’添加列
ALTER TABLE table_name ADD COLUMNS (col_name1 type1, col_name2 type2…)修改列名
ALTER TABLE table_name CHANGE COLUMN old_col_name RENAME TO new_col_name;修改列、分區注釋
ALTER TABLE table_name CHANGE COLUMN col_name COMMENT ‘comment’;查看表的信息
查看當前數據庫中的所有表,默認顯示當前 project 中的表。如果指定了 IN project 選項,則顯示的是在該 project 中的表
SHOW TABLES [IN project_name];查看一張表的所有 partition
SHOW PARTITIONS table_name;查看表結構信息
DESCRIBE|DESC table_name [partition_name];該命令可以查看表或是表的 partition 的信息,并且可以返回表的大小、表的創建者、表的創建時間、表的上次 meta 修改時間、上次數據修改時間,輸出的格式如:
desc xdj_pt partition (pt=2011); +-------------------------------------------------------+ | PartitionSize: 184 | +-------------------------------------------------------+ | CreateTime: 2012-08-04 13:14:13_________| | LastDDLTime: 2012-08-04 13:27:27_________| | LastModifiedTime: 2012-08-04 13:27:27_________|查看 SQL 語句的執行計劃
可以用 explain 功能查看 SQL 語句的執行計劃,語法是:
explain sql_statement;如:
explain create table dual_a as select * from dual; job0 is root jobIn Job job0: root Tasks: M1_Stg1In Task M1_Stg1:Data source: odps_de_1.dualTS:SEL: dual.idFS: output: odps_de_1.dual_a注:
DDL 建表語句不支持 explain 功能。
總結
以上是生活随笔為你收集整理的【MaxCompute】学习笔记操作表sql的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【MaxCompute】学习笔记基础说明
- 下一篇: 【MaxCompute】学习笔记常用查询