@@ -11,15 +11,15 @@ import EEFeature from '@site/src/components/EEFeature';
1111
1212<EEFeature featureName =' COMPUTED COLUMN ' />
1313
14- 创建表是许多数据库中最复杂的操作之一 ,因为您可能需要:
14+ 对于许多数据库来说,创建表是最复杂的操作之一 ,因为您可能需要:
1515
16- * 手动指定引擎
17- * 手动指定索引
18- * 甚至指定数据分区或数据分片
16+ - 手动指定引擎
17+ - 手动指定索引
18+ - 甚至指定数据分区或数据分片
1919
20- Databend旨在通过设计变得易于使用,并且在创建表时不需要任何这些操作。此外,CREATE TABLE语句提供了这些选项,使您在各种场景中创建表变得更加容易 :
20+ Databend旨在通过设计变得易于使用,并且在创建表时不需要任何这些操作。此外,CREATE TABLE语句提供了这些选项,使您在各种场景下创建表变得更加容易 :
2121
22- - [ CREATE TABLE] ( #create-table ) : 从头开始创建一个表 。
22+ - [ CREATE TABLE] ( #create-table ) : 从头开始创建表 。
2323- [ CREATE TABLE ... LIKE] ( #create-table--like ) : 创建一个与现有表具有相同列定义的表。
2424- [ CREATE TABLE ... AS] ( #create-table--as ) : 创建一个表并使用SELECT查询的结果插入数据。
2525
@@ -34,28 +34,30 @@ Databend旨在通过设计变得易于使用,并且在创建表时不需要任
3434``` sql
3535CREATE [ OR REPLACE ] TABLE [ IF NOT EXISTS ] [ < database_name> . ]< table_name>
3636(
37- < column_name> < data_type> [ NOT NULL | NULL ]
38- [ { DEFAULT < expr> } ]
37+ < column_name> < data_type> [ NOT NULL | NULL ]
38+ [ { DEFAULT < expr> } ]
3939 [ AS (< expr> ) STORED | VIRTUAL ]
4040 [ COMMENT ' <comment>' ],
4141 < column_name> < data_type> ...
4242 ...
4343)
4444```
45+
4546::: note
47+
4648- 有关Databend中可用的数据类型,请参阅[ 数据类型] ( ../../../00-sql-reference/10-data-types/index.md ) 。
4749
4850- Databend建议在命名列时尽量避免使用特殊字符。然而,在某些情况下如果需要特殊字符,别名应使用反引号括起来,例如:CREATE TABLE price(\` $CA\` int);
4951
50- - Databend会自动将列名转换为小写。例如,如果您将列命名为* Total* ,它将在结果中显示为* total* 。
51- :::
52-
52+ - Databend会自动将列名转换为小写。例如,如果您将列命名为_Total_ ,它将在结果中显示为_total_ 。
53+ :::
5354
5455## CREATE TABLE ... LIKE
5556
5657创建一个与现有表具有相同列定义的表。现有表的列名、数据类型及其非空约束将被复制到新表中。
5758
5859语法:
60+
5961``` sql
6062CREATE TABLE [IF NOT EXISTS] [db.]table_name
6163LIKE [db.]origin_table_name
@@ -64,20 +66,23 @@ LIKE [db.]origin_table_name
6466此命令不包括原始表中的任何数据或属性(如` CLUSTER BY ` 、` TRANSIENT ` 和` COMPRESSION ` ),而是使用默认系统设置创建一个新表。
6567
6668:::note 解决方法
67- - 在使用此命令创建新表时,可以显式指定` TRANSIENT ` 和` COMPRESSION ` 。例如,
69+
70+ - 当使用此命令创建新表时,可以显式指定` TRANSIENT ` 和` COMPRESSION ` 。例如,
6871
6972``` sql
7073create transient table t_new like t_old;
7174
7275create table t_new compression= ' lz4' like t_old;
7376```
77+
7478:::
7579
7680## CREATE TABLE ... AS
7781
7882创建一个表并使用SELECT命令计算的数据填充它。
7983
8084语法:
85+
8186``` sql
8287CREATE TABLE [IF NOT EXISTS] [db.]table_name
8388AS SELECT query
@@ -86,13 +91,15 @@ AS SELECT query
8691此命令不包括原始表中的任何属性(如CLUSTER BY、TRANSIENT和COMPRESSION),而是使用默认系统设置创建一个新表。
8792
8893:::note 解决方法
89- - 在使用此命令创建新表时,可以显式指定` TRANSIENT ` 和` COMPRESSION ` 。例如,
94+
95+ - 当使用此命令创建新表时,可以显式指定` TRANSIENT ` 和` COMPRESSION ` 。例如,
9096
9197``` sql
9298create transient table t_new as select * from t_old;
9399
94100create table t_new compression= ' lz4' as select * from t_old;
95101```
102+
96103:::
97104
98105## 列可空性
@@ -104,7 +111,8 @@ create table t_new compression='lz4' as select * from t_old;
104111``` sql
105112DEFAULT < expr>
106113```
107- 指定在通过` INSERT ` 或` CREATE TABLE AS SELECT ` 语句未指定值时插入到列中的默认值。
114+
115+ 如果通过` INSERT ` 或` CREATE TABLE AS SELECT ` 语句未指定值,则指定插入到列中的默认值。
108116
109117例如:
110118
@@ -142,9 +150,9 @@ SELECT * FROM t_default_value;
142150
143151## 计算列
144152
145- 计算列是使用表中其他列的标量表达式生成的列。当计算中使用的任何列中的数据更新时 ,计算列将自动重新计算其值以反映更新。
153+ 计算列是使用表中其他列的标量表达式生成的列。当用于计算的任何列中的数据更新时 ,计算列将自动重新计算其值以反映更新。
146154
147- Databend支持两种类型的计算列:存储和虚拟。存储计算列在数据库中物理存储,并占用存储空间 ,而虚拟计算列不物理存储,其值在访问时动态计算。
155+ Databend支持两种类型的计算列:存储和虚拟。存储计算列在数据库中物理存储并占用存储空间 ,而虚拟计算列不物理存储,其值在访问时动态计算。
148156
149157Databend支持两种创建计算列的语法选项:一种使用` AS (<expr>) ` ,另一种使用` GENERATED ALWAYS AS (<expr>) ` 。两种语法都允许指定计算列是存储还是虚拟。
150158
@@ -189,12 +197,12 @@ CREATE TABLE IF NOT EXISTS employees (
189197:::tip 存储还是虚拟?
190198在选择存储计算列和虚拟计算列时,请考虑以下因素:
191199
192- - 存储空间:存储计算列占用表中的额外存储空间,因为它们的计算值是物理存储的 。如果您有有限的数仓空间或希望最小化存储使用,虚拟计算列可能是一个更好的选择。
200+ - 存储空间:存储计算列占用表中的额外存储空间,因为其计算值是物理存储的 。如果您有有限的数仓空间或希望最小化存储使用,虚拟计算列可能是一个更好的选择。
193201
194202- 实时更新:存储计算列在依赖列更新时立即更新其计算值。这确保了在查询时始终拥有最新的计算值。虚拟计算列则在查询时动态计算其值,这可能会稍微增加处理时间。
195203
196- - 数据完整性和一致性:存储计算列在写操作时立即维护数据一致性,因为它们的计算值在写操作时更新 。虚拟计算列则在查询时动态计算其值,这意味着在写操作和后续查询之间可能会有短暂的差异。
197- :::
204+ - 数据完整性和一致性:存储计算列在写操作时立即维护数据一致性,因为其计算值在写操作时更新 。虚拟计算列则在查询时动态计算其值,这意味着在写操作和后续查询之间可能会有短暂的差异。
205+ :::
198206
199207## MySQL兼容性
200208
@@ -233,7 +241,7 @@ DESC books;
233241INSERT INTO books(id, title) VALUES (1 , ' Invisible Stars' );
234242```
235243
236- 查询表并注意 ` genre ` 列已设置为默认值'General':
244+ 查询表并注意到 ` genre ` 列已设置为默认值'General':
237245
238246``` sql
239247SELECT * FROM books;
@@ -265,7 +273,7 @@ DESC books_copy;
265273+ -- -----+-----------------+------+---------+-------+
266274```
267275
268- 向新表插入一行并注意 ` genre ` 列的默认值已被复制:
276+ 向新表插入一行并注意到 ` genre ` 列的默认值已被复制:
269277
270278``` sql
271279INSERT INTO books_copy(id, title) VALUES (1 , ' Invisible Stars' );
@@ -286,7 +294,7 @@ SELECT * FROM books_copy;
286294CREATE TABLE books_backup AS SELECT * FROM books;
287295```
288296
289- 描述新表并注意 ` genre ` 列的默认值未被复制:
297+ 描述新表并注意到 ` genre ` 列的默认值未被复制:
290298
291299``` sql
292300DESC books_backup;
@@ -299,7 +307,7 @@ DESC books_backup;
299307+ -- -----+-----------------+------+---------+-------+
300308```
301309
302- 查询新表并注意原始表的数据已被复制 :
310+ 查询新表并注意到原始表的数据已被复制 :
303311
304312``` sql
305313SELECT * FROM books_backup;
@@ -312,7 +320,7 @@ SELECT * FROM books_backup;
312320
313321### 创建表 ... 列 AS STORED | VIRTUAL
314322
315- 以下示例演示了一个带有存储计算列的表,该列根据 “price”或“quantity”列的更新自动重新计算:
323+ 以下示例演示了一个带有存储计算列的表,该列会根据 “price”或“quantity”列的更新自动重新计算:
316324
317325``` sql
318326-- 创建带有存储计算列的表
@@ -343,7 +351,7 @@ FROM products;
343351+ -- ----+-------+----------+-------------+
344352```
345353
346- 在这个示例中,我们创建了一个名为student_profiles的表,其中包含一个名为profile的Variant类型列来存储JSON数据。我们还添加了一个名为 * age * 的虚拟计算列 ,该列从profile列中提取age属性并将其转换为整数。
354+ 在这个示例中,我们创建了一个名为student_profiles的表,其中包含一个名为profile的Variant类型列来存储JSON数据。我们还添加了一个名为_age_的虚拟计算列 ,该列从profile列中提取age属性并将其转换为整数。
347355
348356``` sql
349357-- 创建带有虚拟计算列的表
@@ -366,8 +374,8 @@ SELECT * FROM student_profiles;
366374+--------+------------------------------------------------------------------------------------------------------------+------+
367375| id | profile | age |
368376+--------+------------------------------------------------------------------------------------------------------------+------+
369- | d78236 | {"age":"16","credits":120,"id":"d78236","name":"Arthur Read","school":"PVPHS","sports":"none"} | 16 |
370- | f98112 | {"age":"15","clubs":"MUN","credits":67,"id":"f98112","name":"Buster Bunny","school":"TEO"} | 15 |
371- | t63512 | {"clubs":"Chess","id":"t63512","name":"Ernie Narayan","school":"Brooklyn Tech","sports":"Track and Field"} | NULL |
377+ | d78236 | ` {"age":"16","credits":120,"id":"d78236","name":"Arthur Read","school":"PVPHS","sports":"none"} ` | 16 |
378+ | f98112 | ` {"age":"15","clubs":"MUN","credits":67,"id":"f98112","name":"Buster Bunny","school":"TEO"} ` | 15 |
379+ | t63512 | ` {"clubs":"Chess","id":"t63512","name":"Ernie Narayan","school":"Brooklyn Tech","sports":"Track and Field"} ` | NULL |
372380+--------+------------------------------------------------------------------------------------------------------------+------+
373381```
0 commit comments