[TOC] # 数据类型 OceanBase支持如下数据类型: * 数值类型 * 日期时间类型 * 字符类型 * 大对象类型 ## 数值类型 数值类型可以划分为三类: * 整数类型:`BOOL`/`BOOLEAN`、`TINYINT`、`SMALLINT`、`MEDIUMINT`、`INT`/`INTEGER`、`BIGINT`。 * 定点类型:`DECIMAL`/`NUMERIC`。 * 浮点类型:`FLOAT`、`DOUBLE`。 * Bit-Value类型:`BIT` 所有数据类型都可以同时使用`UNSIGNED`关键字声明为无符号类型,这会导致值域发生变化。 数值类型在定义时可以指定precision和scale,不同类型中precision和scale的含义可能有所不同,详情请见各类型详细说明。 ## 整数类型 整数类型为定长、精确数值类型,值域取决于类型长度,以及是否为无符号,precision只表示最小显示宽度,详见“ZEROFILL属性”节。以下为相关信息: <table data-tag="table" id="table-9a5-6cw-pkq" class="table"><colgroup span="1" width="180" data-tag="col" id="col-pnv-ymv-o81" colwidth="1*" colnum="1" colname="col1" style="width:25%" class="col"></colgroup><colgroup span="1" width="180" data-tag="col" id="col-v5t-g76-08p" colwidth="1*" colnum="2" colname="col2" style="width:25%" class="col"></colgroup><colgroup span="1" width="180" data-tag="col" id="col-d4b-ri5-b9j" colwidth="1*" colnum="3" colname="col3" style="width:25%" class="col"></colgroup><colgroup span="1" width="180" data-tag="col" id="col-4fx-hvy-kem" colwidth="1*" colnum="4" colname="col4" style="width:25%" class="col"></colgroup><thead id="thead-yda-8e6-4mt" class="thead"><tr id="tr-1ah-opt-h4u"><th id="td-zz1-8uw-hgw"><p id="p-0dp-qim-dma">类型</p></th><th id="td-p89-7xb-vdz"><p id="p-bzy-gva-jbu">长度(字节)</p></th><th id="td-f0r-x7e-hcy"><p id="p-2yv-jfn-wps">值域(有符号)</p></th><th id="td-na6-lez-azi"><p id="p-szy-iln-g47">值域(无符号)</p></th></tr></thead><tbody data-tag="tbody" id="tbody-szz-3zp-jpb" class="tbody"><tr data-tag="tr" id="tr-cd4-6q7-n85" class="tr"><td data-tag="td" id="td-zgf-h2o-klr" class="td"><p id="p-j41-cmu-deh"><code data-tag="code" class="code">BOOL</code>/<code data-tag="code" class="code">BOOLEAN</code>/</p><p id="p-llw-48m-3sm"><code data-tag="code" class="code">TINYINT</code></p></td><td data-tag="td" id="td-9nq-y5g-58c" class="td"><p id="p-e1n-39s-aeg">1</p></td><td data-tag="td" id="td-fy4-vh4-k77" class="td"><p id="p-r81-qkd-eoj">[-2 ^ 7 , 2 ^ 7 - 1]</p></td><td data-tag="td" id="td-dun-86h-gc7" class="td"><p id="p-dv2-7yo-iee">[0, 2 ^ 8 - 1]</p></td></tr><tr data-tag="tr" id="tr-v3z-nut-08b" class="tr"><td data-tag="td" id="td-5hf-dbz-91a" class="td"><p id="p-u8m-yjb-i2l"><code data-tag="code" class="code">SMALLINT</code></p></td><td data-tag="td" id="td-15b-w2f-rj2" class="td"><p id="p-jf1-bsk-t9s">2</p></td><td data-tag="td" id="td-3tn-h4e-nz3" class="td"><p id="p-yno-zqt-db7">[-2 ^ 15, 2 ^ 15 - 1]</p></td><td data-tag="td" id="td-6o6-pxa-j1v" class="td"><p id="p-rc4-0aq-58r">[0, 2 ^ 16 - 1]</p></td></tr><tr data-tag="tr" id="tr-ogi-1ju-36j" class="tr"><td data-tag="td" id="td-xs9-jlr-zbb" class="td"><p id="p-xih-k25-6mx"><code data-tag="code" class="code">MEDIUMINT</code></p></td><td data-tag="td" id="td-0ua-4pw-6nn" class="td"><p id="p-yi1-a73-571">3</p></td><td data-tag="td" id="td-c3r-1ku-zbs" class="td"><p id="p-qdw-wyy-dfp">[-2 ^ 23, 2 ^ 23 - 1]</p></td><td data-tag="td" id="td-dhx-96f-5qx" class="td"><p id="p-9q4-taq-uxh">[0, 2 ^ 24 - 1]</p></td></tr><tr data-tag="tr" id="tr-plm-a5j-05q" class="tr"><td data-tag="td" id="td-8f2-g8j-ewr" class="td"><p id="p-rph-6vo-5c6"><code data-tag="code" class="code">INT</code>/<code data-tag="code" class="code">INTEGER</code></p></td><td data-tag="td" id="td-3cq-uj2-enz" class="td"><p id="p-h87-i3c-esd">4</p></td><td data-tag="td" id="td-ixw-78y-gsy" class="td"><p id="p-uqn-5qm-rf0">[-2 ^ 31, 2 ^ 31 - 1]</p></td><td data-tag="td" id="td-jma-jp2-hs1" class="td"><p id="p-71u-dau-obj">[0, 2 ^ 32 - 1]</p></td></tr><tr data-tag="tr" id="tr-6yp-p4z-9oy" class="tr"><td data-tag="td" id="td-y50-tjj-yee" class="td"><p id="p-5oz-6j3-8yo"><code data-tag="code" class="code">BIGINT</code></p></td><td data-tag="td" id="td-ckx-ttn-646" class="td"><p id="p-n03-3fu-w67">8</p></td><td data-tag="td" id="td-pcb-i1o-pgl" class="td"><p id="p-o6z-ily-4k0">[-2 ^ 63, 2 ^ 63 - 1]</p></td><td data-tag="td" id="td-ndh-797-y1h" class="td"><p id="p-jgf-fcw-wtw">[0, 2 ^ 64 - 1]</p></td></tr></tbody></table> `BOOL`等价于`BOOLEAN`,这两个类型又等价于`TINYINT(1)`。 `INT`等价于`INTEGER`。 ## 定点类型 定点类型为变长、精确数值类型,值域和精度取决于precision和scale,以及是否为无符号。precision和scale分别表示十进制下的总最大有效位数、小数部分最大有效位数,整数部分最大有效位数等于precision - scale,其中precision和scale的最大值分别为65、30,默认值分别为10、0。例如: * `DECIMAL(5, 2)`,整数部分和小数部分最大有效位数分别为3、2,所以值域为\[-999.99, 999.99\]。 * 如果同时定义为`UNSIGNED`,则值域为\[0, 999.99\]。 `DECIMAL`等价于`NUMERIC`。 #### 浮点类型 浮点类型为定长、非精确数值类型,值域和精度取决于类型长度、precision和scale,以及是否为无符号。precision和scale分别表示十进制下的总最大有效位数、小数部分最大有效位数,整数部分最大有效位数等于precision - scale,其中precision和scale的最大值分别为53、30。 浮点类型的精度只是IEEE标准中规定的理论值,实际情况可能因硬件或操作系统限制略有不同。 以下为不指定precision和scale时的默认信息: <table data-tag="table" id="table-vwp-2rl-48j" class="table"><colgroup span="1" width="144" data-tag="col" id="col-3t4-5j9-e6y" colwidth="1*" colnum="1" colname="col1" style="width:20%" class="col"></colgroup><colgroup span="1" width="144" data-tag="col" id="col-klw-2wz-rld" colwidth="1*" colnum="2" colname="col2" style="width:20%" class="col"></colgroup><colgroup span="1" width="144" data-tag="col" id="col-zyw-4n0-2ft" colwidth="1*" colnum="3" colname="col3" style="width:20%" class="col"></colgroup><colgroup span="1" width="144" data-tag="col" id="col-9xj-so6-tvx" colwidth="1*" colnum="4" colname="col4" style="width:20%" class="col"></colgroup><colgroup span="1" width="144" data-tag="col" id="col-7wv-tpy-ah0" colwidth="1*" colnum="5" colname="col5" style="width:20%" class="col"></colgroup><thead id="thead-2pm-klh-yg3" class="thead"><tr id="tr-ihp-v1f-7x3"><th id="td-mbd-tt7-e2e"><p id="p-19o-2qx-myc">类型</p></th><th id="td-teg-loe-vxv"><p id="p-lyy-rip-ged">长度(字节)</p></th><th id="td-3ij-y5u-gdf"><p id="p-7pq-e05-1nn">值域(有符号)</p></th><th id="td-mpq-r3n-96k"><p id="p-k03-ta5-5wx">值域(无符号)</p></th><th id="td-v0r-abv-o7p"><p id="p-teo-dae-jo0">精度</p></th></tr></thead><tbody data-tag="tbody" id="tbody-vc9-z0z-mtn" class="tbody"><tr data-tag="tr" id="tr-eix-zyw-z2i" class="tr"><td data-tag="td" id="td-f5v-krn-pa1" class="td"><p id="p-xmp-k62-5h0"><code data-tag="code" class="code">FLOAT</code></p></td><td data-tag="td" id="td-i4c-598-m8g" class="td"><p id="p-3ec-era-rdv">4</p></td><td data-tag="td" id="td-2qv-bp4-30l" class="td"><p id="p-214-u4l-trt">[-2 ^ 128, 2 ^ 128]</p></td><td data-tag="td" id="td-rpb-qkz-mf5" class="td"><p id="p-ttq-bfw-wo4">[0, 2 ^ 128]</p></td><td data-tag="td" id="td-phy-cgw-jri" class="td"><p id="p-67o-rtx-qre">7位</p></td></tr><tr data-tag="tr" id="tr-hxc-w81-2dc" class="tr"><td data-tag="td" id="td-0lj-jg8-c3v" class="td"><p id="p-v1d-em8-g9q"><code data-tag="code" class="code">DOUBLE</code></p></td><td data-tag="td" id="td-7lf-aa4-1tv" class="td"><p id="p-2m9-255-hao">8</p></td><td data-tag="td" id="td-v1a-cjj-i3c" class="td"><p id="p-va6-7tw-acm">[-2 ^ 1024, 2 ^ 1024]</p></td><td data-tag="td" id="td-x08-9co-j6q" class="td"><p id="p-7gx-6kg-205">[0, 2 ^ 1024]</p></td><td data-tag="td" id="td-i09-029-t0b" class="td"><p id="p-ij8-bhg-ma5">15位</p></td></tr></tbody></table> 如果指定precision和scale,则值域确定方法与定点类型相同。 #### ZEROFILL属性 数值类型在定义时可以通过ZEROFILL关键字指定最小显示宽度,同时将该类型隐式定义为UNSIGNED。在数据实际显示宽度不足最小显示宽度时,通过先在小数部分补零到scale上限、再在整数部分补零到precision上限的方式,将显示宽度补足到最小显示宽度。例如: * `INT(5) ZEROFILL`:当数据值为`123`时,将显示为`00123`。 * `DECIMAL(10, 5) ZEROFILL`:当数据值为`123.456`时,将显示为`00123.45600`。 #### BIT-Value类型 BIT数据类型用于存储bit values。一个BIT(M)能够存储M-bit的值,M的范围是1~64。 bit value通过b'value'的形式指定,**value**是用0和1来指定的,例如,b'111'表示7,b'10000000'表示128。 当向BIT(M)列插入值时,如果插入值的长度小于**M**,则会在左侧填充0。例如:将b'101'插入到BIT(6)时,相当于插入了b'000101'。 ## 日期时间类型 以下为相关信息: <table data-tag="table" id="table-kwx-mg1-0xk" class="table"><colgroup span="1" width="144" data-tag="col" id="col-mpu-7hf-z4v" colwidth="1*" colnum="1" colname="col1" style="width:20%" class="col"></colgroup><colgroup span="1" width="144" data-tag="col" id="col-b7a-9ek-6ga" colwidth="1*" colnum="2" colname="col2" style="width:20%" class="col"></colgroup><colgroup span="1" width="144" data-tag="col" id="col-nrw-0lj-w7o" colwidth="1*" colnum="3" colname="col3" style="width:20%" class="col"></colgroup><colgroup span="1" width="144" data-tag="col" id="col-rvs-59s-1ub" colwidth="1*" colnum="4" colname="col4" style="width:20%" class="col"></colgroup><colgroup span="1" width="144" data-tag="col" id="col-0f6-bjs-elf" colwidth="1*" colnum="5" colname="col5" style="width:20%" class="col"></colgroup><thead id="thead-c1h-r8j-l8q" class="thead"><tr id="tr-kom-3so-lrq"><th id="td-nmi-29f-ihs"><p id="p-ptm-ln7-crj">类型</p></th><th id="td-ep9-d9k-w05"><p id="p-8b4-ujt-noc">格式</p></th><th id="td-1w3-mdk-mpo"><p id="p-9j9-pcs-ljt">下界</p></th><th id="td-0ef-t9m-6t0"><p id="p-asg-xhc-awp">上界</p></th><th id="td-h79-szo-uxa"><p id="p-bzu-vpu-mtw">含义</p></th></tr></thead><tbody data-tag="tbody" id="tbody-joh-1jv-xt2" class="tbody"><tr data-tag="tr" id="tr-2bi-au8-dvk" class="tr"><td data-tag="td" id="td-va0-1y2-y2v" class="td"><p id="p-s19-slo-qro"><code data-tag="code" class="code">DATETIME</code></p></td><td data-tag="td" id="td-z3d-8ho-va3" class="td"><p id="p-rcw-z8a-kfc">YYYY-MM-DD HH:MM:SS[.fraction]</p></td><td data-tag="td" id="td-vmi-1fo-ek5" class="td"><p id="p-1dy-8pk-mtl">0000-01-01 00:00:00.000000</p></td><td data-tag="td" id="td-1b1-9q0-e6h" class="td"><p id="p-ix5-8j3-zmf">9999-12-31 23:59:59.999999</p></td><td data-tag="td" id="td-izy-d8w-vny" class="td"><p id="p-0mi-2dk-tjs">日期时间(不考虑时区)</p></td></tr><tr data-tag="tr" id="tr-a5w-58h-gyk" class="tr"><td data-tag="td" id="td-c48-5be-uxu" class="td"><p id="p-abt-ien-59d"><code data-tag="code" class="code">TIMESTAMP</code></p></td><td data-tag="td" id="td-kgn-98x-yld" class="td"><p id="p-aoy-ssp-i6b">YYYY-MM-DD HH:MM:SS[.fraction]</p></td><td data-tag="td" id="td-6vn-nxz-cy2" class="td"><p id="p-jtf-0ai-1i1">0000-01-01 00:00:00.000000</p></td><td data-tag="td" id="td-225-ing-env" class="td"><p id="p-x8i-jwe-hp9">9999-12-31 23:59:59.999999</p></td><td data-tag="td" id="td-dcp-sh9-rn3" class="td"><p id="p-cm1-h2y-2lw">日期时间(考虑时区)</p></td></tr><tr data-tag="tr" id="tr-qvq-z3h-hcm" class="tr"><td data-tag="td" id="td-hng-nir-b3o" class="td"><p id="p-euy-h7t-1t2"><code data-tag="code" class="code">DATE</code></p></td><td data-tag="td" id="td-re1-xen-cox" class="td"><p id="p-sir-1yh-nu6">YYYY-MM-DD</p></td><td data-tag="td" id="td-cff-ff5-4ns" class="td"><p id="p-ul2-oml-rv4">0000-01-01</p></td><td data-tag="td" id="td-l7d-7xg-86p" class="td"><p id="p-s7w-ci6-pqs">9999-12-31</p></td><td data-tag="td" id="td-9ks-8re-g73" class="td"><p id="p-k0g-fab-5yn">日期</p></td></tr><tr data-tag="tr" id="tr-m15-iqq-dom" class="tr"><td data-tag="td" id="td-2r9-u2g-3bv" class="td"><p id="p-lns-h84-fdh"><code data-tag="code" class="code">TIME</code></p></td><td data-tag="td" id="td-7tx-8f6-nh4" class="td"><p id="p-u36-ez4-056">HH:MM:SS[.fraction]</p></td><td data-tag="td" id="td-t2k-iuk-qbg" class="td"><p id="p-7f7-ao0-z9s">-838:59:59.000000</p></td><td data-tag="td" id="td-wt4-iyq-jk1" class="td"><p id="p-5jb-czo-qty">838:59:59.000000</p></td><td data-tag="td" id="td-uha-n4e-iwu" class="td"><p id="p-w6u-mex-65d">时间</p></td></tr><tr data-tag="tr" id="tr-smq-hxi-1h2" class="tr"><td data-tag="td" id="td-vni-xbv-de4" class="td"><p id="p-fn5-w2d-vka"><code data-tag="code" class="code">YEAR</code></p></td><td data-tag="td" id="td-vi1-t0p-rpq" class="td"><p id="p-j1s-kv1-984">YYYY</p></td><td data-tag="td" id="td-wqc-vea-rvc" class="td"><p id="p-mvk-1aq-nyn">1901</p></td><td data-tag="td" id="td-544-435-5oq" class="td"><p id="p-ra9-d59-qa8">2155</p></td><td data-tag="td" id="td-4ta-qsc-8j5" class="td"><p id="p-ns3-jc0-7uk">年份</p></td></tr></tbody></table> `DATETIME`、`TIMESTAMP`、`TIME`的值域和精度取决于scale。该属性表示小数部分最大有效位数,最大值为6,默认值为0。 ## 字符类型 以下为普通字符类型相关信息: <table data-tag="table" id="table-fes-3wp-n7z" class="table"><colgroup span="1" width="180" data-tag="col" id="col-wk3-v71-bgb" colwidth="1*" colnum="1" colname="col1" style="width:25%" class="col"></colgroup><colgroup span="1" width="180" data-tag="col" id="col-hlr-ufk-za1" colwidth="1*" colnum="2" colname="col2" style="width:25%" class="col"></colgroup><colgroup span="1" width="180" data-tag="col" id="col-ged-916-nyh" colwidth="1*" colnum="3" colname="col3" style="width:25%" class="col"></colgroup><colgroup span="1" width="180" data-tag="col" id="col-miq-u6d-iuh" colwidth="1*" colnum="4" colname="col4" style="width:25%" class="col"></colgroup><thead id="thead-0rj-rry-cya" class="thead"><tr id="tr-mml-dik-8dx"><th id="td-avn-x38-3gl"><p id="p-jyy-8a6-ayp">类型</p></th><th id="td-cb8-lsu-mpw"><p id="p-980-ni1-w97">长度</p></th><th id="td-nc0-wvg-rg8"><p id="p-i7i-pfr-h5s">定义长度上限(字符)</p></th><th id="td-jrd-8yf-s1r"><p id="p-k54-4dq-prx">字符集</p></th></tr></thead><tbody data-tag="tbody" id="tbody-k31-vdw-oje" class="tbody"><tr data-tag="tr" id="tr-mdi-2o4-nud" class="tr"><td data-tag="td" id="td-0gq-vhg-9nb" class="td"><p id="p-xwm-ids-as9"><code data-tag="code" class="code">VARCHAR</code></p></td><td data-tag="td" id="td-w1a-nj1-l1m" class="td"><p id="p-m84-28w-227">变长</p></td><td data-tag="td" id="td-7gm-0xw-eqj" class="td"><p id="p-m2h-bst-zy7">262144 / 256K</p></td><td data-tag="td" id="td-93t-he5-5k0" class="td"><p id="p-47m-kml-qab"><code data-tag="code" class="code">UTF8MB4</code></p></td></tr><tr data-tag="tr" id="tr-rs0-5cb-7mf" class="tr"><td data-tag="td" id="td-e0k-d0n-0th" class="td"><p id="p-lue-7vr-wjs"><code data-tag="code" class="code">VARBINARY</code></p></td><td data-tag="td" id="td-tx9-zgk-k7m" class="td"><p id="p-41n-8l1-nm8">变长</p></td><td data-tag="td" id="td-58h-1oa-3xx" class="td"><p id="p-g4o-odc-ata">1048576 / 1M</p></td><td data-tag="td" id="td-l2w-lss-z38" class="td"><p id="p-vcp-j8p-9d4"><code data-tag="code" class="code">BINARY</code></p></td></tr><tr data-tag="tr" id="tr-eyt-mi3-g03" class="tr"><td data-tag="td" id="td-k5t-0fy-17f" class="td"><p id="p-qsl-2l7-78i"><code data-tag="code" class="code">CHAR</code></p></td><td data-tag="td" id="td-3fp-crs-gay" class="td"><p id="p-mpo-l83-a83">定长</p></td><td data-tag="td" id="td-6ml-n18-d9u" class="td"><p id="p-jvm-n1r-d5s">256</p></td><td data-tag="td" id="td-jc4-1gc-kli" class="td"><p id="p-r8x-jv0-cu9"><code data-tag="code" class="code">UTF8MB4</code></p></td></tr><tr data-tag="tr" id="tr-tbq-ppa-55b" class="tr"><td data-tag="td" id="td-gm4-fyh-kvh" class="td"><p id="p-r70-9ap-h49"><code data-tag="code" class="code">BINARY</code></p></td><td data-tag="td" id="td-n6o-f5s-xtt" class="td"><p id="p-qhu-vyj-bzw">定长</p></td><td data-tag="td" id="td-37q-pr0-5z5" class="td"><p id="p-7xj-o1y-ekv">256</p></td><td data-tag="td" id="td-84o-hu1-hvx" class="td"><p id="p-mbp-v8w-9j3"><code data-tag="code" class="code">BINARY</code></p></td></tr><tr data-tag="tr" id="tr-6c9-ykm-umw" class="tr"><td data-tag="td" id="td-szt-agc-rpm" class="td"><p id="p-96g-fuf-yd1"><code data-tag="code" class="code">enum</code></p></td><td data-tag="td" id="td-7k5-k7k-za3" class="td"><p id="p-sbn-r36-k71">变长</p></td><td data-tag="td" id="td-299-f9o-zsb" class="td"><p id="p-fht-gvf-6w3">最多定义65535个元素,每个元素长度最多255个字符</p></td><td data-tag="td" id="td-0db-lqx-lqy" class="td"><p id="p-zl9-u8a-zxo"><code data-tag="code" class="code">UTF8MB4</code></p></td></tr><tr data-tag="tr" id="tr-rri-v4f-8qy" class="tr"><td data-tag="td" id="td-k0f-rd5-m6u" class="td"><p id="p-w2f-m1s-v1e"><code data-tag="code" class="code">set</code></p></td><td data-tag="td" id="td-qac-51u-bdh" class="td"><p id="p-63j-8lu-ntg">变长</p></td><td data-tag="td" id="td-3ql-o73-nfc" class="td"><p id="p-4iw-cl3-t40">最多定义64个元素,每个元素长度最多255个字符</p></td><td data-tag="td" id="td-8ha-wwv-nfr" class="td"><p id="p-3c0-x1y-n4o"><code data-tag="code" class="code">UTF8MB4</code></p></td></tr></tbody></table> ## 大对象类型 以下为大对象类型相关信息: <table data-tag="table" id="table-jhi-vmd-aiu" class="table"><colgroup span="1" width="180" data-tag="col" id="col-tgh-cl9-sqd" colwidth="1*" colnum="1" colname="col1" style="width:25%" class="col"></colgroup><colgroup span="1" width="180" data-tag="col" id="col-dyx-lgd-tep" colwidth="1*" colnum="2" colname="col2" style="width:25%" class="col"></colgroup><colgroup span="1" width="180" data-tag="col" id="col-mxb-tjg-4qz" colwidth="1*" colnum="3" colname="col3" style="width:25%" class="col"></colgroup><colgroup span="1" width="180" data-tag="col" id="col-e9s-apf-tcw" colwidth="1*" colnum="4" colname="col4" style="width:25%" class="col"></colgroup><thead id="thead-9po-mms-qqx" class="thead"><tr id="tr-ve9-xop-eg3"><th id="td-ez7-siw-1e0"><p id="p-gtw-m2n-lsf">类型</p></th><th id="td-jjv-4zm-oim"><p id="p-7t7-jhz-ljz">长度</p></th><th id="td-k5z-5zl-4i7"><p id="p-236-1lb-b5s">存储长度上限(字节)</p></th><th id="td-le6-e7r-nvk"><p id="p-xbt-roq-1v5">字符集</p></th></tr></thead><tbody data-tag="tbody" id="tbody-o3g-9t5-2qz" class="tbody"><tr data-tag="tr" id="tr-lze-dtp-4qq" class="tr"><td data-tag="td" id="td-t1t-ltk-er3" class="td"><p id="p-ul2-0c0-wy2"><code data-tag="code" class="code">TINYTEXT</code></p></td><td data-tag="td" id="td-epg-cud-gz2" class="td"><p id="p-emd-5fn-udq">变长</p></td><td data-tag="td" id="td-nu0-kug-4tg" class="td"><p id="p-mj8-j5f-okz">256</p></td><td data-tag="td" id="td-6v8-xc9-7uz" class="td"><p id="p-s2f-7ow-imx"><code data-tag="code" class="code">UTF8MB4</code></p></td></tr><tr data-tag="tr" id="tr-p4x-5of-17j" class="tr"><td data-tag="td" id="td-6hh-6ql-u4v" class="td"><p id="p-yiz-ojo-ycu"><code data-tag="code" class="code">TINYBLOB</code></p></td><td data-tag="td" id="td-0yh-z19-9e7" class="td"><p id="p-ojj-7rx-h3l">变长</p></td><td data-tag="td" id="td-fbb-1v2-rju" class="td"><p id="p-fx0-ob8-ru5">256</p></td><td data-tag="td" id="td-fg9-r31-ah6" class="td"><p id="p-0zo-nwl-la2"><code data-tag="code" class="code">BINARY</code></p></td></tr><tr data-tag="tr" id="tr-bur-0wt-yhg" class="tr"><td data-tag="td" id="td-a3z-2pw-0ye" class="td"><p id="p-kgm-3zt-j3a"><code data-tag="code" class="code">TEXT</code></p></td><td data-tag="td" id="td-nfa-f2y-q8d" class="td"><p id="p-0nv-sgd-udi">变长</p></td><td data-tag="td" id="td-su9-fi9-yxt" class="td"><p id="p-urg-nky-w39">65536 / 64K</p></td><td data-tag="td" id="td-oxa-3dd-95n" class="td"><p id="p-35t-izb-nt5"><code data-tag="code" class="code">UTF8MB4</code></p></td></tr><tr data-tag="tr" id="tr-94p-o2j-uqc" class="tr"><td data-tag="td" id="td-jes-epy-ozi" class="td"><p id="p-bul-36i-lo6"><code data-tag="code" class="code">BLOB</code></p></td><td data-tag="td" id="td-eai-b2y-yh0" class="td"><p id="p-vlu-1jw-ju3">变长</p></td><td data-tag="td" id="td-uwr-j0v-ap2" class="td"><p id="p-ijq-k3s-ljh">65536 / 64K</p></td><td data-tag="td" id="td-u3v-h7k-zcn" class="td"><p id="p-609-gwp-r0f"><code data-tag="code" class="code">BINARY</code></p></td></tr><tr data-tag="tr" id="tr-ffd-85j-d9c" class="tr"><td data-tag="td" id="td-gg6-12d-k69" class="td"><p id="p-msz-dwn-baj"><code data-tag="code" class="code">MEDIUMTEXT</code></p></td><td data-tag="td" id="td-y25-pak-f6a" class="td"><p id="p-0ml-sql-evs">变长</p></td><td data-tag="td" id="td-8ml-59y-0nk" class="td"><p id="p-6vr-yu0-ya9">16777216 / 16M</p></td><td data-tag="td" id="td-yf6-oa9-8gg" class="td"><p id="p-d60-i24-k8c"><code data-tag="code" class="code">UTF8MB4</code></p></td></tr><tr data-tag="tr" id="tr-r50-r3s-b80" class="tr"><td data-tag="td" id="td-0eu-wz6-nzz" class="td"><p id="p-bfw-gnv-0ia"><code data-tag="code" class="code">MEDIUMBLOB</code></p></td><td data-tag="td" id="td-tdx-7lp-sls" class="td"><p id="p-axj-ggm-zop">变长</p></td><td data-tag="td" id="td-ofu-95t-v6y" class="td"><p id="p-4o4-orl-ak9">16777216 / 16M</p></td><td data-tag="td" id="td-0sn-8u8-fo9" class="td"><p id="p-653-m0h-i7s"><code data-tag="code" class="code">BINARY</code></p></td></tr><tr data-tag="tr" id="tr-wh4-fp0-2yq" class="tr"><td data-tag="td" id="td-4d4-geu-uvd" class="td"><p id="p-cwm-afc-7wt"><code data-tag="code" class="code">LONGTEXT</code></p></td><td data-tag="td" id="td-hf9-5n9-nvg" class="td"><p id="p-maa-gza-oii">变长</p></td><td data-tag="td" id="td-ix5-cqq-bkm" class="td"><p id="p-a47-ibg-aea">50331648 / 48M</p></td><td data-tag="td" id="td-t97-kaq-die" class="td"><p id="p-079-qir-0eo"><code data-tag="code" class="code">UTF8MB4</code></p></td></tr><tr data-tag="tr" id="tr-c20-qql-gqw" class="tr"><td data-tag="td" id="td-uqc-m95-0is" class="td"><p id="p-l3f-8yu-6cq"><code data-tag="code" class="code">LONGBLOB</code></p></td><td data-tag="td" id="td-007-4gn-3vu" class="td"><p id="p-wdz-2sf-wvk">变长</p></td><td data-tag="td" id="td-724-ht2-9fx" class="td"><p id="p-qo0-mei-a9p">50331648 / 48M</p></td><td data-tag="td" id="td-40h-e0w-twb" class="td"><p id="p-4oe-lep-k1n"><code data-tag="code" class="code">BINARY</code></p></td></tr></tbody></table> # 表达式 表达式是广义概念,通常有若干个输入参数,并且返回一个输出结果。其中输入参数可能来自于常量或单行数据,也可能来自于多行数据。表达式可以组合,一个表达式的输入可以为另一个表达式的输出。 根据表达式的来源和形式,可分为如下几类: * 列引用 * 常量 * 运算符 * 函数 例如: ~~~ SELECT ABS(a + 1) FROM t1 WHERE a > 0; ~~~ * a为列引用。 * 0、1为常量。 * `&gt;`、`+`为运算符,以0、1、a表达式为输入。 * `ABS`为函数,以`+`表达式为输入。 # 类型转换 OceanBase支持显式类型转换和隐式类型转换。 显示类型转换通过`CAST`函数实现。 隐式类型转换发生在这样的场景中:一个操作需要一个指定类型的参数,但语句的实际参数值并不是指定类型,这时OceanBase会将实际参数值转为指定类型后,再进行后续操作。 # 字符集 目前只支持如下字符集: * `UTF8MB4`:变长编码,字符最大长度4字节。 * `BINARY`:定长编码,字符固定长度1字节。 `UT8`/`UTF8MB3`是`UTF8MB4`的子集,变长编码,字符最大长度3字节。为支持无缝迁移,OceanBase在语法上将`UTF8`视为`UTF8MB4`的同义词。 # 排序规则 目前只支持如下排序规则: * `UTF8MB4`的`UTF8MB4_GENERAL_CI`。 * `UTF8MB4`的`UTF8MB4_BIN`。 * `BINARY`的`BINARY`。 # 数据比较规则 OceanBase允许任意两或多个任意类型的数据进行比较,比较结果可能为: * 非0 / TRUE * 0 / FALSE。 * NULL。 如果参与比较的数据类型不一致,OceanBase会根据相关规则确定一个用于比较的数据类型,逻辑上所有参与比较的数据都需要先转换为该数据类型才能参与比较操作。 如果比较类型为文本类型,则还需要确定一个用于比较的排序规则。 # 字面量 ## 文本 文本是使用单引号`'`或双引号`"`引起来的字符序列,如果打开`ANSI_QUOTES`模式,那只有单引号`'`可以用于引用字符串。 ## 数值 十进制数值可以分为精确数值(整数和定点数值)和浮点数值。数值可以使用小数点`.`作为十进制分隔符,也可以在前面加一个负号`-`来表示负值。 十六进制数值只支持整数数值,以前缀`0X`开始,允许出现字母`A`到`F`,所有字母不区分大小写。 ## 日期时间 日期时间字面量有文本或数值两种形式。 * 文本格式可使用全量分隔符:`'2015-07-21 12:34:56.789'`,或完全不使用分隔符:`'20150721'`。 * 数值格式只允许使用小数点`.`作为秒和微秒部分的分隔符:`20150721123456.789`。 * 在需要使用分隔符时,除了秒和微秒部分之间只能使用小数点`.`外,其它分隔符建议只使用`-`、`/`、`:`等常用分隔符。 ## 转义字符 转义字符是在字符串中,某些序列前添加反斜线`\`,用于表示特殊含义。转义字符对大小写敏感。例如`\b`表示退格,但`\B`表示`B`。 以下为所有转义符列表: <table data-tag="table" id="table-qq7-ta8-q5j" class="table"><colgroup span="1" width="360" data-tag="col" id="col-9h9-3kw-4px" colwidth="1*" colnum="1" colname="col1" style="width:50%" class="col"></colgroup><colgroup span="1" width="360" data-tag="col" id="col-fyg-gm5-eam" colwidth="1*" colnum="2" colname="col2" style="width:50%" class="col"></colgroup><thead id="thead-0pb-724-jcb" class="thead"><tr id="tr-1h4-t69-4es"><th id="td-94v-9ch-0u4"><p id="p-fcl-qs2-60w">转义符</p></th><th id="td-btx-kw6-1zp"><p id="p-3g6-q0f-b3d">含义</p></th></tr></thead><tbody data-tag="tbody" id="tbody-7wp-ole-n01" class="tbody"><tr data-tag="tr" id="tr-vor-mu8-lg0" class="tr"><td data-tag="td" id="td-wmz-vk8-eko" class="td"><p id="p-s4r-7l5-ips"><code data-tag="code" class="code">\b</code></p></td><td data-tag="td" id="td-ilo-obf-ag7" class="td"><p id="p-0ak-e6l-e26">退格符。</p></td></tr><tr data-tag="tr" id="tr-kk3-t1c-4lr" class="tr"><td data-tag="td" id="td-17h-t1s-ya1" class="td"><p id="p-1ku-dn4-vtb"><code data-tag="code" class="code">\f</code></p></td><td data-tag="td" id="td-zrn-d1a-fsx" class="td"><p id="p-0xg-zar-p1f">换页符。</p></td></tr><tr data-tag="tr" id="tr-0fs-z8x-qk2" class="tr"><td data-tag="td" id="td-9u3-zpi-a6y" class="td"><p id="p-up7-yxa-3g0"><code data-tag="code" class="code">\n</code></p></td><td data-tag="td" id="td-qc2-iy7-qjn" class="td"><p id="p-x2q-ov8-528">换行符。</p></td></tr><tr data-tag="tr" id="tr-6u8-r32-mmq" class="tr"><td data-tag="td" id="td-vk5-suu-qmk" class="td"><p id="p-80k-yrv-bcn"><code data-tag="code" class="code">\r</code></p></td><td data-tag="td" id="td-5x0-8nc-uil" class="td"><p id="p-t8j-yv4-flt">回车符。</p></td></tr><tr data-tag="tr" id="tr-hmu-972-y82" class="tr"><td data-tag="td" id="td-c3r-wwy-deq" class="td"><p id="p-gqq-wl2-l9n"><code data-tag="code" class="code">\t</code></p></td><td data-tag="td" id="td-fys-1bk-y2b" class="td"><p id="p-64k-ggg-zd7">tab字符。</p></td></tr><tr data-tag="tr" id="tr-f9g-qmu-ttz" class="tr"><td data-tag="td" id="td-90v-d47-a1i" class="td"><p id="p-5ys-yie-t5l"><code data-tag="code" class="code">\\</code></p></td><td data-tag="td" id="td-k52-xq3-z1m" class="td"><p id="p-bky-32n-k9e">反斜线字符。</p></td></tr><tr data-tag="tr" id="tr-33z-c56-xbi" class="tr"><td data-tag="td" id="td-5fn-0nx-uwr" class="td"><p id="p-w7k-xje-wsi"><code data-tag="code" class="code">\'</code></p></td><td data-tag="td" id="td-1af-6m3-yzw" class="td"><p id="p-e25-yp0-zp8">单引号。</p></td></tr><tr data-tag="tr" id="tr-850-39q-44j" class="tr"><td data-tag="td" id="td-ef4-t6t-u4p" class="td"><p id="p-v9n-gkv-qjh"><code data-tag="code" class="code">\"</code></p></td><td data-tag="td" id="td-8xn-o3z-0zc" class="td"><p id="p-qm3-vtx-rpx">双引号。</p></td></tr><tr data-tag="tr" id="tr-2d1-52c-itv" class="tr"><td data-tag="td" id="td-qx0-efk-aa1" class="td"><p id="p-nyq-f0s-dm7"><code data-tag="code" class="code">\_</code></p></td><td data-tag="td" id="td-56f-p49-sti" class="td"><p id="p-r67-ukn-x3v">下划线。</p></td></tr><tr data-tag="tr" id="tr-xhy-742-jka" class="tr"><td data-tag="td" id="td-sob-biy-klb" class="td"><p id="p-1ig-44j-gcg"><code data-tag="code" class="code">\%</code></p></td><td data-tag="td" id="td-42r-izv-gk8" class="td"><p id="p-l9y-4cb-wtm">百分号。</p></td></tr><tr data-tag="tr" id="tr-2d6-z9l-roe" class="tr"><td data-tag="td" id="td-o4y-8h4-0q2" class="td"><p id="p-sf9-1rf-cog"><code data-tag="code" class="code">\0</code></p></td><td data-tag="td" id="td-gj7-6n2-ibz" class="td"><p id="p-lyf-rp1-gdw">NULL。</p></td></tr><tr data-tag="tr" id="tr-fpg-4bs-ojy" class="tr"><td data-tag="td" id="td-lko-3aj-i2g" class="td"><p id="p-q6s-cm6-w1d"><code data-tag="code" class="code">\Z</code></p></td><td data-tag="td" id="td-pue-ztg-j1n" class="td"><p id="p-cpl-y2t-0ot">ASCII 26,控制符Ctrl+Z。</p></td></tr></tbody></table> # 注释 ## SQL 语句 在普通 SQL 语句中,OceanBase 数据库支持如下 3 种注释方法: * 从`#`到行尾 * 从`--`到行尾 * 从`/*`到`*/` ## 数据库对象 在 DDL 语句中通过`COMMENT`子句可以为数据库对象指定注释。例如: ~~~ create table t(pk INT PRIMARY KEY COMMENT '主键'); ~~~