日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【MaxCompute】学习笔记操作表sql

發布時間:2025/5/22 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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 '表備注';

備注:

  • 表名與列名均對大小寫不敏感。
  • 在創建表時,如果不指定 IF NOT EXISTS 選項而表名已存在,則返回出錯。
  • PARTITIONED BY 指定表的分區字段,如前所述,當利用 partition 字段對表進行分區時,新增分區、更新分區內數據和讀取分區數據均不需要做全表掃描,可以提高處理效率。
  • 表名,列名中不能有特殊字符,只能用英文的 a-z,A-Z 及數字和下劃線_,且以字母開頭,名稱的長度不超過 128 字節。
  • 分區名稱不可以有雙字節字符(如中文),必須是以英文字母 a-z,A-Z 開始后可跟字母數字,名稱的長度不超過 128 字節。 如果名稱中出現了\t, \n 等特殊字符會導致分區中的數據無法讀出,允許的字符包括:空格” “,冒號”:”, 下劃線”_”, 美元符”$”, 井號”#”, 點”.”, 感嘆號”!”和@
  • 注釋內容是長度不超過 1024 字節的有效字符串。
  • 在下面的例子中,創建表 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 '銷售區域');
  • 目前分區鍵只能用 STRING 類型。
  • 也可以通過 CREATE TABLE … AS SELECT …語句創建表,并在建表的同時將數據復制到新表中,
    如:

    create table shop_backup as select * from shop;

    如果只想復制已有表結構,而不復制任何數據,可以用 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]

    注:

  • 創建視圖時,必須有對基礎表的讀權限。
  • 視圖只能包含一個有效的 SELECT 語句。
  • 視圖可以引用其它視圖,但不能引用自己,也不能循環引用。
  • 視圖不可以寫。
  • 當視圖建好以后,如果視圖的基礎表發生了變更,有可能導致視圖無法訪問,如基礎表被刪除。
  • 在 VIEW 已經存在時用 CREATE VIEW 會導致異常,這種情況可以用 CREATE OR REPLACE VIEW 來重建 VIEW,重建后 VIEW 本身的權限保持不變。
  • 刪除表

    命令格式:

    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]

    備注:

  • ODPS SQL 僅僅允許修改列名和列注釋,不允許修改列數據類型、列位置,也不允許刪除已有列。
  • 實例:

    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 COMMENTcomment;

    查看表的信息

    查看當前數據庫中的所有表,默認顯示當前 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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。