以Postgresql为主,再聊聊资料库 利用自定义型态 create type 建立 typed table

先来看一张图
https://ithelp.ithome.com.tw/upload/images/20220210/20050647lsTkSwWwMU.png

简单说明一下里面的指令:

  1. 先建立一个 table 名称鲑鱼寿司,里面有两个栏位,苹果跟草莓,型态是 int 及 text.
  2. 建立 type 辣椒 , 里面的栏位是小螃蟹,根据 鲑鱼寿司table,所以小螃蟹是复合资料型态,里面就包含了苹果跟草莓.
  3. 再来利用 type 辣椒 来建立 typed table 芒果.
  4. 接着就是输入资料,这时候需要使用转型的技巧,PG可以使用 :: 运算符号,与CAST()等效.
  5. 接着是取出资料,因为是复合资料型态,所以需要用()包住小螃蟹.

看到这里,也许会有疑问.这种 typed table 有何用处?
先来看
https://ithelp.ithome.com.tw/upload/images/20220210/20050647Q6Bkt5rgIF.png
当我们要对辣椒增加属性时,因为有 typed table 的关系,是不能这样修改,要用 CASCADE.
有点类似关联限制.
接着我们使用辣椒再建立一个table 西瓜.
然後再增加辣椒的属性.
https://ithelp.ithome.com.tw/upload/images/20220210/200506474iTziT15TH.png

後面再做查询,可以看到table的栏位是 小螃蟹 与 奇异果.
这样的关系限制,有利於我们在系统中,保持栏位的一致性.就不会改了芒果忘了西瓜.

在PG的information_schema.tables 里面也有 is_typed 属性.
可以很方便的查到,哪些table 是 typed table.

线上展示在以下连结:
https://dbfiddle.uk/?rdbms=postgres_14&fiddle=dbc11dbbebce4e65f02dd32ace903da9

编辑时预览,可以看到 辣椒 那些 emoji.但是发表时,却又变成?了,所以改成截图方式.


<<:  7. Html&Css&Javascript(下)

>>:  以Postgresql为主,再聊聊资料库 typed table的应用

Day 9 合格了吗?

启动引擎,把车开回夜晚的车阵中,虽然可能只是处在车流中,默默无名的行驶着,或者快速的疾驶着,又或者处...

[Day30] grid z-index 分层 / order 顺序

终於也进入到尾声了,最後一章要介绍网格项目的分层与顺序。 z-index 分层 .item { z-...

学习日记-2

有一小段时间没跟新了XD! 主要是平时都加班,下班去健身房回到家,就只剩1-2小时的学习时间,就慢慢...

伸缩自如的Flask [day12] Sql Database

好的,这里来使用Sql的DataBase,我相信你已经知道或调查过了NoSql跟Sql两种Datab...