MySQL是一種開放源代碼的關(guān)系數(shù)據(jù)庫管理系統(tǒng),廣泛應(yīng)用于Web應(yīng)用程序的開發(fā)中。它支持很多種類型的數(shù)據(jù)操作,例如事務(wù)處理、存儲過程、觸發(fā)器、視圖等等,但是關(guān)于空間查詢的支持情況卻讓人頗有些困惑。
MySQL針對GIS(地理信息系統(tǒng))推出了一些新的擴(kuò)展功能,例如支持定義幾何圖形數(shù)據(jù)類型和索引加速查詢,但是在一些版本中,并不是所有的空間查詢都是支持的。
在MySQL 5.7版本之前,只支持一部分空間查詢操作,例如Point類型地理位置的查詢、Bounding Box查詢、距離查詢等。而在MySQL 5.7版本中,加入了R-Tree索引算法,支持更加豐富的空間查詢類型,例如Polygon區(qū)域查詢、線段拓?fù)潢P(guān)系查詢等。
下面是一些可以在MySQL 5.7版本中支持的空間查詢類型:
-- 創(chuàng)建空間列 CREATE TABLE t_geometry ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), location POINT ) ENGINE=InnoDB; -- 添加幾何圖形對象 INSERT INTO t_geometry (name, location) VALUES ("home", POINT(121.314103, 29.552633)); -- 查詢包含指定點(diǎn)的區(qū)域 SELECT name FROM t_geometry WHERE MBRContains(GeomFromText('POLYGON((121.3172 29.5487, 121.3172 29.5572, 121.3110 29.5572, 121.3110 29.5487, 121.3172 29.5487))'), location); -- 查詢指定地點(diǎn)附近的位置 SELECT name, ST_Distance_Sphere(location, POINT(121.314103, 29.552633)) as distance FROM t_geometry ORDER BY distance LIMIT 10;
需要注意的是,使用MySQL進(jìn)行空間查詢需要先安裝并啟用相對應(yīng)的插件,例如可以使用yum或apt-get安裝MySQL的gis插件。
總的來說,MySQL在空間查詢上的支持越來越豐富,但是在具體操作時(shí)還是需要了解具體的版本和插件支持情況,才能發(fā)揮最大的作用。
上一篇mysql操作顯示表頭
下一篇mysql操作考試