色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql 經緯度用什么存儲

錢浩然2年前9瀏覽0評論

在開發中,有時需要存儲地理位置信息,如經緯度。而MySQL是一款常用的關系型數據庫,那么如何在MySQL中存儲經緯度信息呢?

通常有兩種方法:使用Decimal類型和使用Point類型。

-- Decimal類型示例
CREATE TABLE `location`(
`id` INT AUTO_INCREMENT PRIMARY KEY,
`longitude` DECIMAL(10, 8) NOT NULL COMMENT '經度',
`latitude` DECIMAL(10, 8) NOT NULL COMMENT '緯度'
);
-- Point類型示例
CREATE TABLE `location`(
`id` INT AUTO_INCREMENT PRIMARY KEY,
`position` POINT NOT NULL COMMENT '經緯度'
);

使用Decimal類型存儲經緯度時,需要指定精度,表示小數點后的位數。例如DECIMAL(10, 8)表示總共10位,小數點后8位。使用Point類型存儲經緯度時,只需要一個字段,使用ST_GeomFromText()函數將經緯度轉化為Point類型即可。

-- 插入數據
INSERT INTO location(longitude, latitude) VALUES(116.397128, 39.916527);
INSERT INTO location(position) VALUES(ST_GeomFromText('POINT(116.397128 39.916527)'));

使用Point類型存儲經緯度可以使用MySQL的空間索引,實現簡單的空間查詢。例如查詢距離指定經緯度不超過1000米的所有位置:

SELECT id, ST_X(position), ST_Y(position), ST_Distance_Sphere(position, POINT(116.397128, 39.916527))
FROM location
WHERE ST_Distance_Sphere(position, POINT(116.397128, 39.916527))<= 1000;

總之,使用Decimal類型或Point類型都可以存儲地理位置信息。Decimal類型相對簡單,但無法使用空間索引;Point類型功能更強大,可以使用MySQL的空間索引實現空間查詢。