位置: 编程技术 - 正文

PostgreSQL教程(一):数据表详解

编辑:rootadmin

推荐整理分享PostgreSQL教程(一):数据表详解,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

一、表的定义:

对于任何一种关系型数据库而言,表都是数据存储的最核心、最基础的对象单元。现在就让我们从这里起步吧。 1. 创建表: 2. 删除表: 3. 创建带有缺省值的表: 输出为: 4. 约束: 检查约束是表中最为常见的约束类型,它允许你声明在某个字段里的数值必须满足一个布尔表达式。不仅如此,我们也可以声明表级别的检查约束。 下面的约束是非空约束,即约束的字段不能插入空值,或者是将已有数据更新为空值。 如果一个字段中存在多个约束,在定义时可以不用考虑约束的声明顺序。 唯一性约束,即指定的字段不能插入重复值,或者是将某一记录的值更新为当前表中的已有值。 为表中的多个字段定义联合唯一性。 为唯一性约束命名。 在插入数据时,空值(NULL)之间被视为不相等的数据,因此对于某一唯一性字段,可以多次插入空值。然而需要注意的是,这一规则并不是被所有数据库都遵守,因此在进行数据库移植时可能会造成一定的麻烦。 5. 主键和外键: 从技术上来讲,主键约束只是唯一约束和非空约束的组合。 和唯一性约束一样,主键可以同时作用于多个字段,形成联合主键: 外键约束声明一个字段(或者一组字段)的数值必须匹配另外一个表中某些行出现的数值。 我们把这个行为称做两个相关表之间的参考完整性。 当多个表之间存在了主外键的参考性约束关系时,如果想删除被应用表(主键表)中的某行记录,由于该行记录的主键字段值可能正在被其引用表(外键表)中某条记录所关联,所以删除操作将会失败。如果想完成此操作,一个显而易见的方法是先删除引用表中和该记录关联的行,之后再删除被引用表中的该行记录。然而需要说明的是,PostgreSQL为我们提供了更为方便的方式完成此类操作。 限制和级联删除是两种最常见的选项。RESTRICT 禁止删除被引用的行。 NO ACTION 的意思是如果在检查约束的时候,如果还存在任何引用行,则抛出错误; 如果你不声明任何东西,那么它就是缺省的行为。(这两个选择的实际区别是,NO ACTION 允许约束检查推迟到事务的晚些时候,而 RESTRICT 不行。) CASCADE声明在删除一个被引用的行的时候,引用它的行也会被自动删除掉。 在外键字段上的动作还有两个选项: SET NULL 和 SET DEFAULT。 这样会导致在被引用行删除的时候,引用它们的字段分别设置为空或者缺省值。 请注意这些选项并不能让你逃脱被观察和约束的境地。比如,如果一个动作声明 SET DEFAULT,但是缺省值并不能满足外键,那么动作就会失败。类似ON DELETE,还有ON UPDATE 选项,它是在被引用字段修改(更新)的时候调用的。可用的动作是一样的。

二、系统字段:

PostgreSQL教程(一):数据表详解

PostgreSQL的每个数据表中都包含几个隐含定义的系统字段。因此,这些名字不能用于用户定义的字段名。这些系统字段的功能有些类似于Oracle中的rownum和rowid等。 oid: 行的对象标识符(对象ID)。这个字段只有在创建表的时候使用了WITH OIDS,或者是设置了配置参数default_with_oids时出现。这个字段的类型是oid(和字段同名)。 tableoid: 包含本行的表的OID。这个字段对那些从继承层次中选取的查询特别有用,因为如果没有它的话,我们就很难说明一行来自哪个独立的表。tableoid可以和pg_class的oid字段连接起来获取表名字。 xmin: 插入该行版本的事务的标识(事务ID)。 cmin: 在插入事务内部的命令标识(从零开始)。 xmax: 删除事务的标识(事务ID),如果不是被删除的行版本,那么是零。 cmax: 在删除事务内部的命令标识符,或者是零。 ctid: 一个行版本在它所处的表内的物理位置。请注意,尽管ctid可以用于非常快速地定位行版本,但每次VACUUM FULL之后,一个行的ctid都会被更新或者移动。因此ctid是不能作为长期的行标识符的。 OID是位的量,是在同一个集群内通用的计数器上赋值的。对于一个大型或者长时间使用的数据库,这个计数器是有可能重叠的。因此,假设OID是唯一的是非常错误的,除非你自己采取了措施来保证它们是唯一的。如果你需要标识表中的行,我们强烈建议使用序列号生成器。 三、表的修改:

1. 增加字段: 新增的字段对于表中已经存在的行而言最初将先填充所给出的缺省值(如果你没有声明DEFAULT子句,那么缺省是空值)。 在新增字段时,可以同时给该字段指定约束。 2. 删除字段: 如果该表为被引用表,该字段为被引用字段,那么上面的删除操作将会失败。如果要想在删除被引用字段的同时级联的删除其所有引用字段,可以采用下面的语法形式。 3. 增加约束: 4. 删除约束: 对于显示命名的约束,可以根据其名称直接删除,对于隐式自动命名的约束,可以通过psql的d tablename来获取该约束的名字。和删除字段一样,如果你想删除有着被依赖关系地约束,你需要用CASCADE。一个例子是某个外键约束依赖被引用字段上的唯一约束或者主键约束。如: 和其他约束不同的是,非空约束没有名字,因此只能通过下面的方式删除: 5. 改变字段的缺省值: 在为已有字段添加缺省值时,不会影响任何表中现有的数据行, 它只是为将来INSERT命令改变缺省值。 下面为删除缺省值: 6. 修改字段的数据类型: 只有在字段里现有的每个项都可以用一个隐含的类型转换转换成新的类型时才可能成功。比如当前的数据都是整型,而转换的目标类型为numeric或varchar,这样的转换一般都可以成功。与此同时,PostgreSQL还将试图把字段的缺省值(如果存在)转换成新的类型, 还有涉及该字段的任何约束。但是这些转换可能失败,或者可能生成奇怪的结果。 在修改某字段类型之前,你最好删除那些约束,然后再把自己手工修改过的添加上去。 7. 修改字段名: 8. 修改表名: 四、权限:

只有表的所有者才能修改或者删除表的权限。要赋予一个权限,我们使用GRANT命令,要撤销一个权限,使用REVOKE命令。 需要指出的是,PUBLIC是特殊"用户"可以用于将权限赋予系统中的每一个用户。在声明权限的位置写ALL则将所有的与该对象类型相关的权限都赋予出去。 最初,只有对象所有者(或者超级用户)可以赋予或者撤销对象的权限。但是,我们可以赋予一个"with grant option"权限,这样就给接受权限的人以授予该权限给其它人的权限。如果授予选项后来被撤销,那么所有那些从这个接受者接受了权限的用户(直接或者通过级连的授权)都将失去该权限。

这里需要特别说明的是,该博客中的大部分案例和段落均取自于PostgreSQL中文文档,如转载本系列博客,请同样注明该出处。

PostgreSQL教程(三):表的继承和分区表详解 一、表的继承:这个概念对于很多已经熟悉其他数据库编程的开发人员而言会多少有些陌生,然而它的实现方式和设计原理却是简单易懂,现在就让我

PostgreSQL教程(二):模式Schema详解 一个数据库包含一个或多个命名的模式,模式又包含表。模式还包含其它命名的对象,包括数据类型、函数,以及操作符。同一个对象名可以在不同的

PostgreSQL教程(四):数据类型详解 一、数值类型:下面是PostgreSQL所支持的数值类型的列表和简单说明:1.整数类型:类型smallint、integer和bigint存储各种范围的全部是数字的数,也就是没

标签: PostgreSQL教程(一):数据表详解

本文链接地址:https://www.jiuchutong.com/biancheng/312237.html 转载请保留说明!

上一篇:Postgresql ALTER语句常用操作小结

下一篇:PostgreSQL教程(三):表的继承和分区表详解

  • 应交税费转结哪里去
  • 注册资本印花税减半征收政策
  • 暂估入库后怎么冲回
  • 现金流量表和其他表的勾稽关系
  • 跨月的增值税专用发票未抵扣怎么作废
  • 培训学校可以不可以用燃气取暖炉
  • 内账会计会承担法律责任吗
  • 待认证进项税额是什么情况下用的
  • 餐饮业税负上升有什么原因
  • 出口货物发生退运是征税还是免税
  • 收到税收返还的会计处理
  • 可供出售金融资产会计处理
  • 建筑企业预收款开票
  • 工会签约有什么好处
  • 工资薪金总额包括年终奖吗
  • 捐赠的所得税怎么处理
  • 合同印花税进哪个科目
  • 税控专用发票和普通发票
  • 朋友借资质汇款到公司要收税吗?
  • 纳税人在同一地级行政范围内跨县经营
  • 汽车配件税收分类编码
  • 补贴与工资薪金一起发放,属于福利费,还是纳入工资薪金总额税前扣除?
  • 增值税申报内容及步骤
  • 小配件出口怎么报关
  • 交易性金融资产和长期股权投资的区别
  • 跨市工程预交的税怎么算
  • 融资融券主要是哪些对象
  • 哪些费用可以税前扣除
  • 材料未到,货款尚未支付
  • win11怎么把默认c盘改到d盘
  • 应交增值税的处理
  • vue修改打包后静态资源路径的修改
  • 混合成本的分解方法很多,通常有
  • 关于企业财务会计的说法正确的是
  • php代码生成
  • 滴滴发票4月1日怎么开
  • h5支付功能
  • 收到预付购货款
  • 内部结算属于什么科目类别
  • 不良品扣款应入哪个科目
  • 为什么要扩展
  • 公司主营业务怎么介绍
  • 收到商业承兑汇票怎么兑现
  • 出租固定资产的租金收入
  • 子公司如何向母公司申请用印
  • 社保的残保金的用途
  • 汽车4s店,厂家返修
  • 企业重组的特殊性税务处理例题
  • 外管证超期
  • 五种差异化收费方式
  • 信用卡的还款方式怎么查
  • 设备转固的前提条件
  • 小规模纳税人上限
  • 当月的印花税需要交吗
  • 关于发票冲账应该怎么写
  • 更新改造过程中的固定资产需要计提折旧吗
  • 赠送的产品价格为0怎么做账
  • 发票 发票专用章
  • 现金折扣与商业折扣的计算
  • 新收入准则要求
  • 其他商业项目
  • 记账凭证的附件数可以手改吗
  • 清空表内数据语句
  • usrmlnka.exe - usrmlnka进程是什么意思
  • 电脑出现windows怎么办
  • linux awk nr
  • 打开字符面板
  • Win10 Mobile 14283红石预览版有哪些机型可以安装?
  • css教程笔记
  • 用android做一个简单的软件
  • 安卓广播的作用
  • 安卓的通用在哪里
  • js判断上传图片宽高大小
  • three.js碰撞检测
  • JavaScript中getUTCSeconds()方法的使用详解
  • unity教程 知乎
  • js当前时间格式化
  • 辽宁地方税务网站官网
  • 山东省关于公务员社会信用考察的规定
  • 游艇车船税怎么收
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设