MySQL是一種廣泛使用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它支持各種數(shù)據(jù)類型,包括經(jīng)緯度字段。經(jīng)緯度是用來表示地理位置的坐標(biāo)系。若要在MySQL中存儲經(jīng)緯度,需要將它們存儲為Decimal類型的字段,并使用經(jīng)度值和緯度值分別存儲。
CREATE TABLE locations (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
latitude DECIMAL(10,8),
longitude DECIMAL(11,8)
);
該表有id、name、latitude和longitude等字段。經(jīng)度和緯度的Decimal類型是10和8,11和8。這些數(shù)字表示可用位數(shù)的總數(shù)和小數(shù)點后的位數(shù)。
一旦有這些字段,我們就可以開始在Table中插入數(shù)據(jù)。通常,通過API或終端控制臺等工具獲取帶有經(jīng)緯度信息的外部數(shù)據(jù),隨后插入Table的行中。
INSERT INTO locations (name, latitude, longitude)
VALUES
('San Francisco', '37.7749', '-122.4194'),
('New York', '40.7128', '-74.0060'),
('London', '51.5074', '-0.1278')
;
然后,我們就可以用一些查詢語句來查找這些地點中最靠近某一個目標(biāo)地點的位置。以下是以緯度和經(jīng)度為變量查詢的SQL語句的示例。
SELECT name, ( ‘’ + latitude + ‘, ‘’ + longitude + ‘’ ) as lat_lng,
/* From a fixed position */
( 3959 * acos(cos(radians(37)) * cos(radians(latitude)) * cos(radians(longitude)
- radians(-122)) + sin(radians(37)) * sin(radians(latitude))) ) AS distance
FROM locations
ORDER BY distance
LIMIT 5;
在這個SQL查詢中,我們選擇了距離某個位置最近的5個地點,并將它們按照距離的順序排列。
在MySQL中使用經(jīng)緯度字段需要注意的是,需要將Decimal類型的經(jīng)緯度放入適當(dāng)?shù)牟樵冋Z句中進行計算,并將這些計算總結(jié)為有效的坐標(biāo)距離。