PostgreSQL简述
历史
20世纪80年代开始的一个叫做Postgre的项目,主要是为了探索新型关系型数据库
20世纪90年代的时候,兼容了标准SQL,之后改名为PostgreSQL
后来,不断优化,增加了很多的功能,现在也是最热门的关系型数据库之一
特点
- 不仅支持标准SQL,在表级别还支持对象模型,支持更加复杂的数据类型(数组、json、jsonb、xml、范围类型、几何类型等)
- 完全支持事务
- 优秀的窗口函数(擅长数据分析)
说明
- jsonb 二进制数据存储,在存储时会将 JSON 数据解析并压缩为二进制格式,去除无关空白字符和重复键,因此占用的空间比未压缩的
json数据要少 - 范围类型:
CREATE TABLE meeting_room_reservations ( reservation_id SERIAL PRIMARY KEY, room_number INT, reserved_timespan tsrange ); -- 插入一条预定记录,表示某会议室从下午2点到下午4点被预定 INSERT INTO meeting_room_reservations (room_number, reserved_timespan) VALUES (101, '[2024-03-30 14:00:00, 2024-03-30 16:00:00]'); -- 查询指定时间内是否有冲突的预定 SELECT * FROM meeting_room_reservations WHERE reserved_timespan && '[2024-03-30 15:00:00, 2024-03-30 15:30:00]'::tsrange; - 几何类型
CREATE TABLE store_locations ( location_id SERIAL PRIMARY KEY, store_name VARCHAR(100), position point ); -- 插入一家店铺的位置信息 INSERT INTO store_locations (store_name, position) VALUES ('Central Store', POINT(37.7749, -122.4194)); -- 这是一个经纬度坐标,对应旧金山市中心 -- 查找距离给定位置一定范围内的店铺 SELECT store_name, distance(position, POINT(37.7750, -122.4195)) AS distance_in_meters FROM store_locations WHERE position <@> POINT(37.7750, -122.4195) < 5000; -- 在5公里范围内 -- 上述查询使用了 `<@>` 操作符计算两点之间的欧氏距离,并设置了距离阈值 - 。。
总结
没正儿八经用过PostgreSQL,先简单来个不成熟的总结吧。
PostgreSQL是火箭弹,MySql是手枪。
在学习成本和开发成本中权衡利弊吧。
废话短说