【PostgreSQL】数据基石:PostgreSQL的数据类型与表结构设计

目录

 核心数据类型深入探索

基础数值与文本类型

日期与时间类型

特殊与复合类型

JSON与HSTORE

表的创建、修改与管理

创建与修改表结构

索引与性能优化

约束与数据完整性


 核心数据类型深入探索

     PostgreSQL以其多样化的数据类型著称,不仅包括标准SQL数据类型,还有许多独特的高级类型,为数据建模提供了极高的灵活性。

基础数值与文本类型
  • 整型与浮点型integerbigint满足大多数整数需求,而realdouble precision适合存储浮点数。例如,创建一个存储交易金额的表:

    CREATE TABLE transactions (
      transaction_id serial PRIMARY KEY,
      amount numeric(10, 2) NOT NULL
    );

    字符类型varchar(n)用于变长字符串,text则无长度限制。使用char(n)固定长度字符串时需谨慎,因为未填满的空间会被空格填充。

    CREATE TABLE notes (
      note_id serial PRIMARY KEY,
      content text
    );
    日期与时间类型

    PostgreSQL提供多种时间相关类型,如timestampdatetime,且支持时区。例如,记录事件发生的时间戳:

    CREATE TABLE log_entries (
      entry_id serial PRIMARY KEY,
      event_time timestamp with time zone DEFAULT now()
    );
    特殊与复合类型
  • 数组类型:允许在单个列中存储同一类型元素的集合,如存储多电话号码。

    CREATE TABLE contacts (
      contact_id serial PRIMARY KEY,
      phone_numbers varchar(15)[]
    );

    枚举类型:用于存储预定义的值列表,增强数据一致性。

    CREATE TYPE status AS ENUM ('active', 'inactive', 'pending');
    
    CREATE TABLE users (
      user_id serial PRIMARY KEY,
      status status NOT NULL DEFAULT 'pending'
    );
    JSON与HSTORE
  • JSON & JSONB:原生支持JSON数据存储,其中JSONB提供了更好的查询性能。
CREATE TABLE products (
  product_id serial PRIMARY KEY,
  details jsonb
);
  • HSTORE:轻量级键值对存储,适用于简单元数据。
    CREATE TABLE books (
      book_id serial PRIMARY KEY,
      meta_data hstore
    );
    表的创建、修改与管理

          理解如何有效地创建、调整表结构,以及如何管理索引和约束,是数据库设计的关键。

    创建与修改表结构
  • 表创建:明确指定列的数据类型、约束条件,如外键。
CREATE TABLE orders (
  order_id serial PRIMARY KEY,
  customer_id integer REFERENCES customers(customer_id),
  order_date date NOT NULL
);
  • 修改表:使用ALTER TABLE添加新列、修改列属性或删除列。
    ALTER TABLE orders ADD COLUMN total_amount numeric(10, 2);
    索引与性能优化
  • 索引策略:基于查询模式选择合适类型的索引,如B-tree用于等值查询,GIN用于全文搜索。

    CREATE INDEX idx_orders_customer_id ON orders USING btree (customer_id);
  • 覆盖索引:当索引包含查询所需的所有列时,可以避免访问表数据,提升性能。

  • 常见约束:唯一约束(UNIQUE)、非空约束(NOT NULL)、检查约束(CHECK)确保数据质量。

约束与数据完整性

常见约束:唯一约束(UNIQUE)、非空约束(NOT NULL)、检查约束(CHECK)确保数据质量。

ALTER TABLE users ADD CONSTRAINT unique_email UNIQUE (email);

外键约束:维护引用完整性,链接相关表。 

ALTER TABLE orders ADD CONSTRAINT fk_customer
  FOREIGN KEY (customer_id) REFERENCES customers(customer_id);

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/768942.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

昇思25天学习打卡营第04天 | 数据集 Dataset

昇思25天学习打卡营第04天 | 数据集 Dataset 文章目录 昇思25天学习打卡营第04天 | 数据集 Dataset数据集加载数据集迭代数据集的变换shufflemapbatch 自定义数据集可随机访问数据集对象可迭代数据集生成器 总结打卡 数据集Dataset对原始数据进行封装、变换,为神经网…

光照老化试验箱在化工产品暴晒测试中的应用

概述 光照老化试验箱是一种模拟自然光照条件下材料老化情况的实验设备,广泛应用于化工、建材、电子、汽车等行业中对材料的耐候性、耐光性能等进行测试。通过模拟日光中的紫外线和温度等环境因素,加速材料老化过程,以此评估材料在长期使用中…

C语言编程-基于单链表实现贪吃蛇游戏

基于单链表实现贪吃蛇游戏 1.定义结构体参数 蛇行走的方向 蛇行走的状态 蛇身节点类 维护蛇的结构体型 2.游戏运行前预备工作 定位光标位置 游戏欢迎界面 绘制游戏地图(边界) 初始化游戏中的蛇身 创建食物 3.游戏运行 下一个位置是食物,就吃掉…

阿里云 SAE 助力修正商城 3 周内提升系统承载能力 20 倍,轻松应对春晚流量

作者:赵世振、刘松伟、朱坪" 从了解阿里云 SAE 到使用 SAE 进行应用架构升级共经历 3 周,这 3 周我们系统能承载的 QPS 从 5000 增强到 10 万,提升 20 倍,轻松应对了春晚大促流量洪波。并且,SAE 还帮助我们降低了…

超详细:安装Linux系统、虚拟现实教程

文章目录 一、如何下载并使用VMware虚拟机1.百度搜索vmware2.进入官网点击Workstation Pro链接3.博通注册对应的账号4.博通填写用户名、密码后直接登录会跳转到博通登录页5.个人使用选择个人版 二、国内镜像网站下载(Centos版本)三、镜像系统的安装1.打开…

PCL小笔记

一、常用概念 1,过滤器Filters 消除噪音 2,特征Features 集合点属性:曲面的曲率估计和查询点的法线 通过k-neighborhood计算得到这两个属性作为特征 查找方法:KD-tress、八叉树等 3,关键点Keypoints 可以利用明确标…

Halcon支持向量机

一 支持向量机 1 支持向量机介绍: 支持向量机(Support Vector Machine,SVM)是Corinna Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别表现出许多特有的优势。 2 支持向量机原理: 在n维空间中找到一个分类超平面…

4.整合第三方技术【整合JUnit】

目录 1.创建项目: 2.导入测试对应的starter 3.添加测试对象 3.1 添加Prodcut接口文件 3.2 添加ProdcutImpl文件 3.3 测试类添加测试文件,并开始测试 4.测试类文件解析 4.1.测试类使用SpringBootTest修饰 4.2使用自动装配的形式添加要测试的对象 1.…

LeetCode 算法:路径总和 III c++

原题链接🔗:路径总和 III 难度:中等⭐️⭐️ 题目 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶…

大模型与机器人精彩碰撞-7月5日晚上八点不见不散!

在瞬息万变的科技时代,新兴人工智能和机器人技术的结合正在引领新一轮的创新浪潮。你是否想成为未来科技的领航者?你是否想了解最前沿的AI与机器人技术?行麦科技重磅推出的“AIGC时代的生存法则”AI系列课,将为你揭开大模型与机器…

数据库操作语言(DML)

数据库操作语言(DML) 文章目录 数据库操作语言(DML)一、四种操作二、数据的插入(增)三、数据的删除(删)四、数据的修改(改)五、数据的查询(查&…

科研与英文学术论文写作指南——于静老师课程

看到了一个特别棒的科研与英文学术论文写作指南,理论框架实例。主讲人是中科院信息工程研究所的于静老师。推荐理由:写论文和读论文或者讲论文是完全不一样的,即使现在还没有发过论文,但是通过于老师的课程,会给后续再…

2024最新Stable Diffusion【插件篇】:SD提示词智能生成插件教程!

前言 今天我们介绍几款可以自动生成提示词的插件。所谓智能生成提示词,就是我们只需要输入非常少量的关键字,插件就会根据关键词提示信息帮助我们生成一系列关键字或者句子作为提示词。下面来和我一起看看吧。 一. SD智能提示词工具 之前的文章中和大…

Java学习 - Redis-Cluster

为什么需要集群 为了高的处理速度 单机redis,官网宣传处理速度为10万命令/秒如果业务需要更高的处理速度,则需要使用集群 为了存储大量数据 一般机器的内存为16-256G如果想要存储更大量的数据,则需要使用集群 分布式之数据分区 因为数据需…

KEYSIGHT是德科技 E5063A ENA 系列网络分析仪

E5063A ENA 矢量网络分析仪 18GHz 2端口 降低无源射频元器件的测试成本 Keysight E5063A ENA 是一款经济适用的台式矢量网络分析仪,可用于测试简单的无源元器件,例如频率最高达到 18 GHz 的天线、滤波器、电缆或连接器。 作为业界闻名的 ENA 系列…

工具:颜色查询 / CMYK颜色查询RGB、HSL、HSV、XYZ的颜色值

一、颜色查询-网址 RGB(90,223,9),#5ADF09 颜色查询,颜色梯度,色彩搭配,色盲模拟 - RGB颜色查询 - 在线工具 - Fontke.com 二、CMYK颜色查询RGB、HSL、HSV、XYZ的颜色值 三、颜色梯度 四、色彩搭配 五、色盲模拟 六、欢迎交流指正

程序员的加油站,各类技术文章,可视化技术,在线源码资源,在线实用工具,数据爬虫接口持续集成更新中

先挂网址:https://wheart.cn 可视化大屏模板与设计,在线预览 上百例可视化模板 技术文章、资源下载等各类资源导航页 echart在线实用demo 各种在线工具提升开发效率 echart在线代码模板

服务器之BIOS基础知识总结

1.BIOS是什么? BIOS全称Basic Input Output System,即基本输入输出系统,是固化在服务器主板的专用ROM上,加载在服务器硬件系统上最基本的运行程序,它位于服务器硬件和OS之间,在服务器启动过程中首先运行&am…

配置Uptime Kuma固定前缀

在做ICT集成项目时,遇到需要对现网接口进行拨测的需求。搜索后尝试使用开源的Uptime Kuma组件完成现网接口拨测。 但该项目有个问题就是默认不支持配置固定前缀,这对现网进行请求转发会造成较大的影响。通过查看该项目的github后找到了问题的解决方案。S…

助力游戏实现应用内运营闭环,融云游戏社交方案升级!

通信能力在所有应用场景都是必备组件,这源于社交属性带给应用的增长神话。 在游戏场景,玩家从少数核心向大众用户泛化扩展的过程,就是游戏深度融合社交能力的过程。 从单机到联机,游戏乐趣的升级 1996 年,游戏界顶流…