当前位置: 首页 > news >正文

pgsql语法

pgsql

分层

数据库+模式+表

模式:auth,public(默认),storage

\l -- 显示所有数据库\dn -- 显示所有模式\d -- 表信息显示 create schemaifnot exists storage;-- 创建模式 drop schemaifexists storage cascade;-- 级联删除
表继承
CREATETABLEcontent(titleTEXT,authorTEXT);-- 继承基础字段,添加字段createtablevideo(durationINT)inherits(content);
常见用法
-- 创建用户并且授权createuserrootwithpasssword'123456';GRANTallPRIVILEGESonDATABASEtest01toroot;-- 修改数据库名称ALTERDATABASEtest01RENAMETOfinancial_system;-- 删除数据库DROPDATABASEfinancial_system;-- 主键自增CREATETABLEUSERS(u_idserialPRIMARYKEY,-- 主键自增u_namevarchar(50),create_timeTIMESTAMPDEFAULTnow()-- 时间默认现在);-- Json JSONBCREATETABLEgoods(g_idserialPRIMARYKEY,-- 主键自增g_namevarchar(50),info jsonb);-- JSON数据存储查询INSERTINTOgoods(g_name,info)VALUES('手机','{"price":1999,"品牌":"华为"}');SELECTinfo->>'price'aspricefromgoods;-- 数组类型-- 设置标签INSERTINTOUSERS(u_name)values('张三');ALTERTABLEUSERSaddCOLUMNtagstext[];-- 添加标签UPDATEUSERSsettags='{"游戏","读书"}'whereu_id=1;-- 根据标签进行查询SELECT*FROMUSERSwhere'游戏'=any(tags);

– 数据批量导入

COPY USERSfrom'数据地址'DELIMITER',';-- 以分号隔开
defaultcurrent_timestamp--->插入数据时自动填当前系统时间references表名(主键)--->绑定另一张表的主键(外键约束)bigserial--->bigint + 自增序列 +not nulltimestamptz--->pgsql的时间类型numeric(10,2)--->总一共10 位数字,小数点后保留 2 位,无浮点精度误差check--->限制字段范围
示例:
CREATETABLEcustomers(id BIGSERIALPRIMARYKEY,nameVARCHAR(100)NOTNULL,emailVARCHAR(255),created_at TIMESTAMPTZDEFAULTCURRENT_TIMESTAMP);CREATETABLEorders(order_id BIGSERIALPRIMARYKEY,-- 关联 customers 表customer_idBIGINTNOTNULLREFERENCEScustomers(id),order_date TIMESTAMPTZDEFAULTCURRENT_TIMESTAMP,amountNUMERIC(10,2)CHECK(amount>0),statusJSONBDEFAULT'{"code": 0, "desc": "pending"}'::jsonb,tagsTEXT[]);CREATETABLEinventory(product_idBIGINTPRIMARYKEY,-- 假设与 products 表 ID 对应warehouse_locationVARCHAR(50),stockINTNOTNULLDEFAULT0,last_updated TIMESTAMPTZDEFAULTCURRENT_TIMESTAMP);CREATETABLEproducts(id BIGSERIALPRIMARYKEY,nameVARCHAR(255)NOTNULL,-- 用于存储动态属性,支持 jsonb_setattributes JSONBDEFAULT'{}',-- 用于支持 unnest(tags)tagsTEXT[]DEFAULTARRAY[]::TEXT[]);

returning—>返回

-- 条件更新(返回修改后的数据)UPDATEinventorySETstock=stock-10WHEREproduct_id=123RETURNINGproduct_id,stock;

::int—>强制类型转换

SELECTorder_data->>'customer_name'AScustomerFROMordersWHERE(order_data->>'status')::int=2;

json数据更新

UPDATEproductsSETattributes=jsonb_set(attributes,'{colors}','["red","blue","green"]'::jsonb)

数组展开为行

SELECTid,unnest(tags)AStagFROMproductsWHEREid=789;
函数
age(::timestamptz)-- 计算年龄

表锁:开启事务,在语句前加LOCK

行锁:

select*fromproductswhereid=100forupdate;updateproductssetstock=stock-1whereid=100;

建议锁

备份与恢复

pg_dump:单库备份(最常用)

pg_dump-h地址-p端口-U用户名-d库名>备份文件.sqlpg_dump-h127.0.0.1-p5432-Upostgres-dtestdb>testdb_20260521.sql
备份成二进制压缩包 pg_dump-U postgres-d testdb-F c-f testdb_bak.dump

pg_dumpall:全实例所有库+用户权限备份

pg_restore:恢复pg_dump备份文件

createdb-U postgres new_db psql-U postgres-d new_db-f testdb_20260521.sql
pg_restore-U postgres-d new_db testdb_bak.dump# 清空原有数据再恢复pg_restore-c-U postgres-d new_db testdb_bak.dump

系统自带,安装PG即自带,无需额外装

只恢复单张表pg_restore -d new_db -t user_info testdb_bak.dump

全实例批量恢复psql -U postgres -f all_db_bak.sql

sql优化

执行过程:

​ 执行sql,首先与远程数据库建立连接,用户名密码没问题就会来到mysql的服务层,先查缓存(key(sql语句),value(数据)的形式存储)再mysql8完全弃用,进入解析器解析sql语句语法是否正确,然后进入预处理器检查表,字段等是否存在,再进入优化器优化sql(优化为最左前缀法),最后操作存储引擎,返回结果。

复合索引
CREATEINDEXidx_orders_customer_dateONorders(customer_id,order_dateDESC);
条件索引
CREATEINDEXidx_users_active_emailONusers(email)WHEREis_active=TRUE;
表达式索引
CREATEINDEXidx_products_lower_nameONproducts(LOWER(name));
查询优化
-- 使用覆盖索引SELECTid,nameFROMproductsWHEREcategory='Electronics'ANDprice>500;-- 限制结果集大小(替代OFFSET)-- 方案1:使用游标分页BEGIN;DECLAREorder_cursorCURSORFORSELECT*FROMlarge_tableORDERBYid;FETCH100FROMorder_cursor;COMMIT;-- 方案2:键集分页(Keyset Pagination)SELECT*FROMordersWHEREid>1000ORDERBYidLIMIT100;
地理空间查询

GEOGRAPHY球面计算→ 全球距离、面积(准)

GEOMETRY平面计算→ 本地地图、投影坐标

point(经度 纬度)

4326:全球标准坐标系

ST_GeomFromText():将文本坐标转换为几何坐标

ST_Distance(a,b):计算距离返回米

ST_DWithin(a,b,半径):范围筛选

在虚拟机安装拓展

sudo yum install -y postgis32_14
-- 创建扩展CREATEEXTENSION postgis;-- 创建包含地理字段的表CREATETABLEstores(idSERIALPRIMARYKEY,nameVARCHAR(100),location GEOGRAPHY(Point,4326)-- WGS84坐标系);-- 插入地理数据INSERTINTOstores(name,location)VALUES('Central Store',ST_GeomFromText('POINT(-73.935242 40.730610)',4326)::geography),('Downtown Branch',ST_GeomFromText('POINT(-74.0060 40.7128)',4326)::geography);-- 查询5公里范围内的商店SELECTname,-- 计算距离并转公里ST_Distance(location,central_point)/1000ASdistance_kmFROMstores,-- 定义中心点(SELECTST_GeomFromText('POINT(-73.935242 40.730610)',4326)::geographyAScentral_point)ASref-- 只保留5公里内的数据WHEREST_DWithin(location,central_point,5000)-- 排序ORDERBYdistance_km;
语句前模糊索引优化

反向索引:将索引数据存储一份反向的(xy–>>yx)

限制范围:限制为当天的数据,当月数据等

深分页优化

原因:从第0条数据开始查,一直查到你想要的数据。

优化:字段索引覆盖,通过id来限定范围(where id>10000),通过id分库分表等。限制可查询范围。

慢查询索引优化

8大原则:全值匹配,最左前缀法则,索引不做计算,尽量避免范围(and或or),

like的%放在最右边,尽量不要写*减少回表(二次查询),不等空值or会导致索引失效,字符串类型加单引号(不加产生隐式转化计算)。

)
– 排序
ORDER BY distance_km;

#### 语句前模糊索引优化 反向索引:将索引数据存储一份反向的(xy-->>yx) 限制范围:限制为当天的数据,当月数据等 #### 深分页优化 原因:从第0条数据开始查,一直查到你想要的数据。 优化:字段索引覆盖,通过id来限定范围(where id>10000),通过id分库分表等。限制可查询范围。 #### 慢查询索引优化 8大原则:全值匹配,最左前缀法则,索引不做计算,尽量避免范围(and或or), like的%放在最右边,尽量不要写*减少回表(二次查询),不等空值or会导致索引失效,字符串类型加单引号(不加产生隐式转化计算)。
http://www.jsqmd.com/news/928844/

相关文章:

  • 失效分析实战:部件寿命延长2倍 成本直降25% - 速递信息
  • Oracle EBS 的资产模块(Fixed Assets, FA)本质上是一个“基于策略驱动、账簿隔离、全生命周期可追溯”的财务引擎
  • XZ3621宽输入电压范围:4V至30V 3A 130kHz电流输出同步降压稳压器
  • 图解Transformer:现代AI的通用基石
  • 2026年 江苏厂房降温/车间降温设备推荐榜单:冷风机/工业冷风机/移动式冷风机/负压风机/镀锌板厂房风机/玻璃钢负压风机/永磁负压风机品质之选 - 品牌企业推荐师(官方)
  • UE5 GAS系统避坑指南:从碰撞检测到ApplyGameplayEffectSpecToSelf的完整流程详解
  • Node-RED实战:用node-red-contrib-modbus节点快速读取RS485温湿度传感器数据
  • 4D 成像雷达深度解析 | 全网独家复现篇 | 原理拆解、代码实现、车企量产落地与典型应用案例
  • Ava Studio 技术架构与短视频广告批量生成原理解析
  • 线上人气评选如何制作?云众评选小程序三分钟搞定 - 微信投票小程序
  • PHP与Redis缓存实践完整方案
  • 2026汇泉胶粉选购指南:纸品包装全场景裱纸胶粉权威推荐 - 速递信息
  • 《2026 年 IT 行业最有前途的 7 个方向,选错了再努力也没用》
  • 如何彻底解决Switch手柄问题:Joy-Con Toolkit完整指南
  • attention 的mask 的简单实现
  • 从Input.GetAxis到手感调优:详解Unity中移动与旋转的平滑处理与参数配置
  • ChatGPT核心原理、高阶应用与提示词实战指南
  • 2026四川绵阳江油手机店哪家好?二手手机、手机分期去哪家? - 博客万
  • 如何平衡CSP-J备赛与校内学习
  • 变更管理在软考中级系统集成项目管理工程师考试中占多少分 - 众智商学院官方
  • 【Gemini推送通知优化实战指南】:20年专家亲授5大性能瓶颈与98%送达率提升方案
  • 3步解锁经典游戏潜能:WarcraftHelper魔兽争霸III终极优化方案
  • 全国自闭症全托机构实力排行:合规与服务质量测评 - 奔跑123
  • 从ChatGPT-5到AGI:技术演进、行业重塑与个人应对指南
  • 2026沃尔玛购物卡回收避坑|别再低价贱卖!4大平台实测,差距太大了 - 资讯快报
  • 长沙二手手表回收攻略,实地走访多家门店,教你选对靠谱渠道 - 合扬奢侈品交易中心
  • MySQL 事务管理全解:从 ACID 特性、隔离级别到 MVCC 底层原理
  • MEMS 加速度计耳机敲击算法
  • 热点警示:毕业论文抽查力度加大,这8款AI毕业论文工具成毕业生“刚需” - 逢君学术-AI论文写作
  • 比特币的浩克体质:能源消耗、安全机制与AI量子计算博弈