7天玩转PostgreSQL基础训练营(六)

举报
花溪 发表于 2021/04/15 10:28:52 2021/04/15
【摘要】 第六天 华为云数据库PostgreSQL: 插件管理及使用 了解RDS for PostgreSQL的插件使用方法、内置插件及如何添加插件

第六天 华为云数据库PostgreSQL: 插件管理及使用

了解RDS for PostgreSQL的插件使用方法、内置插件及如何添加插件

打卡任务


在 PostgreSQL12上,安装 postgis插件,使用 geometry数据类型存储城市坐标,并计算所有城市之间的距离(具体数据参考 postgis插件的使用章节)。
1.登录你的云数据库
image.png
2.登录之后先查一下你pg里现有什么插件

/*查看PG现有插件*/
SELECT *FROM pg_extension

image.png
3.安装 postgis插件

/*安装postgis插件*/
CREATE EXTENSION postgis;
/*查看PG现有插件*/
SELECT *FROM pg_extension

image.png
3.建表插入三个城市数据 计算三个城市间任意两个城市距离

/*几何表创建*/
CREATE TABLE cities ( id integer, city_name varchar(50) );
/*插入任意三个城市*/
INSERT INTO cities (id, position, city_name) VALUES (1,ST_GeomFromText('POINT(-9.5 23)',4326),'CityA');
INSERT INTO cities (id, position, city_name) VALUES (2,ST_GeomFromText('POINT(-10.6 40.3)',4326),'CityB');
INSERT INTO cities (id, position, city_name) VALUES (3,ST_GeomFromText('POINT(20.8 30.3)',4326), 'CityC');
/*计算三个城市间任意两个城市距离*/
SELECT p1.city_name,p2.city_name,ST_Distance(p1.position,p2.position) FROM cities AS p1, cities AS p2 WHERE p1.id > p2.id;

image.png
4.建表插入北京西安上海数据

/*创建表,使用 geometry类型存储坐标*/
 create table city_location (id int4, pt geometry, city_name text);
 insert into city_location values(1,'POINT(0 0)','北京');
 insert into city_location values(2, 'POINT(40 30)','西安');
 insert into city_location values (3, 'POINT(55.77 66.62)','上海');
/*查看数据*/
 select* from city_location;

image.png
5.计算所有城市之间的距离

/*计算所有城市之间的距离*/
SELECT p1.city_name,p2.city_name,ST_Distance(p1.pt,p2.pt) FROM city_location AS p1, city_location AS p2 WHERE p1.id > p2.id;

image.png
6.计算城市到北京的距离

/*计算其他城市到北京的距离*/
SELECT ST_Distance( pt,'POINT(0 0)') FROM  city_location;

image.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。