【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_customerFOREIGN KEY (customer_id) REFERENCES customers(customer_id);

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用可蒸发的电介质流体冷却IGBT

每天一篇行业发展资讯,让大家更及时了解外面的世界。 更多资讯,请关注B站/公众号【莱歌数字】,有视频教程~~ 电子系统的单相液冷却已经广泛应用了50多年。 流体广泛应用于不同的工业:电力电子中的介质油;企业服务器…

微软Win10 22H2六月更新补丁KB5039299来了!附完整更新日志

系统之家于6月26日发出最新报道,微软为 Windows 10 用户发布了六月的安全更新补丁KB5039299。22H2用户升级系统后,会发现版本号升至 19045.4598。此次更新针对影响任务栏上应用跳转列表、默认日语输入法编辑器等多个问题进行修复。接下来跟随小编看看此次…

GPT-5:博士级大语言模型重塑工作与生活的未来

随着人工智能技术的飞速发展,新一代大语言模型GPT-5即将闪亮登场。作为博士级别的智能语言模型,GPT-5不仅代表了自然语言处理领域的最新成就,更预示着我们的工作和日常生活将迎来一场深刻的变革。 一、GPT-5带来的深远影响 GPT-5的登场&…

主机服务器被入侵怎么办

主机服务器被入侵怎么办?在数字化时代,主机安全是企业运营不可或缺的一环。然而,随着网络攻击手段的不断升级,主机被入侵的风险也日益增加。一旦主机被入侵,不仅可能导致数据泄露、业务中断,还可能对企业声誉和利益造…

红酒哲学:品味流转时光,探寻生活之深邃奥秘

在繁华的都市中,我们时常被各种声音和色彩所包围,追求着速度与激情。然而,在这喧嚣之中,总有那么一刻,我们渴望静下心来,品味一份不同的宁静与深度。这时,一杯雷盛红酒便成了我们与内心对话的桥…

免费分享:中国1:250万地质图(附下载方法)

中国1:250万地质图反映了中国区域地质构造面貌和基本特征,表示了中国区域地质的特色,地质编图的标准化程度较高,地质图的编制过程中充分采用了信息技术,反映了地质调查与科研的若干新进展与认识。 数据简介 本数据为空…

lmdeploy部署chatglm3模型并对话

lmdeploy部署chatglm3模型并对话 环境准备创建虚拟环境安装组件下载模型 chat启动模型并对话启动成api_server服务并对话启动成gradio服务 环境准备 使用30% A100 来运行chatglm3模型,采用lmdeploy来启动。 创建虚拟环境 # 创建虚拟环境 conda create -n langcha…

关于bash脚本中extglob不生效的问题

在bash脚本中,我们可以通过: shopt -s extglob 为后续代码提供通配功能。 但如果在block中设置,将不会生效。如: if true; thenshopt -s extglob... fi这是因为: you cannot put shopt -s extglob inside a statement…

node初始化设置(简单高效)

npm config set prefix "E:\nodejs\node_global" npm config set cache "E:\nodejs\node_cache" 我比较喜欢实用nrm,所以直接指定了nrm的路径

中国历史气象灾害预警数据集

中国历史气象灾害、预警风险区数据,包括:雷暴预警、大雾预警、洪涝风险、地质灾害趋势预测分区、山洪风险、森林火险、暴雨范围、大雨范围、地质风险、高温风险、低温冻害灾情、低温冷害和雪灾等。属性表包括各预警类型、具体时间、时效等。数据从国家突…

【八股系列】探索响应式布局的奥秘:关键技术与实战代码示例

🎉 博客主页:【剑九 六千里-CSDN博客】 🎨 上一篇文章:【为什么组件中的 data 必须是一个函数,然后 return 一个对象,而 new Vue 实例里,data 可以直接是一个对象?】 🎠 …

使用 Elastic ELSER 和 Llama3 的 RAG(使用 Langchain)

在之前的文章 “使用 Llama 3 开源和 Elastic 构建 RAG”,我们讲到了如何使用 Liama3 来结合 Elastic ELSER 来进行 RAG。在今天的文章里,我们来详细使用一个 notebook 来展示如何在本地 Elasticsearch 部署中进行实现。 此交互式 notebook 使用 Langch…

人工智能在医学图像分割中的最新研究进展|顶刊速递·24-06-26

小罗碎碎念 今日推文主题——人工智能在医学图像分割领域中的最新研究进展。 今天的推文都来自同一个期刊——《Med Image Anal 》,最新的IF是10.7。 小罗观点 今天的六篇文献都是直接面向实际应用场景的,可以针对你自己的研究课题选择合适的文章进行阅读…

【学习】科大睿智解读ITSS通过后仍需关注和改进IT服务的原因

为了确保IT服务的质量和效率,很多企业拿到ITSS资质证书后,仍然需要持续关注和改进IT服务,科大睿智总结主要原因有以下几点: 1、随着企业发展业务和市场行情的变化,可能涉及到运维服务中新的业务流程、技术需求或者用户…

使用Java实现分布式文件系统

使用Java实现分布式文件系统 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我们来探讨如何使用Java实现一个分布式文件系统。随着数据量的爆炸…

机器学习算法(三):支持向量机(SVM)的sklearn调用

文章目录 前言一 理论1 sklearn中的核函数形式二、sklearn调用1 svm.SVC() 接口说明三 、具体示例1、简单的线性SVM例子 --- 不同C值的影响(1) 数据集(2) svm sklearn调用2、高斯核函数的SVM --- 非线性分类(1) 数据集(2) 高斯核函数的SVM3、sklearn调参技术--网格搜索…

华为云x86架构下部署mysql

华为云x86架构下部署mysql 1. 配置X86架构ESC2. 查看本系统中有没有安装mariadb相关的组件,有则卸载3. 安装mysql4. 启动mysql5. 登录MySQL,修改密码,开放访问权限 1. 配置X86架构ESC 2. 查看本系统中有没有安装mariadb相关的组件&#xff0c…

从理论到实践:工业工厂室外可燃气体报警器的校准方法

随着工业工厂对安全生产要求的不断提高,可燃气体报警器作为防范火灾、爆炸事故的重要设备,其准确性和可靠性显得尤为重要。 特别是在室外环境中,由于气候条件多变、设备老化等因素的影响,可燃气体报警器的性能可能会发生变化。因…

使用 lock4j-redis-template-spring-boot-starter 实现redis分布式锁

使用 lock4j-redis-template-spring-boot-starter 实现redis分布式锁 1. 引入依赖2. 配置 Redis3. 使用分布式锁4. 自定义锁配置5. 处理锁获取失败的情况6. 高级用法7.样例 分布式锁是一种用于在分布式系统中实现并发控制的机制。在分布式系统中,由于多个节点同时访…

grpc学习golang版( 二、入门示例)

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 文章目录 一、环境二、编写protobuf文件三、编写server服务端四、编写服务端五、测试 一、环境 确保环境已经配置完成,效果如下。不同环境可能导致后续生成的效果不一。 go version protoc --version…