### 11.4.1 空间数据类型

[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)

MySQL 具有对应于 OpenGIS 类的空间数据类型。这些类型的基础在[第 11.4.2 节，“OpenGIS 几何模型”](opengis-geometry-model.html).

一些空间数据类型包含单个几何值：

-   `几何学`

-   `观点`

-   `线串`

-   `多边形`

`几何学`可以存储任何类型的几何值。其他单值类型（`观点`,`线串`， 和`多边形`) 将它们的值限制为特定的几何类型。

其他空间数据类型包含值的集合：

-   `多点`

-   `多行字符串`

-   `多面体`

-   `几何系列`

`几何系列`可以存储任何类型的对象的集合。其他集合类型（`多点`,`多行字符串`， 和`多面体`) 将集合成员限制为具有特定几何类型的成员。

示例：创建一个名为`几何`有一个名为的列`g`可以存储任何几何类型的值，请使用以下语句：

```
CREATE TABLE geom (g GEOMETRY);
```

具有空间数据类型的列可以具有`SRID`属性，以明确指示存储在列中的值的空间参考系统 (SRS)。例如：

```
CREATE TABLE geom (
    p POINT SRID 0,
    g GEOMETRY NOT NULL SRID 4326
);
```

`空间`可以在空间列上创建索引，如果它们是`非空`并且有一个特定的 SRID，所以如果您打算索引该列，请使用`非空`和`SRID`属性：

```
CREATE TABLE geom (g GEOMETRY NOT NULL SRID 4326);
```

`InnoDB`表允许`SRID`笛卡尔和地理 SRS 的值。`MyISAM`表允许`SRID`笛卡尔 SRS 的值。

这`SRID`属性使空间列 SRID 受限，这具有以下含义：

-   该列只能包含具有给定 SRID 的值。尝试插入具有不同 SRID 的值会产生错误。

-   优化器可以使用`空间`列上的索引。看[第 8.3.3 节，“空间索引优化”](spatial-index-optimization.html).

    没有的空间列`SRID`属性不受 SRID 限制，并接受具有任何 SRID 的值。但是，优化器不能使用`空间`对它们建立索引，直到修改列定义以包含`SRID`属性，这可能需要首先修改列内容，以便所有值都具有相同的 SRID。

    有关显示如何在 MySQL 中使用空间数据类型的其他示例，请参阅[第 11.4.6 节，“创建空间列”](creating-spatial-columns.html).有关空间参考系统的信息，请参阅[第 11.4.5 节，“空间参考系统支持”](spatial-reference-systems.html).
