日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

數(shù)據(jù)表管理

更新時(shí)間:

AnalyticDB PostgreSQL版數(shù)據(jù)庫(kù)中的表與其它關(guān)系型數(shù)據(jù)庫(kù)中的表類(lèi)似,不同的是表中的行被分布在不同Segment上,表的分布策略決定了在不同Segment上面的分布情況。

創(chuàng)建普通表

CREATE TABLE命令用于創(chuàng)建一個(gè)表,創(chuàng)建表時(shí)可以定義以下內(nèi)容:

使用CREATE TABLE命令創(chuàng)建表,格式如下:

CREATE TABLE table_name ( 
[ { column_name data_type [ DEFAULT default_expr ]   -- 表的列定義
   [column_constraint [ ... ]                        -- 列的約束定義
] 
   | table_constraint                                -- 表級(jí)別的約束定義                            
   ])
   [ WITH ( storage_parameter=value [, ... ] )       -- 表存儲(chǔ)格式定義
   [ DISTRIBUTED BY (column, [ ... ] ) | DISTRIBUTED RANDOMLY ]  -- 表的分布鍵定義          
   [ partition clause]                               -- 表的分區(qū)定義
                

示例:

以下示例中的建表語(yǔ)句創(chuàng)建了一個(gè)表,使用trans_id作為分布鍵,并基于date設(shè)置了RANGE分區(qū)功能。

CREATE TABLE sales (
  trans_id int,
  date date, 
  amount decimal(9,2), 
  region text)
  DISTRIBUTED BY (trans_id)  
  PARTITION BY RANGE(date)    
  (start (date '2018-01-01') inclusive
   end (date '2019-01-01') exclusive every (interval '1 month'),
   default partition outlying_dates);

創(chuàng)建臨時(shí)表

臨時(shí)表(Temporary Table)會(huì)在會(huì)話結(jié)束時(shí)自動(dòng)刪除,或選擇性地在當(dāng)前事務(wù)結(jié)束的時(shí)候刪除,用于存儲(chǔ)臨時(shí)中間結(jié)果。創(chuàng)建臨時(shí)表的命令如下:

CREATE TEMPORARY TABLE table_name(…)
    [ON COMMIT {PRESERVE ROWS | DELETE ROWS | DROP}]
說(shuō)明

臨時(shí)表的行為在事務(wù)塊結(jié)束時(shí)的行為可以通過(guò)上述語(yǔ)句中的ON COMMIT來(lái)控制。

  • PRESERVE ROWS:在事務(wù)結(jié)束時(shí)候保留數(shù)據(jù),這是默認(rèn)的行為。

  • DELETE ROWS:在每個(gè)事務(wù)塊結(jié)束時(shí),臨時(shí)表的所有行都將被刪除。

  • DROP:在當(dāng)前事務(wù)結(jié)束時(shí),會(huì)刪除臨時(shí)表。

示例:

創(chuàng)建一個(gè)臨時(shí)表,事務(wù)結(jié)束時(shí)候刪除該臨時(shí)表。

CREATE TEMPORARY TABLE temp_foo (a int, b text) ON COMMIT DROP;

表約束的定義

您可以在列和表上定義約束來(lái)限制表中的數(shù)據(jù),但是有以下一些限制:

  • CHECK約束引用的列只能在其所在的表中。

  • UNIQUE和PRIMARY KEY約束必須包含分布鍵列,UNIQUE和PRIMARY KEY約束不支持追加優(yōu)化表和列存表。

  • 允許FOREIGN KEY 約束,但實(shí)際上并不會(huì)做外鍵約束檢查。

  • 分區(qū)表上的約束必須應(yīng)用到所有的分區(qū)表上,不能只應(yīng)用于部分分區(qū)表。

約束命令格式如下:

UNIQUE ( column_name [, ... ] )
   | PRIMARY KEY ( column_name [, ... ] ) 
   | CHECK ( expression )
   | FOREIGN KEY ( column_name [, ... ] )
            REFERENCES table_name [ ( column_name [, ... ] ) ]
            [ key_match_type ]
            [ key_action ]
            [ key_checking_mode ]

檢查約束(Check Constraints)

檢查約束(Check Constraints)指定列中的值必須滿(mǎn)足一個(gè)布爾表達(dá)式,例如:

CREATE TABLE products
            ( product_no integer,
              name text,
              price numeric CHECK (price > 0) );

非空約束(Not-Null Constraints)

非空約束(Not-Null Constraints)指定列不能有空值,例如:

CREATE TABLE products
       ( product_no integer NOT NULL,
         name text NOT NULL,
         price numeric );

唯一約束(Unique Constraints)

唯一約束(Unique Constraints)確保一列或者一組列中包含的數(shù)據(jù)對(duì)于表中所有的行都是唯一的。包含唯一約束的表必須是哈希分布,并且約束列需要包含分布鍵列,例如:

CREATE TABLE products
       ( product_no integer UNIQUE,
         name text,
         price numeric)
      DISTRIBUTED BY (product_no);

主鍵約束(Primary Keys Constraints)

主鍵約束(Primary Keys Constraints)是一個(gè)UNIQUE約束和一個(gè) NOT NULL約束的組合。包含主鍵約束的表必須是哈希分布,并且約束列需要包含分布鍵列。如果一個(gè)表具有主鍵,這個(gè)列(或者這一組列)會(huì)被默認(rèn)選中為該表的分布鍵,例如:

CREATE TABLE products
       ( product_no integer PRIMARY KEY,
         name text,
         price numeric)
      DISTRIBUTED BY (product_no);

更多信息

更多信息,請(qǐng)參見(jiàn)Greenplum官網(wǎng)文檔