接著進入一個全新的篇章,介紹一下資料庫。其中資料分析基礎能力之一是可以從資料庫拿取資料,因此我們需要認識資料庫是什麼東東XD 這次我們介紹的資料庫是 Postgres 哦!
資料庫可以想成資料的檔案抽屜,我們可以對這些資料有:
資料庫大致上可以分為兩種類型:
關聯式資料庫(Relational Database Management System,縮寫為 RDBMS)
關聯式資料庫,是由資料表(Table)、紀錄(Record)、欄位(Field)以及資料(Data)所構成的。資料表示資料存在資料庫的形式,一筆一筆橫向的資料的是記錄,直向表示一筆資料的不同屬性,稱為是欄位。
非關係型資料庫(Not Only SQL,縮寫為 NoSQL)
關聯式資料庫非常普及,但這不是唯一存取資料的方式。不是以 SQL 的這種表格方式檢索資料庫,統稱為 NoSQL 資料庫。
參考資料
PostgreSQL 是美國加州伯克萊大學資訊科學系基於 POSTGRES 4.2 所研發的物件關聯式資料庫管理系統(ORDBMS, Object-Relational Database Management System)。POSTGRES 中的許多重要概念成為日後一些商用資料庫系統重要的一部份。
PostgreSQL 由伯克萊大學公開其原始碼所誕生,它支援了大多數的標準 SQL 語法,並提供許多先進的功能:
同時,PostgreSQL 也支援讓使用者能以自己的方式進行擴充。比如透過新增:
並且基於自由許可證,任何人都能夠以任何目的,免費地使用、修改、與散布 PostgreSQL,不論是個人使用、商業用途還是學術研究。
參考來源
可以自動動手在電腦裝裝看 postgres
安裝網址
新手教學
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 表示。 |
想像一個資料庫是一個大型的倉庫(資料庫),倉庫裡面有房間(綱要),每個房間有不同的主人(權限)
而每個房間又可以擺設不同的物品,例如床、衣櫃等等,對照是我們說的表格
倉庫的主人,就是系統管理員,對於每個物品有所有的管理權,可以說是 super user
CREATE SCHEMA myschema
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
);