# 11.4.1 空间数据类型

MySQL 具有对应于 OpenGIS 类的空间数据类型。这些类型的基础在第 11.4.2 节,“OpenGIS 几何模型”.

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

  • 几何学

  • 观点

  • 线串

  • 多边形

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

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

  • 多点

  • 多行字符串

  • 多面体

  • 几何系列

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

示例:创建一个名为几何有一个名为的列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 节,“空间索引优化”.

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

    有关显示如何在 MySQL 中使用空间数据类型的其他示例,请参阅第 11.4.6 节,“创建空间列”.有关空间参考系统的信息,请参阅第 11.4.5 节,“空间参考系统支持”.