人類在進化的過程中,創造了數字、文字、符號等來進行數據的記錄,但是承受著認知能力和創造能力的提升,數據量越來越大,對于數據的記錄和準確查找,成為了一個重大難題。
計算機誕生后,數據開始在計算機中存儲并計算,并設計出了數據庫系統。數據庫系統解決的問題:持久化存儲,優化讀寫,保證數據的有效性
當前使用的數據庫,主要分為兩類:
- 文檔型,如sqlite,就是一個文件,通過對文件的復制完成數據庫的復制
- 服務型,如mysql、postgre,數據存儲在一個物理文件中,但是需要使用終端以tcp/ip協議連接,進行數據庫的讀寫操作
E-R模型
- 當前物理的數據庫都是按照E-R模型進行設計的
- E表示entry,實體
- R表示relationship,關系
- 一個實體轉換為數據庫中的一個表
- 關系描述兩個實體之間的對應規則,包括
- 一對一
- 一對多
- 多對多
- 關系轉換為數據庫表中的一個列 *在關系型數據庫中一行就是一個對象
三范式
經過研究和對使用中問題的總結,對于設計數據庫提出了一些規范,這些規范被稱為范式
- 第一范式(1NF):列不可拆分
- 第二范式(2NF):唯一標識
- 第三范式(3NF):引用主鍵
- 說明:后一個范式,都是在前一個范式的基礎上建立的
字段類型
在mysql中包含的數據類型很多,這里主要列出來常用的幾種
- 整型:int
- 浮點型
- double: double(5, 2), 最多5位,至少2位小數,最大999.99
- decimal:無精度損失
- 字符串
- char: 固定長度字符串, char(255), 會自動補足指定長度,長度最大255
- varchar: 可變長度字符串,varchar(65535), 不會補齊, 最大65535
- text
- 日期
- data: yyyy-mm-dd
- time: hh:mm:ss
- timestamp: 時間戳類型
- 布爾:Boolean
約束
- 主鍵: primary key
- 非空: not null
- 惟一: unique
- 默認: default
- 外鍵: foreign key
- 自增長: auto_increment