返回首页

gbase数据、南大通用产品文档:GBase8aINSERT SELECT

更新日期:2024年09月11日

功能说明
执行INSERT INTO…SELECT …时,自增列不允许指定值,但是可以指定0、
NULL。
示例
示例1:自增列不指定值,自动维护。
CREATE TABLE t1(a INT AUTO_INCREMENT PRIMARY KEY,b
VARCHAR(100), c INT);
INSERT INTO t1(b,c) VALUES('a1',1),('a2',2),('a3',3),('a4',4),('a5',5);
CREATE TABLE t2(a INT AUTO_INCREMENT PRIMARY KEY,b
VARCHAR(100), c INT) DISTRIBUTED BY ('b');
gbase> select * from t1;
+----+------+------+
| a
| b
| c
|
+----+------+------+
|
2 | a1
|
1 |
|
6 | a2
|
2 |
| 10 | a3
|
3 |
| 14 | a4
|
4 |
| 18 | a5
|
5 |
+----+------+------+
5 rows in set (Elapsed: 00:00:00.03)
gbase> INSERT INTO t2(b,c) SELECT b,c FROM t1;
Query OK, 5 rows affected (Elapsed: 00:00:00.15)
Records: 5
Duplicates: 0
Warnings: 0

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1030
gbase> SELECT * FROM t2;
+---+------+------+
| a | b
| c
|
+---+------+------+
| 3 | a2
|
2 |
| 2 | a1
|
1 |
| 6 | a5
|
5 |
| 4 | a4
|
4 |
| 1 | a3
|
3 |
+---+------+------+
5 rows in set (Elapsed: 00:00:00.02)
示例2:自增列插入0,null ,自动维护。
CREATE
TABLE
t1(a
INT
AUTO_INCREMENT
PRIMARY
KEY,b
VARCHAR(100), c INT);
INSERT INTO t1(b,c) VALUES('a1',1),('a2',2),('a3',3),('a4',4),('a5',5);
CREATE
TABLE
t2(a
INT
AUTO_INCREMENT
PRIMARY
KEY,b
VARCHAR(100), c INT) DISTRIBUTED BY ('b');
gbase> INSERT INTO t2 SELECT 0,b,c FROM t1;
Query OK, 5 rows affected (Elapsed: 00:00:00.11)
Records: 5
Duplicates: 0
Warnings: 0
gbase> SELECT * FROM t2;
+---+------+------+
| a | b
| c
|
+---+------+------+
| 3 | a2
|
2 |

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1031
| 2 | a1
|
1 |
| 6 | a5
|
5 |
| 4 | a4
|
4 |
| 1 | a3
|
3 |
+---+------+------+
5 rows in set (Elapsed: 00:00:00.02)
gbase> INSERT INTO t2 SELECT NULL,b,c FROM t1;
Query OK, 5 rows affected (Elapsed: 00:00:00.11)
Records: 5
Duplicates: 0
Warnings: 0
gbase> SELECT * FROM t2 ORDER BY a;
+----+------+------+
| a
| b
| c
|
+----+------+------+
|
1 | a3
|
3 |
|
2 | a1
|
1 |
|
3 | a2
|
2 |
|
4 | a4
|
4 |
|
6 | a5
|
5 |
|
7 | a3
|
3 |
|
8 | a1
|
1 |
|
9 | a2
|
2 |
| 10 | a4
|
4 |
| 12 | a5
|
5 |
+----+------+------+
10 rows in set (Elapsed: 00:00:00.08)

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1032

下列语句修改数据:

DELETE

INSERT

MERGE

UPDATE
当与更高级的 SELECT 语句相比时,虽然这些 SQL 语句相对简单,但由于它们更改数据
库的内容,因此请小心使用它们。
如果在查询期间系统硬件或软件出现故障,请考虑会发生什么。即使对应用程序的影响是
严重的,也不会破坏数据库自身。然而,如果正在进行修改时系统发生故障,则数据库的
状态就不确定了。显然,处于不确定状态的数据库具有深远的影响。在数据库中删除、插
入或更新行之前,请询问自己下列问题:

用户对数据库及其表的访问是否安全。即,是否将有限的数据库和表级别权限授予
特定用户?

修改了的数据是否保持数据库现有的完整性?

系统的状况是否使其对可能导致系统或硬件故障的外部事件具有相对较强的免疫
力?
如果对这些问题不能都回答
“是”

也不用担心。
对所有这些问题的解决方案都内建在 GBase
8s 数据库服务器内。
在对修改数据的语句进行描述之后,
这部分讨论这些解决方案。
GBase
8s 数据库设计和实现指南 更详细地讨论这些主题。

页是数据库服务器用于在 GBase 8s 数据库中读取和写入的物理磁盘存储单元。下图说明
了页的概念,在磁盘片中用加深部分表示。
图: 磁盘上的页


在多数 UNIX™ 平台上,页大小是 2 KB。因为硬件会确定页的大小,所以您不能更改此
值。
块包含一定数量的页,如下图所示。页总是完全包含在块中;也就是说,页不能穿过块边
界。
图: 块,在逻辑上分成一系列页


有关数据库服务器如何在页中构造数据的信息,请参阅《GBase 8s 管理员参考》中有关
磁盘结构和存储的章节