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

CREATE TABLE

本文介紹創建時空數據表的語法。

語法

create_table_statement ::=  CREATE TABLE [ IF NOT EXISTS ] table_name
                            '('
                                column_definition
                                ( ',' column_definition )*
                                 ',' [constraint pk]  PRIMARY KEY '(' primary_key ')' 
                            ')' WITH [ table_options ]
column_definition      ::=  column_name lql_type 
primary_key            ::=  primary_item [ ',' primary_item ]
primary_item           ::=  column_name (ASC|DESC)
                            | [z-order] '(' [ column_name ( ',' column_name )* ] ')'
說明

創建表語句支持IF NOT EXISTS,其中主鍵由某個或某幾個列組合而成。

使用說明

表名(table_identifier)

關于表名的設置,您需要注意以下內容:

  • 可包含數字、大寫英文字符、小寫英文字符、半角句號(.)、中劃線(-)和下劃線(_)。

  • 表名不能以半角句號(.)或中劃線(-)開頭。

  • 表名的長度為1~255字符。

列定義(column_definition

語法要素

是否必填

使用說明

列名(column_identifier)

  • 可包含數字、大寫英文字符、小寫英文字符、半角句號(.)、中劃線(-)和下劃線(_)。

  • 不允許使用系統保留關鍵字作為列名。

  • 長度不能超過255字節。

數據類型(data_type)

支持的數據類型,請參見數據類型

重要

創建時序表時,如果需要使用時間戳(TIMESTAMP)數據類型,請注意以下幾點:

  • 只能指定一列為TIMESTAMP類型。

  • 時序引擎對于時間戳的編碼和解析,統一按照北京時間(GMT+8)來進行。

  • 在一些較舊的系統中,其Unix時間戳仍然是按照32位進行處理。這類時間戳寫入Lindorm時序引擎前建議乘以1000。如果不加轉換地將這些時間戳直接寫入時序引擎,將會引起語義解釋上的偏差。例如,時間戳為1641009600,在較舊系統中會被解釋為2022-01-01 12:00:00,但在Lindorm時序引擎中則會被解釋為1970-01-20 07:50:09(GMT+8) 

NULL約束

列的值是否允許為NULL。

重要

目前Lindorm SQL不會進行NULL約束的校驗,該校驗工作是由存儲引擎執行的。

NULL約束的校驗方式取決于存儲引擎的校驗規則,不同存儲引擎的校驗規則不同,因此在使用過程中可能會出現已指定NOT NULL但仍可寫入NULL的情況。

為保證數據能夠正常寫入,請遵循以下統一要求:

  • 主鍵列不允許為空,即在建表時,主鍵列必須指定NOT NULL。

  • 對于非主鍵列,不建議在非主鍵列的定義中指定NOT NULL。

主鍵(primary_key)

重要

Lindorm單機版實例不支持PRIMARY KEY。

主鍵是表中數據的唯一標識,由一列或多列組成,建表時必須指定主鍵PRIMARY KEY。

在使用CREATE TABLE語句建表時,需要注意以下內容:

引擎類型

主鍵使用說明

寬表引擎

  • 單個主鍵列的最大長度為2 KB。

  • 所有主鍵列的長度之和不能超過30 KB。

  • 單個非主鍵列的最大長度不能超過2 MB。

時序引擎

  • 時序表的主鍵列中數據類型為VARCHAR的列又被稱作標簽(TAG)列,數據類型為TIMESTAMP的列又被稱為時間戳列

  • 主鍵列的數據類型必須是VARCHAR或TIMESTAMP類型。

  • 主鍵列可以包含一個或多個VARCHAR類型的列,但只能包含一個TIMESTAMP類型的列。

  • 在時序表中建議選擇數據源的唯一標識作為PRIMARY KEY,例如物聯網場景中的設備ID,車聯網場景中的車輛唯一標識,監控場景中的應用ID或ip:port等。更多內容,請參見PRIMARY KEY設計的最佳實踐

分區(partition_definition

時序引擎支持分區。在時序表中,用作PARTITION BY的列必須是主鍵定義中的VARCHAR列

建表時,您可以通過PARTITION BY HASH(column1, column2, ..., columnN)語句,顯示指定一個或多個列為表進行Hash分區。例如:PARTITION BY HASH(c1, p1)

表屬性(table_options)

寬表引擎支持表屬性(table_options)。您可以通過WITH關鍵字添加以下表屬性:

選項

類型

描述

COMPRESSION

STRING

表的壓縮算法。可選的壓縮算法分別是:

  • SNAPPY

  • ZSTD

  • LZ4

說明

寬表引擎2.3.4版本前默認未指定壓縮算法,寬表引擎2.3.4及以后的版本默認壓縮算法為ZSTD。

TTL

INT

數據有效期,單位為秒(s)。

說明
  • 默認TTL選項為空,即數據不會過期。

  • 您可以通過在建表語句中添加TTL=<指定時間>為表設置數據有效期,也可以通過將TTL修改為空字符串來取消數據有效期。具體用法可參見示例

COMPACTION_MAJOR_PERIOD

LONG

系統執行major compaction的周期 ,單位為毫秒(ms)。具體用法可參見指定Major Compaction周期

說明

默認值:Math.Min(TTL,1728000000ms)。如果不設置TTL,系統默認該參數值為20天(20*24*60*60*1000ms=1728000000ms)。

MUTABILITY

STRING

索引相關,表示對主表的寫入模式進行分類。默認值為MUTABLE_LATEST。

所有取值如下:

  • IMMUTABLE

  • IMMUTABLE_ROWS

  • MUTABLE_LATEST

  • MUTABLE_ALL

取值的詳細說明,請參見高性能原生二級索引

重要

創建索引表后,MUTABILITY參數的值不支持修改。

CONSISTENCY

STRING

表的一致性屬性。對于多可用區實例,該參數表示主備數據的一致性。包括以下兩種級別:

  • eventual:最終一致,默認值。

  • strong:強一致。

重要

對于多可用區實例,如果數據存在先讀后寫,例如increase、append、索引更新,則需要指定主表CONSISTENCY參數的值為strong,保證主備數據一致。

NUMREGIONS

INT

預先設置建表時的Region數。

CHS

INT

冷熱分界線,單位為秒。

說明
  • 設置冷熱分界線需要開通冷存儲功能,功能介紹和開通方式參考冷熱分離介紹

  • 設置冷熱分界線選項時,必須同時設置CHS_L2='storagetype=COLD'

STARTKEY和ENDKEY

與PRIMARY KEY中第一個列的數據類型相同

預先設置建表的Region分區起止Key。

說明
  • 如果指定STARTKEY和ENDKEY,必須與NUMREGIONS同時指定。如果在未指定NUMREGIONS的情況下指定STARTKEY和ENDKEY將不會產生實際效果。

  • STARTKEY和ENDKEY中指定的字符串常量值將會隱式轉換為PRIMARY KEY中的第一個列的類型用作分區的起止Key,且當前僅支持對以下類型指定STARTKEY和ENDKEY。

    • SMALLINT

    • INTEGER

    • BIGINT

    • CHAR

    • VARCHAR

    • FLOAT

    • DOUBLE

SPLITKEYS

與PRIMARY KEY中第一個列的數據類型相同

預先設置表的全部預分區的起始Key。

說明
  • SPLITKEYS從寬表引擎2.5.4版本開始支持。

  • 指定字符串形式的SPLITKEYS值中通過半角逗號(,)區分各個預分區的起始Key。置于成對雙引號中的逗號將會被視作普通字符。

  • SPLITKEYS無法與NUMREGIONS、STARTKEY以及ENDKEY一同使用。

  • 與STARTKEY和ENDKEY一樣,指定的字符串常量值將會隱式轉換為PRIMARY KEY中的第一個列的類型用作分區的起始Key。僅支持以下數據類型。

    • SMALLINT

    • INTEGER

    • BIGINT

    • CHAR

    • VARCHAR

    • FLOAT

    • DOUBLE

SPLITALGO

STRING

定義預分區的分裂算法。目前僅支持以下分裂算法:

  • HexStringSplit:使用十六進制格式的字節對主鍵進行切分。

  • UniformSplit:使用原始的Byte值進行平均切分。

DYNAMIC_COLUMNS

STRING

是否開啟動態列。取值:

  • True:是。

  • False:否,默認值。

說明

動態列僅支持Varbinary類型。關于動態列的介紹,請參見動態列

VERSIONS

STRING

列值保留的版本數。取值為大于等于1的整數。默認值為1,表示保留一個版本。Lindorm支持列值保留多個版本,多版本管理的詳細說明,請參見多版本數據管理

重要

VERSIONS參數的值過大可能會影響數據的查詢和存儲性能,請盡量避免設置過大的值。建議將VERSIONS的值設置1。

BLOB_BUCKET_NAME

STRING

為包含BLOB列的表創建BUCKET。取值為自定義的BUCKET名稱。

BUCKET名稱需遵循以下規則:

  • 只能包含小寫字母、數字、半角句號(.)、中劃線(-)。

  • 長度為3~63個字符。

  • 禁止以中劃線(-)作為BUCKET名稱的開頭或結尾。

  • 名稱中不允許包含連續的半角句號(.)。

說明
  • BLOB_BUCKET_NAME從寬表2.6.4版本開始支持。

  • 如果建表時未設置BLOB列,但設置了BLOB_BUCKET_NAME屬性,則系統不會觸發BUCKET名稱檢查。

說明

2.2.16版本前的寬表引擎在設置表屬性時不支持WITH關鍵字,需在表屬性關鍵字前后添加半角單引號('),屬性值可以基于類型進行設置。如果屬性值的類型是字符串(STRING)則需在字符串前后添加半角單引號('),例如CREATE TABLE IF NOT EXISTS t1(c1 varchar, c2 bigint, c3 int, c4 int, PRIMARY KEY(c1,c2)) 'CONSISTENCY'='strong';

示例

  • 創建支持任意空間數據類型(Geometry)的表,可以寫入任意空間數據類型。

    CREATE TABLE geoms(gid INT, g GEOMETRY, PRIMARY KEY(gid));

    寫入任意空間數據類型的數據。

    UPSERT INTO geoms(gid, g) VALUES(0,ST_GeomFromText('POINT(-10.1 3.3)')),(1,ST_GeomFromText('LINESTRING(-12.2 4.3, -10.2 4.3)')),(2,ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))'));
  • 創建支持點類型(Point)的表,僅支持寫入點數據。

    CREATE TABLE pts(gid INT, g GEOMETRY(POINT), PRIMARY KEY(gid));

    寫入點數據。

    UPSERT INTO pts(gid, g) VALUES(0, ST_MakePoint(0,0)),(1, ST_MakePoint(1,1));
  • 創建支持面類型(Polygon)的表,僅支持寫入面數據。

    CREATE TABLE polys(gid INT, g GEOMETRY(POLYGON), PRIMARY KEY(gid));

    寫入面數據。

    UPSERT INTO polys(gid,g) VALUES(0,ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))'));
  • 創建支持線類型(LineString)的表,僅支持寫入線數據。

    CREATE TABLE lines(gid INT, g GEOMETRY(LINESTRING), PRIMARY KEY(gid));

    寫入線數據。

    UPSERT INTO lines(gid,g) VALUES(0, ST_GeomFromText('LINESTRING(-12.2 4.3, -10.2 4.3)'));
  • 創建支持多點(MULTIPOINT)類型的表,僅支持寫入多點數據。

    CREATE TABLE multipoints(gid INT, g GEOMETRY(MULTIPOINT), PRIMARY KEY(gid));

    寫入多點數據。

    UPSERT INTO multipoints(gid,g) VALUES(0, ST_GeomFromText('MULTIPOINT (10 40, 40 30, 20 20, 30 10)'));
  • 創建支持多線段(MULTILINESTRING)類型的表,僅支持寫入多線段數據。

    CREATE TABLE multilines(gid INT, g GEOMETRY(MULTILINESTRING), PRIMARY KEY(gid));

    寫入多線段數據。

    UPSERT INTO multilines(gid,g) VALUES(0, ST_GeomFromText('MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))'));
  • 創建支持多面(MULTIPOLYGON)類型的表,僅支持寫入多面數據。

    CREATE TABLE multipolys(gid INT, g GEOMETRY(MULTIPOLYGON), PRIMARY KEY(gid));

    寫入多面數據。

    UPSERT INTO multipolys(gid,g) VALUES(0, ST_GeomFromText('MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))'));
  • 創建支持多空間對象(GEOMETRYCOLLECTION)類型的表,僅支持寫入多空間對象數據。

    CREATE TABLE collections(gid INT, g GEOMETRY(GEOMETRYCOLLECTION), PRIMARY KEY(gid));

    寫入多空間對象數據。

    UPSERT INTO collections(gid,g) VALUES(0, ST_GeomFromText('GEOMETRYCOLLECTION (POINT (40 10), LINESTRING (10 10, 20 20, 10 40), POLYGON ((40 40, 20 45, 45 30, 40 40)))'));
  • 創建由多個空間數據類型(Geometry)的列組成的表。

    CREATE TABLE mix(gid INT, pt GEOMETRY(POINT), ply GEOMETRY(POLYGON), PRIMARY KEY(gid));