Solo  当前访客:1 开始使用


PostgreSQL简述

历史

20世纪80年代开始的一个叫做Postgre的项目,主要是为了探索新型关系型数据库

20世纪90年代的时候,兼容了标准SQL,之后改名为PostgreSQL

后来,不断优化,增加了很多的功能,现在也是最热门的关系型数据库之一

特点

  1. 不仅支持标准SQL,在表级别还支持对象模型,支持更加复杂的数据类型(数组、json、jsonb、xml、范围类型、几何类型等)
  2. 完全支持事务
  3. 优秀的窗口函数(擅长数据分析)

说明

  1. jsonb 二进制数据存储,在存储时会将 JSON 数据解析并压缩为二进制格式,去除无关空白字符和重复键,因此占用的空间比未压缩的json 数据要少
  2. 范围类型:
    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;
    
  3. 几何类型
    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公里范围内
    
    -- 上述查询使用了 `<@>` 操作符计算两点之间的欧氏距离,并设置了距离阈值
    
  4. 。。

总结

没正儿八经用过PostgreSQL,先简单来个不成熟的总结吧。

PostgreSQL是火箭弹,MySql是手枪。

在学习成本和开发成本中权衡利弊吧。


标题:PostgreSQL简述
作者:temp12138
地址:https://solo.mfyzl.icu/articles/2024/03/30/1711811793311.html

标签:
新一篇: 朝鲜贵族-北逃诗人-张振成-世界的阴影 有感 旧一篇: 客户和用户的区别?