Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Spatial Data Types

13.4.1 空间数据类型

MySQL 中的空间数据类型对应于 OpenGIS 类别。这些类型的基础在第13.4.2节,“OpenGIS 几何模型”中描述。

一些空间数据类型存储单个几何值:

  • GEOMETRY

  • POINT

  • LINESTRING

  • POLYGON

GEOMETRY 可以存储任意类型的几何值。其他单值类型(POINTLINESTRINGPOLYGON)将其值限制为特定的几何类型。

其他空间数据类型存储值的集合:

  • MULTIPOINT

  • MULTILINESTRING

  • MULTIPOLYGON

  • GEOMETRYCOLLECTION

GEOMETRYCOLLECTION 可以存储对象的集合。其他集合类型(MULTIPOINTMULTILINESTRINGMULTIPOLYGON)将集合成员限制为特定的几何类型。

示例:创建一个名为 geom 的表,该表具有名为 g 的列,可以存储任意几何类型的值,使用以下语句:

CREATE TABLE geom (g GEOMETRY);

具有空间数据类型的列可以具有 SRID 属性,以明确地指定空间参考系统(SRS)对存储在该列中的值。例如:

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

SPATIAL 索引可以在空间列上创建,如果该列是 NOT NULL 并具有特定的 SRID,例如:

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

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

SRID 属性使空间列 SRID-受限,这意味着:

  • 该列只能包含具有给定 SRID 的值。尝试插入具有不同 SRID 的值将导致错误。

  • 优化器可以使用 SPATIAL 索引在该列上。请参阅第10.3.3节,“SPATIAL 索引优化”

没有 SRID 属性的空间列不受 SRID-受限,可以接受具有任何 SRID 的值。然而,优化器不能在这些列上使用 SPATIAL 索引,直到将列定义修改为包括 SRID 属性,这可能需要将列内容修改为所有值都具有相同的 SRID。

关于使用 MySQL 中空间数据类型的其他示例,请见第13.4.6节,“创建空间列”。关于空间参考系统的信息,请见第13.4.5节,“空间参考系统支持”