在 Navicat 17 中扩展 PostgreSQL 数据类型 | 创建自定义域

定义域

以适当的格式存储数据可以确保数据完整性,防止错误,优化性能,并通过实施验证规则和支持高效数据管理来维护系统间的一致性。基于这些原因,顶级关系数据库(如PostgreSQL)提供了多种数据类型。此外,PostgreSQL允许通过“CREATE DOMAIN”和“CREATE TYPE”语句创建自定义数据类型,使开发人员能够扩展数据类型,以加强针对特定应用程序的数据验证、完整性和一致性。在今天的博文中,我们将学习如何通过 Navicat Premium 17 为免费的 DVD Rental database 创建一个自定义域。第二部分将介绍类型。

CREATE DOMAIN 和 CREATE TYPE 的快速比较

虽然 CREATE DOMAIN 和 CREATE TYPE 语句都可以用来创建用户定义的数据类型,但有一些关键区别需要注意:

  • CREATE DOMAIN 创建用户定义的数据类型,并带有 NOT NULL、CHECK 等约束条件。
  • CREATE TYPE 创建一个复合类型,作为存储过程中返回值的数据类型。

创建电子邮件定义域

定义域允许你在多个表中定义可重复使用的验证规则,从而集中约束管理,例如创建一个标准约束,防止 NULL 值,并为特定字段类型删减空白。下面的示例为电子邮件地址创建了一个带有验证检查的域:

CREATE DOMAIN email AS VARCHAR(255)
CHECK (VALUE ~ '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}$'
);-- Use in a table definition
CREATE TABLE customer_contacts (customer_id INT,contact_email email
);

Navicat Premium 17 和 Navicat for PostgreSQL 17 都提供一个基于图形用户界面的工具,用于生成定义域和类型,而无需用户了解所有确切的语法。你可以在主工具栏的“其他”下找到这两个工具。(这两个菜单项都在下面用 红色 框突出显示):

others_context_menu (45K)

其中的“域”工具包括四个选项卡:常规,检查,注释和 SQL 预览。

常规属性

所有定义域都基于一种基础类型。在本例中,就是 VARCHAR。选择“基础类型类别”中的“Base Type”后,我们可以从两个基础类型下拉菜单中选择“pg_catalog”和“varchar”。我们还需要确保 VARCHAR 的长度为 255。下面是包含所有这些信息的常规选项卡:

email_domain_general_tab (39K)

检查

在下一个选项卡中,我们可以定义一个或多个检查,以便在有人试图为我们的类型赋值时执行。 我们的检查将根据 RegEx(正则表达式)测试值:

email_domain_checks_tab (21K)

SQL 预览

此时,我们既可以继续保存域,执行生成的 CREATE DOMAIN 语句,也可以单击 SQL 预览选项卡,在保存之前查看语句:

email_domain_preview_and_save_as_dialog (38K)

请注意,域名是“无标题”,因为我们还没有保存定义。这是正常现象。

在表中使用电子邮件定义域

确认“电子邮件”域是否已创建的最佳方法是在表中试用。“dvdrental”数据库中的“staff”表包含一个电子邮件域。目前,它将值存储为 VARCHAR,没有进行任何验证检查。我们可以从表设计器的类型下拉菜单中选择“(Domain)”选项,然后为对象类型选择“public”和“email”,从而将类型更改为域:

setting_column_to_email_domain (92K)

保存表后,如果试图更改(或添加)不是有效电子邮件地址的值,就会违反约束:

failed_check (63K)

结语

通过为免费 dvdrental 数据库创建自定义域,我们了解了如何通过域来定义可重复使用的验证规则以帮助集中约束管理。在第 2 部分,我们将使用 Navicat Premium 17 的“类型”工具创建我们自己的类型。

PostgreSQL 相关文章

为什么在下一个 IT 项目中选择使用 PostgreSQL

为什么说Navicat与PostgreSQL是数据库行业的中流砥柱?

探索 PostgreSQL 的高级数据类型 | 数组和枚举

探索 PostgreSQL 的高级数据类型 | DML/SQL 语句

PostgreSQL 的实体化视图介绍

PostgreSQL 实体化视图的使用

PostgreSQL 中的多版本并发控制

Navicat 面向 PostgreSQL 查询超时的工具解决方案

在 Navicat Monitor 3 中查看 PostgreSQL 实例详细信息

使用 Navicat Monitor 3 跟踪 PostgreSQL 实例查询

使用 Navicat Monitor 3.0 监控 PostgreSQL

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

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

相关文章

CentOS 环境下 Docker、Jenkins、GitLab 和 Kubernetes 安装与配置

以下是针对 CentOS 系统的安装和配置步骤,涵盖 Docker、Jenkins、GitLab 和 Kubernetes (K8s),以及 CI/CD 流程的配置。通过这些步骤,可以搭建一个企业级 DevOps 环境。 1. 安装和配置 Docker 1.1 安装 Docker(CentOS 示例&…

细说机器学习数学优化之梯度下降

系列文章目录 第一章:Python 机器学习数学优化之梯度下降 目录 系列文章目录 前言 一、基本原理: 二、使用步骤: 三、梯度下降类型: 四、应用场景: 总结 前言 梯度下降(Gradient Descent)是人工…

Postgresql的三种备份方式_postgresql备份

这种方式可以在数据库正在使用的时候进行完整一致的备份,并不阻塞其它用户对数据库的访问。它会产生一个脚本文件,里面包含备份开始时,已创建的各种数据库对象的SQL语句和每个表中的数据。可以使用数据库提供的工具pg_dumpall和pg_dump来进行…

青少年编程与数学 02-008 Pyhon语言编程基础 22课题、类的定义和使用

青少年编程与数学 02-008 Pyhon语言编程基础 22课题、类的定义和使用 一、类类的定义和使用示例 二、定义1. 类定义语法2. 属性和方法3. 构造器和初始化4. 实例化5. 类变量和实例变量6. 类方法和静态方法7. 继承8. 多态总结 三、使用1. 创建类的实例2. 访问属性3. 调用方法4. 修…

[Collection与数据结构] B树与B+树

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

【基于SprintBoot+Mybatis+Mysql】电脑商城项目之修改密码和个人资料

🧸安清h:个人主页 🎥个人专栏:【Spring篇】【计算机网络】【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🎃1.修改密码 -持久…

蓝桥杯小白打卡第二天

789. 数的范围 题目描述 给定一个按照升序排列的长度为 n n n 的整数数组,以及 q q q 个查询。 对于每个查询,返回一个元素 k k k 的起始位置和终止位置(位置从 0 0 0 开始计数)。 如果数组中不存在该元素,则返…

Vue WebSocket简单应用 ws

webSocket应用 <template><div></div> </template><script> import { getToken } from "/utils/auth"; export default {data() {return {url: "",Socket: null, //socket对象lockReconnect: false, //锁定拒绝重连close: …

【Elasticsearch】terms聚合误差问题

Elasticsearch中的聚合查询在某些情况下确实可能存在误差&#xff0c;尤其是在处理分布式数据和大量唯一值时。这种误差主要来源于以下几个方面&#xff1a; 1.分片数据的局部性 Elasticsearch的索引通常被分成多个分片&#xff0c;每个分片独立地计算聚合结果。由于数据在分…

电脑可以自己换显卡吗?怎么操作

电脑是否可以自己换显卡主要取决于电脑的类型&#xff08;台式机或笔记本&#xff09;以及电脑的硬件配置。以下是对这一问题的详细解答及操作步骤&#xff1a; 一、判断电脑是否支持更换显卡 台式机&#xff1a;大多数台式电脑都支持更换显卡。只要主板上有PCIe插槽&#xff…

element-plus+vue3前端如何根据name进行搜索查到符合条件的数据

界面如图&#xff0c;下面的区域是接口给的所有的&#xff0c;希望前端根据输入的内容自己去匹配。 我是使用的element-plusvue3ts的写法。 <el-input v-model"filters.region" placeholder"输入区域搜索" keyup"filterRegion(filters.region)&q…

从离散傅里叶变换(DFT)到快速傅里叶变换(FFT)

摘要 离散傅里叶变换&#xff08;DFT&#xff09;是数字信号处理领域中分析信号频域特性的重要工具&#xff0c;但直接计算DFT的复杂度较高&#xff0c;限制了其在大规模数据处理中的应用。快速傅里叶变换&#xff08;FFT&#xff09;的出现显著降低了计算复杂度&#xff0c;极…

Oracle常用响应文件介绍(19c)

文章目录 1. 数据库安装响应文件1.1 响应文件模板1.2 参数说明1.2.1 响应文件版本参数1.2.2 安装选项参数1.2.3 Unix 用户组参数1.2.4 软件清单参数1.2.5 安装目录参数1.2.6 安装版本参数1.2.7 特权操作权限组指定参数1.2.8 Root脚本执行配置参数1.2.9 Grid选项配置参数1.2.10 …

【3分钟极速部署】在本地快速部署deepseek

第一步&#xff0c;找到网站&#xff0c;下载&#xff1a; 首先找到Ollama &#xff0c; 根据自己的电脑下载对应的版本 。 我个人用的是Windows 我就先尝试用Windows版本了 &#xff0c;文件不是很大&#xff0c;下载也比较的快 第二部就是安装了 &#xff1a; 安装完成后提示…

基于Typescript,使用Vite构建融合Vue.js的Babylon.js开发环境

一、创建Vite项目 使用Vite初始化一个VueTypeScript项目&#xff1a; npm create vitelatest my-babylon-app -- --template vue-ts cd my-babylon-app npm create vitelatest my-babylon-app -- --template vue-ts 命令用于快速创建一个基于 Vite 的 Vue TypeScript 项目。…

Zookeeper入门部署(单点与集群)

本篇文章基于docker方式部署zookeeper集群&#xff0c;请先安装docker 目录 1. docker初期准备 2.启动zookeeper 2.1 单点部署 2.2 集群部署 3. Linux脚本实现快速切换启动关闭 1. docker初期准备 拉取zookeeper镜像 docker pull zookeeper:3.5.6 如果拉取时间过长&#xf…

QMK启用摇杆和鼠标按键功能

虽然选择了触摸屏&#xff0c;我仍选择为机械键盘嵌入摇杆模块&#xff0c;这本质上是对"操作连续性"的执着。   值得深思的是&#xff0c;本次开发过程中借助DeepSeek的代码生成与逻辑推理&#xff0c;其展现的能力已然颠覆传统编程范式&#xff0c;需求描述可自动…

Qt的QTableWidget类的声明定义和使用

QTableWidget类的声明定义 QTableWidget 是 Qt 框架中的一个类&#xff0c;它继承自 QAbstractItemView 并提供了用于显示和操作二维表格数据的接口。这个类不是由用户直接声明的&#xff0c;而是由 Qt 库提供的。你可以在你的 Qt 应用程序中通过包含相应的头文件来使用它。 …

Linux里的容器被OOM killed的两种情况

生产上遇到过几次容器实例被OOM的现象&#xff0c;总结一下LInux OOM的两种触发条件。我的虚拟机是ubuntu 24.0.4版本&#xff0c;分配4G内存&#xff0c;在我的虚拟机上复现这两种case。 一 宿主机物理内存不够 当linux上所有应用程序的内存需求加起来超出了物理内存&#x…

使用Express.js和SQLite3构建简单TODO应用的后端API

使用Express.js和SQLite3构建简单TODO应用的后端API 引言环境准备代码解析1. 导入必要的模块2. 创建Express应用实例3. 设置数据库连接4. 初始化数据库表5. 配置中间件6. 定义数据接口7. 定义路由7.1 获取所有TODO项7.2 创建TODO项7.3 更新TODO项7.4 删除TODO项 8. 启动服务器 …