Day 09 : 资料库 Postgres

接着进入一个全新的篇章,介绍一下资料库。其中资料分析基础能力之一是可以从资料库拿取资料,因此我们需要认识资料库是什麽东东XD 这次我们介绍的资料库是 Postgres 哦!

资料库介绍

资料库可以想成资料的档案抽屉,我们可以对这些资料有:

  • 新增(CREATE)
  • 查询(READ)
  • 更新(UPDATE)
  • 删除(DELETE)
    以上取第一个字母简称为 CRUD

资料库大致上可以分为两种类型:

  • 关联式资料库(Relational Database Management System,缩写为 RDBMS)
    关联式资料库,是由资料表(Table)、纪录(Record)、栏位(Field)以及资料(Data)所构成的。资料表示资料存在资料库的形式,一笔一笔横向的资料的是记录,直向表示一笔资料的不同属性,称为是栏位。

    • 市面上有许多关联式资料库(Related database),常见的有:
      • Sqlite
      • MySQL
      • PostgreSQL
      • Oracle Database
      • DB2
  • 非关系型资料库(Not Only SQL,缩写为 NoSQL)
    关联式资料库非常普及,但这不是唯一存取资料的方式。不是以 SQL 的这种表格方式检索资料库,统称为 NoSQL 资料库。

    • Key-Value Database:利用键值的格式储存资料,取代原本关联式资料库中常用的固定栏位。相比之下,比关连式资料库有更弹性的架构。
    • Document Database:文件资料库主要是用来储存非结构性的文件,不像一般表格那样有固定的栏位,每个栏位有特定资料类型和大小。
    • Graph Database:这不是专门用来处理图片的资料库,而是指运用图学架构来储存节点间关系资料架构。
      常见的非关联式资料库有:Redis、MongoDB。
  • 资料库的排名

  • 参考资料

Postgres

PostgreSQL 是美国加州伯克莱大学资讯科学系基於 POSTGRES 4.2 所研发的物件关联式资料库管理系统(ORDBMS, Object-Relational Database Management System)。POSTGRES 中的许多重要概念成为日後一些商用资料库系统重要的一部份。

PostgreSQL 由伯克莱大学公开其原始码所诞生,它支援了大多数的标准 SQL 语法,并提供许多先进的功能:

  • 复杂查询(complex queries)
  • 外部索引键(foreign keys)
  • 触发器(triggers)
  • 可更新检查表(updatable views)
  • 事务完整性(transactional integrity)
  • 多版本并行控制(multiversion concurrency control)

同时,PostgreSQL 也支援让使用者能以自己的方式进行扩充。比如透过新增:

  • 资料型别(data types)
  • 函数(functions)
  • 操作(operators)
  • 聚合函数(aggregate functions)
  • 索引方法(index methods)
  • 过程序语言(procedural languages)

并且基於自由许可证,任何人都能够以任何目的,免费地使用、修改、与散布 PostgreSQL,不论是个人使用、商业用途还是学术研究。
参考来源

安装教学

可以自动动手在电脑装装看 postgres
安装网址
新手教学

SQL 语法

DDL(Data Definition Language)

  • CREATE 建立资料库/资料表
  • DROP 删除资料库/资料表
  • ALTER 修改资料表结构

DML(Data Manipulation Language)

  • INSERT 插入资料
  • SELECT 查询资料
  • UPDATE 更新资料
  • DELETE 删除资料

DCL(Data Control Language)

  • GRANT 授权使用者
  • REVOKE 取消使用者权限

TCL(Transaction Control Language)

  • COMMIT 将操作更新到资料库
  • ROLLBACK 取消对资料库的操作

SQL 资料类型

  • 整数类型
    • integer,4字节
    • smallint,2字节,更节省磁盘空间
    • bigint,8字节,能够存储的数字范围更大
  • 任意精度类型
    • NUMERIC(precision, scale)
      占用存储空间可变,NUMERIC 类型适用於要求合理的场景,例如金融领域。对 NUMERIC 类型的计算,如加、减、乘是合理的,但可能程度的上升带来的速度的下降,比 INTEGER 类型和 FLOAT 类型,NUMERIC 类型的计算速度非常缓慢。
    • precision: 精度,可以存的总位数
    • scale: 精确,小数点後的位数
  • 浮点数类型
    • float4,单精度,4字节
    • float8,双精度,8字节
  • 字符类型
    • varchar(n), 有长度限制的字符串
    • char(n),定长字符串,长度不足则向後填充空白字符
    • text,不限长度
  • 日期/时间类型
    • timestamp
    • date
    • time
    • interval
Type Name Memory Length Descriptione Range
number decimal 可变长 指定的精度,精确 小数点前131072 位 ~ 小数点後16383 位
number numeric 可变长 指定的精度,精确 小数点前131072 位 ~ 小数点後16383 位
number real 4 可变精度,不精确 6 位十进制数字精度
number integer 4 常用的整数 -2147483648 ~+2147483647
number smallint 2 小范围整数 -32768 ~ +32767
number bigint 8 大范围整数 -9223372036854775808 ~ +9223372036854775807
character character varying(n), varchar(n) 变动长度,有长度限制
character character(n), char(n) 固定长度,不足补空白
character text 变长,无长度限制
time timestamp 8 日期和时间,有时区 4713BC ~ 294276AD
time timestamp 8 日期和时间,无时区 4713BC ~ 294276AD
time date 4 只用於日期 4713BC ~ 5874897AD
time time 8 日期和时间,无时区 00:00:00 ~ 24:00:00
time time 12 日期和时间,有时区 00:00:00+1459 ~ 24:00:00-1459
time interval 16 日期和时间,有时区 -178000000 years ~ +178000000 years
boolean boolean 1 true/false 第三种"unknown"(未知)状态,用NULL 表示。

资料库阶层

  • database : 资料库
  • schmeas : 纲要
  • table : 表格

想像一个资料库是一个大型的仓库(资料库),仓库里面有房间(纲要),每个房间有不同的主人(权限)
而每个房间又可以摆设不同的物品,例如床、衣柜等等,对照是我们说的表格
仓库的主人,就是系统管理员,对於每个物品有所有的管理权,可以说是 super user

产 SCHEMA

CREATE SCHEMA myschema

产 TABLE

CREATE TABLE IF NOT EXISTS myschema.train(
    customer_id character varying(100) PRIMARY KEY,
    sex character varying(1) NOT NULL,
    height numeric(5,2) NOT NULL,
    weight numeric(5,2) NOT NULL
);


<<:  输出的重要性

>>:  [DAY7]将范例上传(1)

Day14. Blue Prism拯救贫穷大作战第二弹-BP新增一个读取Excel的『Objects』

由於疫情的关系有几周的人员分流上班的机会, 我与小朋友在家远端连线Google Meeting与小朋...

[Day 32] 再访碰撞侦测与解析(四) - Debug Ray vs Rect!

今天加班到很晚,希望回到家还能有时间处理昨天写出来的bug 今日目标 找出与修正ray vs deb...

[ Day 30 ] - 初学者升级啦~完赛心得

初学者升级啦 YA!30天了~代表我连续 30 天学习 JS 了!(拍手~) 第一次参加铁人赛,其实...

部署网站with Heroku - Application Error

估狗了一下,百百种原因会导致Application Error,为了寻找问题来源,依照画面指示在T...

学习如何以输入增加知识

如何有效输入从听 Podcast、有声书,到文章集结成册的出版书籍。我们的世界有多元化的方式供大家选...