### 11.4.7 填充空间列

创建空间列后，您可以使用空间数据填充它们。

值应以内部几何格式存储，但您可以将它们从众所周知的文本 (WKT) 或众所周知的二进制 (WKB) 格式转换为该格式。以下示例演示如何通过将 WKT 值转换为内部几何格式来将几何值插入表中：

-   直接在[`插入`](insert.html)陈述：

    ```
    INSERT INTO geom VALUES (ST_GeomFromText('POINT(1 1)'));

    SET @g = 'POINT(1 1)';
    INSERT INTO geom VALUES (ST_GeomFromText(@g));
    ```

-   在转换之前执行转换[`插入`](insert.html)：

    ```
    SET @g = ST_GeomFromText('POINT(1 1)');
    INSERT INTO geom VALUES (@g);
    ```

    以下示例将更复杂的几何图形插入到表中：


```
SET @g = 'LINESTRING(0 0,1 1,2 2)';
INSERT INTO geom VALUES (ST_GeomFromText(@g));

SET @g = 'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))';
INSERT INTO geom VALUES (ST_GeomFromText(@g));

SET @g =
'GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 0,1 1,2 2,3 3,4 4))';
INSERT INTO geom VALUES (ST_GeomFromText(@g));
```

前面的例子使用[`ST_GeomFromText()`](gis-wkt-functions.html#function_st-geomfromtext)创建几何值。您还可以使用特定于类型的函数：

```
SET @g = 'POINT(1 1)';
INSERT INTO geom VALUES (ST_PointFromText(@g));

SET @g = 'LINESTRING(0 0,1 1,2 2)';
INSERT INTO geom VALUES (ST_LineStringFromText(@g));

SET @g = 'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))';
INSERT INTO geom VALUES (ST_PolygonFromText(@g));

SET @g =
'GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 0,1 1,2 2,3 3,4 4))';
INSERT INTO geom VALUES (ST_GeomCollFromText(@g));
```

想要使用几何值的 WKB 表示的客户端应用程序负责将查询中正确形成的 WKB 发送到服务器。有几种方法可以满足这一要求。例如：

-   插入一个`要点(1 1)`具有十六进制文字语法的值：

    ```
    INSERT INTO geom VALUES
    (ST_GeomFromWKB(X'0101000000000000000000F03F000000000000F03F'));
    ```

-   ODBC 应用程序可以发送 WKB 表示，使用参数将其绑定到占位符[`斑点`](blob.html)类型：

    ```
    INSERT INTO geom VALUES (ST_GeomFromWKB(?))
    ```

    其他编程接口可能支持类似的占位符机制。

-   在 C 程序中，您可以使用转义二进制值[`mysql_real_escape_string_quote()`](https://dev.mysql.com/doc/c-api/8.0/en/mysql-real-escape-string-quote.html)并将结果包含在发送到服务器的查询字符串中。看[mysql\_真实的\_逃脱\_细绳\_引用（）](https://dev.mysql.com/doc/c-api/8.0/en/mysql-real-escape-string-quote.html).
