CESA-2023-033《區(qū)塊鏈和分布式記賬技術(shù) 面向智能合約的數(shù)據(jù)處理語言技術(shù)要求》_第1頁
CESA-2023-033《區(qū)塊鏈和分布式記賬技術(shù) 面向智能合約的數(shù)據(jù)處理語言技術(shù)要求》_第2頁
CESA-2023-033《區(qū)塊鏈和分布式記賬技術(shù) 面向智能合約的數(shù)據(jù)處理語言技術(shù)要求》_第3頁
CESA-2023-033《區(qū)塊鏈和分布式記賬技術(shù) 面向智能合約的數(shù)據(jù)處理語言技術(shù)要求》_第4頁
CESA-2023-033《區(qū)塊鏈和分布式記賬技術(shù) 面向智能合約的數(shù)據(jù)處理語言技術(shù)要求》_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

ICS35.240

CCSL70

團(tuán)體標(biāo)準(zhǔn)

T/CESAXXXX—202X

區(qū)塊鏈和分布式記賬技術(shù)面向智能合約的

數(shù)據(jù)處理語言技術(shù)要求

Blockchainanddistributedledgertechnology——Technicalrequirementsofdata

processinglanguageforsmartcontract

(征求意見稿)

在提交反饋意見時(shí),請(qǐng)將您知道的相關(guān)專利連同支持性文件一并附上。

已授權(quán)的專利證明材料為專利證書復(fù)印件或扉頁,已公開但尚未授權(quán)的專利申請(qǐng)

證明材料為專利公開通知書復(fù)印件或扉頁,未公開的專利申請(qǐng)的證明材料為專利申請(qǐng)

號(hào)和申請(qǐng)日期。

202X-XX-XX發(fā)布202X-XX-XX實(shí)施

中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會(huì)發(fā)布

T/CESAXXXX—202X

區(qū)塊鏈和分布式記賬技術(shù)面向智能合約的數(shù)據(jù)處理語言技術(shù)要求

1范圍

本文件給出了面向區(qū)塊鏈智能合約數(shù)據(jù)處理的統(tǒng)一底層數(shù)據(jù)模型和數(shù)據(jù)處理語言要求。

本文件適用于指導(dǎo)區(qū)塊鏈平臺(tái)開發(fā)者在區(qū)塊鏈平臺(tái)上進(jìn)行面向智能合約的便捷開發(fā)。

2規(guī)范性引用文件

本文件沒有規(guī)范性引用文件。

3術(shù)語和定義

下列術(shù)語和定義適用于本文件。

3.1

世界狀態(tài)worldstate

用以描述在某一個(gè)時(shí)間點(diǎn)上,區(qū)塊鏈系統(tǒng)內(nèi)所有賬戶相關(guān)信息的完整視圖。

注:“相關(guān)信息”包括賬戶活躍狀態(tài)、賬戶持有人、賬戶余額等。

3.2

當(dāng)前世界狀態(tài)currentworldstate

當(dāng)前時(shí)刻(區(qū)塊鏈最新塊高)的世界狀態(tài)。

3.3

歷史世界狀態(tài)historicalworldstate

世界狀態(tài)的所有歷史版本。

注:同一個(gè)狀態(tài)數(shù)據(jù)會(huì)有多個(gè)版本,按照塊高順序組織。

3.4

數(shù)據(jù)表datatable

保存區(qū)塊鏈數(shù)據(jù)的網(wǎng)格虛擬表。

3.5

系統(tǒng)表systemtable

區(qū)塊鏈系統(tǒng)中原始的、不可更改的,用于保存區(qū)塊數(shù)據(jù)的虛擬表。

3.6

業(yè)務(wù)表businesstable

1

T/CESAXXXX—202X

區(qū)塊鏈系統(tǒng)中,與業(yè)務(wù)相關(guān)的、可通過智能合約進(jìn)行讀寫操作的,用于保存區(qū)塊數(shù)據(jù)的虛擬表。

4縮略語

下列縮略語適用于本文件。

BNF巴科斯范式(Backus-NaurForm)

DDL數(shù)據(jù)定義語言(DataDefinitionLanguage)

DLT分布式記賬技術(shù)(DistributedLedgerTechnology)

DML數(shù)據(jù)操作語言(DataManipulationLanguage)

5總體架構(gòu)

面向智能合約的數(shù)據(jù)處理過程包括,對(duì)區(qū)塊鏈系統(tǒng)數(shù)據(jù)重新規(guī)范整理形成數(shù)據(jù)表,建立統(tǒng)一的數(shù)據(jù)

模型,并根據(jù)統(tǒng)一的數(shù)據(jù)模型定義數(shù)據(jù)處理語言。其中,數(shù)據(jù)處理語言包括數(shù)據(jù)定義語言和數(shù)據(jù)操作語

言??傮w架構(gòu)參見圖1。

數(shù)據(jù)模型包括:

a)區(qū)塊數(shù)據(jù),按照不同數(shù)據(jù)類型分別整理為區(qū)塊表,交易表和回執(zhí)表;

b)狀態(tài)數(shù)據(jù),包括當(dāng)前世界狀態(tài)和歷史世界狀態(tài)。

注1:區(qū)塊表、交易表、回執(zhí)表均為系統(tǒng)表,表屬性為只讀;

注2:當(dāng)前狀態(tài)數(shù)據(jù)和歷史狀態(tài)數(shù)據(jù)分別組織為多張業(yè)務(wù)表,表屬性為讀寫。

數(shù)據(jù)處理語言包括:

a)數(shù)據(jù)定義語言,包括新建數(shù)據(jù)表、更改數(shù)據(jù)表、刪除數(shù)據(jù)表和查詢數(shù)據(jù)表;

b)數(shù)據(jù)操作語言,包括插入數(shù)據(jù)、更新數(shù)據(jù)、刪除數(shù)據(jù)和查詢數(shù)據(jù)。

圖1總體架構(gòu)圖

6統(tǒng)一數(shù)據(jù)模型

2

T/CESAXXXX—202X

6.1概述

為向智能合約提供統(tǒng)一的訪問接口,區(qū)塊鏈平臺(tái)需提供統(tǒng)一的數(shù)據(jù)模型,并將區(qū)塊數(shù)據(jù)、狀態(tài)數(shù)據(jù)

通過統(tǒng)一的組織方式組織為統(tǒng)一模型的數(shù)據(jù),方便實(shí)現(xiàn)各種數(shù)據(jù)之間的交互。不同類型的區(qū)塊鏈數(shù)據(jù)邏

輯關(guān)系見圖2。

圖2不同類型區(qū)塊鏈數(shù)據(jù)邏輯關(guān)系圖

6.2區(qū)塊數(shù)據(jù)

區(qū)塊數(shù)據(jù)按照不同維度,可分為區(qū)塊相關(guān)的數(shù)據(jù)、交易相關(guān)的數(shù)據(jù)和回執(zhí)相關(guān)的數(shù)據(jù)等。為構(gòu)建統(tǒng)

一的數(shù)據(jù)模型,區(qū)塊數(shù)據(jù)采用關(guān)系數(shù)據(jù)表的模型向智能合約展示,方便用戶跨表進(jìn)行靈活處理。

區(qū)塊相關(guān)的數(shù)據(jù)組織為一張獨(dú)立的數(shù)據(jù)表,用以描述區(qū)塊的元數(shù)據(jù),一個(gè)數(shù)據(jù)行代表一個(gè)特定塊高

的區(qū)塊。要求包括:

a)數(shù)據(jù)表為系統(tǒng)表,表模式由區(qū)塊鏈平臺(tái)定義,可命名為“Blocks”;

b)主關(guān)鍵字為塊高,類型為無符號(hào)的64位整數(shù),不應(yīng)為NULL;

c)其他字段描述該區(qū)塊的元信息,具體定義可根據(jù)區(qū)塊鏈平臺(tái)的具體設(shè)計(jì)而定。

交易相關(guān)的數(shù)據(jù)組織為一張獨(dú)立的數(shù)據(jù)表,用以描述交易的元數(shù)據(jù),一個(gè)數(shù)據(jù)行代表一個(gè)特定哈希

的交易。要求包括:

a)數(shù)據(jù)表為系統(tǒng)表,表模式由區(qū)塊鏈平臺(tái)定義,可命名為“Transactions”;

b)主關(guān)鍵字為交易哈希,類型為32字節(jié)的字符串,不應(yīng)為NULL;

c)其他字段描述該交易的元信息,具體定義可根據(jù)區(qū)塊鏈平臺(tái)的具體設(shè)計(jì)而定。

回執(zhí)相關(guān)的數(shù)據(jù)組織為一張獨(dú)立的數(shù)據(jù)表,用以描述交易回執(zhí)數(shù)據(jù),一個(gè)數(shù)據(jù)行代表一個(gè)特定哈希

的交易回執(zhí)。要求包括:

a)數(shù)據(jù)表為系統(tǒng)表,表模式由區(qū)塊鏈平臺(tái)定義,可命名為“Receipts”;

b)主關(guān)鍵字為交易哈希,類型為32字節(jié)的字符串,不應(yīng)為NULL;

c)其他字段描述該回執(zhí)的具體信息,具體定義可根據(jù)區(qū)塊鏈平臺(tái)的具體設(shè)計(jì)而定。

注:系統(tǒng)表是由區(qū)塊區(qū)塊鏈平臺(tái)定義并且寫入數(shù)據(jù)的,其模式及數(shù)據(jù)對(duì)于智能合約來說均為只讀,智能合約不能新

建或者修改系統(tǒng)表的模式,也不能對(duì)表里的數(shù)據(jù)進(jìn)行寫操作。

6.3世界狀態(tài)數(shù)據(jù)

3

T/CESAXXXX—202X

為構(gòu)建統(tǒng)一的數(shù)據(jù)模型,世界狀態(tài)數(shù)據(jù)應(yīng)采用關(guān)系數(shù)據(jù)表的模型向智能合約展示。關(guān)系數(shù)據(jù)表的模

型包括狀態(tài)數(shù)據(jù)原有的主關(guān)鍵字和歷史版本信息,以便區(qū)分同一條數(shù)據(jù)的不同版本。

當(dāng)前世界狀態(tài)組織為多張數(shù)據(jù)表,用以描述業(yè)務(wù)數(shù)據(jù)的最新版本。要求包括:

a)數(shù)據(jù)表為業(yè)務(wù)表,表模式由合約開發(fā)者通過DDL(見6.2)定義,宜為用戶定義的表名添加后

綴“C”,代表“Current”;

b)所有業(yè)務(wù)數(shù)據(jù)列由合約開發(fā)者定義,表示當(dāng)前塊高的業(yè)務(wù)數(shù)據(jù)。

注1:表模式可讀可寫,智能合約可對(duì)表模式進(jìn)行新建、更新、刪除、及查詢操作;

注2:表數(shù)據(jù)可讀可寫,智能合約可以對(duì)表數(shù)據(jù)進(jìn)行插入、更新、刪除、及查詢操作。

歷史世界狀態(tài)組織為多張數(shù)據(jù)表,用以描述業(yè)務(wù)數(shù)據(jù)的歷史版本。要求包括:

a)數(shù)據(jù)表為業(yè)務(wù)表,表模式由合約開發(fā)者通過DDL(見6.2)定義,宜為用戶定義的表名添加后

綴“H”,代表“Historical”。

b)所有業(yè)務(wù)數(shù)據(jù)列由合約開發(fā)者定義,表示特定歷史版本的業(yè)務(wù)數(shù)據(jù)。

c)每個(gè)表實(shí)例對(duì)應(yīng)一個(gè)具體的塊高,塊高信息由區(qū)塊鏈平臺(tái)從當(dāng)前交易的上下文信息當(dāng)中自動(dòng)提

取,智能合約無需指定。

注1:表模式只讀,智能合約只能對(duì)表模式進(jìn)行查詢操作;

注2:表數(shù)據(jù)只讀,智能合約只能對(duì)表數(shù)據(jù)進(jìn)行查詢操作。

7合約數(shù)據(jù)處理語言

7.1概述

面向區(qū)塊鏈智能合約,針對(duì)統(tǒng)一的數(shù)據(jù)模型,區(qū)塊鏈系統(tǒng)應(yīng)提供統(tǒng)一的數(shù)據(jù)處理語言,以便進(jìn)行區(qū)

塊鏈系統(tǒng)進(jìn)行快速、便捷的開發(fā)等操作。

本文件采用BNF范式對(duì)數(shù)據(jù)處理語言進(jìn)行定義。采用以下形式組織:

a)功能描述:對(duì)語句用途簡短描述;

b)語法格式:對(duì)語法的BNF范式定義;

c)語法規(guī)則:BNF范式無法表示的,但而該語句應(yīng)當(dāng)滿足的附加語法限制。

此外,本文件采用BNF范式作為語法表示,具有如下的擴(kuò)展:

a)方括號(hào)([])表示可選元素;

b)省略號(hào)(…)表示可重復(fù)一次或多次的元素;

c)花括號(hào)({})表示元素的組合序列。

本文件采用大寫和小寫字母來區(qū)分常量和變量。大寫字母表示字面量/常量,如CREATETABLE代表

“CREATETABLE”字符串本身。規(guī)則名/變量使用尖括號(hào)包小寫字母來表示,如<tabledefinition>代表

表定義的規(guī)則。逗號(hào),圓括號(hào)也是字面量,代表他們自己本身。

7.2數(shù)據(jù)定義語言

7.2.1概述

數(shù)據(jù)定義語言實(shí)現(xiàn)統(tǒng)一數(shù)據(jù)模型中新建數(shù)據(jù)表、更改數(shù)據(jù)表、刪除數(shù)據(jù)表和查詢數(shù)據(jù)表的操作。以

下內(nèi)容給出了新建數(shù)據(jù)表、更改數(shù)據(jù)表、刪除數(shù)據(jù)表和查詢數(shù)據(jù)表的語句功能描述、語法格式和語法規(guī)

則。

7.2.2新建數(shù)據(jù)表

7.2.2.1功能描述

4

T/CESAXXXX—202X

“新建數(shù)據(jù)表”語句用于定義數(shù)據(jù)表。該操作僅針對(duì)業(yè)務(wù)表,系統(tǒng)表由區(qū)塊鏈平臺(tái)創(chuàng)建,不可更改。

7.2.2.2語法格式

<tabledefinition>::=CREATETABLE<tablename><tableelementlist>

解釋:表定義<tabledefinition>,包含表名<tablename>以及表元素清單<tableelementlist>.

<tableelementlist>::=(<tableelement>[{,<tableelement>}…])

解釋:表元素清單<tableelementlist>,由一個(gè)或者多個(gè)表元素<tableelement>組成。

<tableelement>::=<columndefinition>|<tableconstraintdefinition>

解釋:表元素<tableelement>,可以是一個(gè)列定義<columndefinition>,或者是一個(gè)表約束定義

<tableconstraintdefinition>

<columndefinition>::=<columnname><datatype>[<defaultclause>][<columnconstraint

definition>…]

解釋:列定義<columndefinition>,應(yīng)包含列名<columnname>以及數(shù)據(jù)類型<defaultclause>,

選擇性包含缺省值子句<defaultclause>以及列約束定義<columnconstraintdefinition>,其中列約

束定義可以是一個(gè)或者多個(gè)。

<datatype>::=<characterstringtype>|<numerictype>

解釋:數(shù)據(jù)類型<datatype>表示當(dāng)前數(shù)據(jù)列的類型,可以是字符串類型<characterstringtype>,

或者是數(shù)值類型<numerictype>.

<defaultclause>::=DEFAULT{<literal>|NULL}

解釋:缺省值子句<defaultclause>用于定義當(dāng)前數(shù)據(jù)列的缺省值,該值可以是一個(gè)字面值

<literal>或者NULL.

<columnconstraintdefinition>::=NOTNULL|<uniquespecification>

解釋:列約束定義<columnconstraintdefinition>用于描述當(dāng)前數(shù)據(jù)列的相關(guān)限制條件,如非空

性,唯一性等。

<uniquespecification>::=UNIQUE|PRIMARYKEY

解釋:唯一性說明<uniquespecification>用于描述索引的唯一性,可能的取值為UNIQUE(唯一性

索引)或者PRIMARYKEY(主索引)。如果沒有指定,缺省為非唯一性索引。

<tableconstraintdefinition>::=[<constraintnamedefinition>][<unique

specification>](<columnnamelist>)

解釋:表約束定義<tableconstraintdefinition>用于描述當(dāng)前數(shù)據(jù)表的相關(guān)限制條件,本版本

僅包括索引的聲明。包含可選的約束名定義<constraintnamedefinition>,可選的唯一性說明<unique

specification>,以及列名清單<columnnamelist>。

<constraintnamedefinition>::=CONSTRAINT<constraintname>

5

T/CESAXXXX—202X

解釋:約束名定義<constraintnamedefinition>,由關(guān)鍵字CONSTRAINT以及約束名稱<constraint

name>組成。

<columnnamelist>::=<columnname>[{,<columnname>}…]

解釋:列名清單<columnnamelist>由一個(gè)或者多個(gè)列名<columnname>組成。

7.2.2.3語法規(guī)則

“新建數(shù)據(jù)表”語句的語法規(guī)則包括:

a)不同<tabledefinition>當(dāng)中的<tablename>互不相同;

b)<tabledefinition>應(yīng)至少包含一個(gè)<columndefinition>;

c)由<tabledefinition>定義的表的描述,包含<tablename>和由各個(gè)<columndefinition>指

明的各列的描述,第i個(gè)列描述由第i個(gè)<columnedefinition>給出;

d)在一個(gè)<tabledefinition>里面,不同<columndefinition>當(dāng)中的<columnname>互不相同;

e)由<columndefinition>定義的列的描述,包含<columnname>和由<datatype>指明的數(shù)據(jù)類

型。

7.2.3更改數(shù)據(jù)表

7.2.3.1功能描述

“更改數(shù)據(jù)表”語句用于修改一個(gè)數(shù)據(jù)表的定義。該操作僅針對(duì)業(yè)務(wù)表,系統(tǒng)表由區(qū)塊鏈平臺(tái)創(chuàng)建,

不允許智能合約更改。

7.2.3.2語法格式

<altertablestatement>::=ALTERTABLE<tablename><altertableactionlist>

解釋:表修改語句<altertablestatement>,需要指定表名<tablename>和表修改行為清單。

<altertableactionlist>::=<altertableaction>[{,<altertableaction>

}…]

解釋:表修改行為清單<altertableactionlist>,由一個(gè)或多個(gè)表修改行為<altertableaction>

組成。

<altertableaction>::=<addcolumndefinition>|<dropcolumndefinition>|<addtable

constraintdefinition>|<droptableconstraintdefinition>

解釋:表修改行為<altertableaction>,可能是增加列定義<addcolumndefinition>,刪除列

定義<dropcolumndefinition>,增加表約束定義<addtableconstraintdefinition>,或者刪除表

約束定義<droptableconstraintdefinition>.

<addcolumndefinition>::=ADDCOLUMN<columndefinition>

解釋:增加列定義<addcolumndefinition>,包含關(guān)鍵字ADDCOLUMN以及列定義<column

definition>本身,<columndefinition>的格式和規(guī)則見前面章節(jié)。

<dropcolumndefinition>::=DROPCOLUMN<columnname>

6

T/CESAXXXX—202X

解釋:刪除列定義<dropcolumndefinition>,包含關(guān)鍵字DROPCOLUMN以及列名<columnname>.

<addtableconstraintdefinition>::=ADD<tableconstraintdefinition>

解釋:增加表約束定義<addtableconstraintdefinition>,包含關(guān)鍵字ADD以及表約束定義<table

constraintdefinition>本身。<tableconstraintdefinition>的格式和規(guī)則見前面章節(jié)。

<droptableconstraintdefinition>::=DROP<constraintname>

解釋:刪除表約束定義<droptableconstraintdefinition>,包含關(guān)鍵字DROP以及表約名

<constraintname>.

7.2.3.3語法規(guī)則

“更改數(shù)據(jù)表”語句的語法規(guī)則包括:

a)令T為<tablename>所指定的數(shù)據(jù)表;

b)T應(yīng)是之前定義過的;

c)<columnname>所指定的數(shù)據(jù)列應(yīng)是T的一個(gè)列,但不能是唯一的列;

d)<constraintname>所指定的約束應(yīng)是T的一個(gè)約束。

7.2.4刪除數(shù)據(jù)表

7.2.4.1功能描述

“刪除數(shù)據(jù)表”語句用于刪除整個(gè)數(shù)據(jù)表。該操作僅針對(duì)業(yè)務(wù)表,系統(tǒng)表由區(qū)塊鏈平臺(tái)創(chuàng)建,不允

許智能合約刪除。

7.2.4.2語法格式

<droptablestatement>::=DROPTABLE<tablename>

解釋:表刪除語句<droptablestatement>,包含關(guān)鍵字”DROPTABLE”以及所要?jiǎng)h除的表名稱<table

name>.

7.4.2.3語法規(guī)則

“刪除數(shù)據(jù)表”語句的語法規(guī)則包括:

a)令T為<tablename>所指定的數(shù)據(jù)表;

b)T應(yīng)是之前定義過的。

7.2.5查詢數(shù)據(jù)表

7.2.5.1功能描述

“查詢數(shù)據(jù)表”語句用于列出所有數(shù)據(jù)表的名稱。該操作對(duì)業(yè)務(wù)表和系統(tǒng)表均有效。

7.2.5.2語法格式

<showtablesstatement>::=SHOWTABLES

解釋:表查詢語句<showtablesstatement>只包含關(guān)鍵字“SHOWTABLES”。

7

T/CESAXXXX—202X

7.3數(shù)據(jù)操作語言

7.3.1概述

數(shù)據(jù)操作語言能夠?qū)崿F(xiàn)統(tǒng)一數(shù)據(jù)模型中插入數(shù)據(jù)、更新數(shù)據(jù)、刪除數(shù)據(jù)、查詢數(shù)據(jù)操作。以下內(nèi)容

給出了插入數(shù)據(jù)、更新數(shù)據(jù)、刪除數(shù)據(jù)、查詢數(shù)據(jù)的語句功能描述、語法格式和語法規(guī)則。

7.3.2插入數(shù)據(jù)

7.3.2.1功能描述

“插入數(shù)據(jù)”語句用于在數(shù)據(jù)表中插入新的數(shù)據(jù)行集合。該操作僅針對(duì)業(yè)務(wù)表,系統(tǒng)表由區(qū)塊鏈平

臺(tái)填充數(shù)據(jù)。

7.3.2.2語法格式

<insertstatement>::=INSERTINTO<tablename><insertcolumnsandsource>

解釋:插入語句<insertstatement>,將特定的數(shù)據(jù)<insertcolumnsandsource>,插入到名為

<tablename>的數(shù)據(jù)表。

<insertcolumnsandsource>::=<fromconstructor>|<fromdefault>

解釋:插入數(shù)據(jù)源<insertcolumnsandsource>,可能來自于構(gòu)造器<fromconstructor>,或者

是缺省值<fromdefault>。

<fromconstructor>::=[(<insertcolumnlist>)]VALUES<rowvalueexpressionlist>

解釋:數(shù)據(jù)源構(gòu)造器<fromconstructor>,可以指定要插入的列<insertcolumnlist>,應(yīng)指定要

插入的數(shù)據(jù)清單。

<insertcolumnlist>::=<columnname>[{,<columnname>}…]

解釋:插入列的清單<insertcolumnlist>,由一個(gè)或者多個(gè)列名<columnname>組成,列名之間

使用逗號(hào)分隔。

<rowvalueexpressionlist>::=<rowvalueexpression>[{,<rowvalueexpression>}…]

解釋:行值表達(dá)式清單<rowvalueexpressionlist>,由一個(gè)或者多個(gè)行值表達(dá)式<rowvalue

expression>組成。

<rowvalueexpression>::=[ROW](<rowvalueelement>[{,<rowvalueelement>}…])

解釋:行值表達(dá)式<rowvalueexpression>,由一個(gè)或者多個(gè)行值元素<rowvalueelement>組成。

<rowvalueelement>::=<valueexpression>|NULL|DEFAULT

解釋:行值元素<rowvalueelement>,可能是一個(gè)值表達(dá)式,字符串“NULL”,或者字符串

“DEFAULT”.

<fromdefault>::=DEFAULTVALUES

解釋:缺省數(shù)據(jù)源<fromdefault>,由字符串“DEFAULTVALUES”表示。

8

T/CESAXXXX—202X

7.3.2.3語法規(guī)則

“插入數(shù)據(jù)”語句的語法規(guī)則包括:

a)令T表示<tablename>標(biāo)識(shí)的表,<insertcolumnlist>中的每一個(gè)<columnname>應(yīng)標(biāo)識(shí)T

的一個(gè)列,且同一個(gè)列不應(yīng)標(biāo)識(shí)多于一次。<insertcolumnlist>的省略代表一個(gè)隱式聲明,

該聲明包含T中所有列的升序序列;

b)對(duì)于任意一個(gè)<rowvalueexpression>,其中<rowvalueelement>的個(gè)數(shù)應(yīng)等于<insert

columnlist>中的<columnname>的個(gè)數(shù);

c)如果<rowvalueexpression>的第i項(xiàng)不是NULL或者DEFAULT,則其數(shù)據(jù)類型如下:

1)如果<insertcolumnlist>第i項(xiàng)所對(duì)應(yīng)的列的數(shù)據(jù)類型是長度為L的字符串,則對(duì)應(yīng)插

入值類型應(yīng)為長度小于或等于L的字符串;

2)如果<insertcolumnlist>第i項(xiàng)所對(duì)應(yīng)的列的數(shù)據(jù)類型是精確數(shù)值,則對(duì)應(yīng)插入值類型

應(yīng)為精確數(shù)值。

7.3.3更新數(shù)據(jù)

7.3.3.1功能描述

“更新數(shù)據(jù)”語句用于在數(shù)據(jù)表中更新指定的數(shù)據(jù)行集合。該操作僅針對(duì)業(yè)務(wù)表,系統(tǒng)表由區(qū)塊鏈

平臺(tái)填充數(shù)據(jù),不允許智能合約進(jìn)行修改。

7.3.3.2語法格式

<updatestatement>::=UPDATE<tablename>SET<setclauselist>[WHERE<searchcondition>]

解釋:更新語句<updatestatement>,在名為<tablename>的數(shù)據(jù)表當(dāng)中,針對(duì)所有滿足<search

condition>條件的數(shù)據(jù)行,實(shí)施賦值從句清單<setclauselist>所指定的更新操作。當(dāng)WHERE子句省略

時(shí),更新表中所有數(shù)據(jù)行。

<setclauselist>::=<setclause>[{,<setclause>}…]

解釋:賦值從句清單<setclauselist>,包含一個(gè)或多個(gè)賦值從句<setclause>,從句之間使用

逗號(hào)分隔。

<setclause>::=<columnname>=<valueexpression>|NULL

解釋:賦值從句<setclause>,將名為<columnname>的列,賦值為<valueexpression>或者NULL。

7.3.3.3語法規(guī)則

“更新數(shù)據(jù)”語句的語法規(guī)則包括:

a)令T表示<tablename>標(biāo)識(shí)的表,T不應(yīng)是一個(gè)只讀的表;

b)每一個(gè)<columnname>應(yīng)標(biāo)識(shí)T的一個(gè)列,相同的<columnname>不應(yīng)在同一個(gè)更新語句<update

statement>中多次出現(xiàn);

c)對(duì)于每一個(gè)賦值從句<setclause>,應(yīng)滿足以下條件:

1)如果賦值為NULL,那么<columnname>所指定的列應(yīng)允許為空值;

2)如果<columnname>所對(duì)應(yīng)的列的數(shù)據(jù)類型是長度為L的字符串,則對(duì)應(yīng)<value

expression>的類型應(yīng)為長度小于或等于L的字符串;

9

T/CESAXXXX—202X

3)如果<columnname>所對(duì)應(yīng)的列的數(shù)據(jù)類型是精確數(shù)值,則對(duì)應(yīng)<valueexpression>de類

型應(yīng)為精確數(shù)值。

7.3.4刪除數(shù)據(jù)

7.3.4.1功能描述

“刪除數(shù)據(jù)”語句用于從數(shù)據(jù)表中刪除指定的數(shù)據(jù)行集合。該操作僅針對(duì)對(duì)業(yè)務(wù)表有效,系統(tǒng)表由

區(qū)塊鏈平臺(tái)填充數(shù)據(jù),不允許智能合約進(jìn)行刪除。

7.3.4.2語法格式

<deletestatement>::=DELETEFROM<table_name>[WHERE<search_condition>]

解釋:刪除語句<deletestatement>,從名為<tablename>的數(shù)據(jù)表中,刪除所有滿足條件<search

condition>的數(shù)據(jù)行。

7.3.4.3語法規(guī)則

“刪除數(shù)據(jù)”語句的語法規(guī)則:令T表示<tablename>標(biāo)識(shí)的表,T不應(yīng)是一個(gè)只讀的表。

7.3.5查詢數(shù)據(jù)

7.3.5.1功能描述

“查詢數(shù)據(jù)”語句用于從數(shù)據(jù)表指定的數(shù)據(jù)行中查詢特定的值集合。該操作對(duì)業(yè)務(wù)表和系統(tǒng)表均有

效。

7.3.5.2語法格式

<selectstatement>::=SELECT<selectlist><tableexpression>

解釋:查詢語句<selectstatement>,從表達(dá)式<tableexpression>所指定的數(shù)據(jù)表中,獲取<select

list>所指定的值清單。

<selectlist>::=<valueexpression>[{,<valueexpression>}…]

解釋:查詢清單<selectlist>,包含一個(gè)或多個(gè)值表達(dá)式,表達(dá)式之間使用逗號(hào)分隔。

<tableexpression>::=<fromclause>[<whereclause>][<groupbyclause>]

解釋:表表達(dá)式<tableexpression>,主要包含<fromclause>,可選性包含<whereclause>,<group

byclause>.

<fromclause>::=FROM<tablereference>[{,<tablereference>}…]

解釋:從句<fromclause>,包含一個(gè)或多個(gè)表引用<tablereference>,表引用之間使用逗號(hào)分隔。

<tablereference>::=<tablename>[AS<correlationname>]

解釋:表引用<tablereference>,主要包含表名<tablename>,可選擇性定義相關(guān)名<correlation

name>.

10

T/CESAXXXX—202X

<whereclause>::=WHERE<searchcondition>

解釋:條件從句<whereclause>,主要包含搜索條件<searchcondition>.

<groupbyclause>::=GROUPBY<columnreference>[{,<columnreference>}…]

解釋:分組從句<groupbyclause>,包含一個(gè)或多個(gè)列引用<columnreference>,列引用之間使

用逗號(hào)分隔。

<columnreference>::=[<qualifiedidentifier>.]<columnname>

解釋:列引用<columnreference>,主要包含列名<columnname>,可選擇性包含限定符<qualified

identifier>作為前綴。

7.3.5.3語法規(guī)則

“查詢數(shù)據(jù)”語句的語法規(guī)則包括:

a)令R表示<tableexpression>的結(jié)果;

b)查詢結(jié)果的度等于<selectlist>的基數(shù);

c)每個(gè)<valueexpression>內(nèi)的每個(gè)<columnreference>應(yīng)無歧義的引用R的一個(gè)列;

d)查詢結(jié)果的每個(gè)列與相應(yīng)的<valueexpression>具有相同的數(shù)據(jù)類型,長度,精度,以及標(biāo)度;

e)如果<selectlist>中的第i個(gè)<valueexpression>由單一的<columnreference>組成,則結(jié)

果的第i列是一個(gè)命名列,它的列名就是<columnreference>的<columnname>;否則,該列

是一個(gè)非命名列;

f)當(dāng)且僅當(dāng)查詢結(jié)果的一個(gè)列是命名列,并且只包含非空值,則該列限制為只包含非空值。

11

T/CESAXXXX—202X

附錄A

(資料性)

區(qū)塊鏈底層數(shù)據(jù)分類

區(qū)塊鏈底層數(shù)據(jù)可分為區(qū)塊數(shù)據(jù)和狀態(tài)數(shù)據(jù),其中狀態(tài)數(shù)據(jù)分為當(dāng)前世界狀態(tài)數(shù)據(jù)和歷史世界狀態(tài)

數(shù)據(jù)。三種數(shù)據(jù)的邏輯關(guān)系如A.1所示。

A.1區(qū)塊數(shù)據(jù)

區(qū)塊數(shù)據(jù)是區(qū)塊鏈系統(tǒng)的核心數(shù)據(jù)。一段特定時(shí)間之內(nèi)的交易和回執(zhí)數(shù)據(jù)打包組成一個(gè)區(qū)塊,多個(gè)

區(qū)塊之間通過哈希糾纏的方式組成線性的鏈塊結(jié)構(gòu)。

A.2世界狀態(tài)數(shù)據(jù)

世界狀態(tài)數(shù)據(jù)是區(qū)塊鏈系統(tǒng)的擴(kuò)展數(shù)據(jù),用以描述在某一個(gè)時(shí)間點(diǎn)上,系統(tǒng)內(nèi)所有賬戶的相關(guān)信息,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論