MySQL基本使用

#MySQL -- 基本使用 ##Relational Database Management System(RDBMS)mysql

  • 所謂的關係型數據庫RDBMS,是創建在關係模型基礎上的數據庫,藉助於集合代數等數學概念和方法來處理數據庫中的數據
  • 查看數據庫排名:https://db-engines.com/en/ranking
  • 關係型數據庫的主要產品
    • oracle:在之前的大型項目中使用,銀行,電信等項目
    • mysql:web時代使用最普遍的關係型數據庫
    • ms sql server:在微軟的項目中使用
    • sqlite:輕量級數據庫,主要應用在移動平臺 ##MySQL簡介: MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB公司開發,後來被Sun公司收購,Sun公司後來又被Oracle公司收購,目前屬於Oracle旗下產品。 特色:
使用C和C++編寫,並使用了多種編譯器進行測試,保證源代碼的可移植性

	支持多種操做系統,如Linux、Windows、AIX、FreeBSD、HP-UX、MacOS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris等

	爲多種編程語言提供了API,如C、C++、Python、Java、Perl、PHP、Eiffel、Ruby等

	支持多線程,充分利用CPU資源

	優化的SQL查詢算法,有效地提升查詢速度
	提供多語言支持,常見的編碼如GB23十二、BIG五、UTF8
	提供TCP/IP、ODBC和JDBC等多種數據庫鏈接途徑
	提供用於管理、檢查、優化數據庫操做的管理工具
	大型的數據庫。能夠處理擁有上千萬條記錄的大型數據庫
	支持多種存儲引擎
	MySQL 軟件採用了雙受權政策,它分爲社區版和商業版,因爲其體積小、速度快、整體擁有成本低,尤爲是開放源碼這一特色,通常中小型網站的開發都選擇MySQL做爲網站數據庫
	MySQL使用標準的SQL數據語言形式
	Mysql是能夠定製的,採用了GPL協議,你能夠修改源碼來開發本身的Mysql系統
	在線DDL更改功能
	複製全局事務標識
	複製無崩潰從機
	複製多線程從機

##數據完整性 一個數據庫就是一個完整的業務單元,能夠包含多張表,數據被存儲在表中 在表中爲了更加準確的存儲數據,保證數據的正確有效,能夠在建立表的時候,爲表添加一些強制性的驗證,包括數據字段的類型、約束。 數據類型:web

能夠經過查看幫助文檔查閱全部支持的數據類型
	使用數據類型的原則是:夠用就行,儘可能使用取值範圍小的,而不用大的,這樣能夠更多的節省存儲空間
	經常使用數據類型以下:
	整數:int,bit
	小數:decimal
	字符串:varchar,char
	日期時間: date, time, datetime
	枚舉類型(enum)
				
	特別說明的類型以下:
	decimal表示浮點數,如decimal(5,2)表示共存5位數,小數佔2位
	char表示固定長度的字符串,如char(3),若是填充'ab'時會補一個空格爲'ab '
        varchar表示可變長度的字符串,如varchar(3),填充'ab'時就會存儲'ab'
	字符串text表示存儲大文本,當字符大於4000時推薦使用
	對於圖片、音頻、視頻等文件,不存儲在數據庫中,而是上傳到某個服務器上,而後在表中存儲這個文件的保存路徑

##約束:算法

主鍵primary key:物理上存儲的順序
    非空not null:此字段不容許填寫空值
    唯一unique:此字段的值不容許重複
    默認default:當不填寫此值時會使用默認值,若是填寫時以填寫爲準
    外鍵foreign key:對關係字段進行約束,當爲關係字段填寫值時,會到關聯的表中查詢此值是否存在,若是存在則填寫成功,若是不存在則填寫失敗並拋出異常
    說明:雖然外鍵約束能夠保證數據的有效性,可是在進行數據的crud(增長、修改、刪除、查詢)時,都會下降數據庫的性能,因此不推薦使用,那麼數據的有效性怎麼保證呢?答:能夠在邏輯層進行控制

##數據庫的設計:sql

  • 關係型數據庫建議在E-R模型的基礎上,咱們須要根據產品經理的設計策劃,抽取出來模型與關係,制定出表結構,這是項目開始的第一步
  • 在開發中有不少設計數據庫的軟件,經常使用的如power designer,db desinger等,這些軟件能夠直觀的看到實體及實體間的關係
  • 設計數據庫,多是由專門的數據庫設計人員完成,也多是由開發組成員完成,通常是項目經理帶領組員來完成

##三範式: 通過研究和對使用中問題的總結,對於設計數據庫提出了一些規範,這些規範被稱爲範式(Normal Form) 目前有跡可尋的共有8種範式,通常須要遵照3範式便可。數據庫

  • 第一範式(1NF):強調的是列的原子性,即列不可以再分紅其餘幾列。
  • 第二範式(2NF):首先是 1NF,另外包含兩部份內容,一是表必須有一個主鍵;二是沒有包含在主鍵中的列必須徹底依賴於主鍵,而不能只依賴於主鍵的一部分。
  • 第三範式(3NF):首先是 2NF,另外非主鍵列必須直接依賴於主鍵,不能存在傳遞依賴。即不能存在:非主鍵列 A 依賴於非主鍵列 B,非主鍵列 B 依賴於主鍵的狀況。

E-R模型

E表示entry,實體,設計實體就像定義一個類同樣,指定從哪些方面描述對象,一個實體轉換爲數據庫中的一個表
	R表示relationship,關係,關係描述兩個實體之間的對應規則,關係的類型包括包括一對1、一對多、多對多
	關係也是一種數據,須要經過一個字段存儲在表中
	實體A對實體B爲1對1,則在表A或表B中建立一個字段,存儲另外一個表的主鍵值
	實體A對實體B爲1對多:在表B中建立一個字段,存儲表A的主鍵值
	實體A對實體B爲多對多:新建一張表C,這個表只有兩個字段,一個用於存儲A的主鍵值,一個用於存儲B的主鍵值

##邏輯刪除編程

對於重要數據,並不但願物理刪除,一旦刪除,數據沒法找回
	刪除方案:設置isDelete的列,類型爲bit,表示邏輯刪除,默認值爲0
	對於非重要數據,能夠進行物理刪除
	數據的重要性,要根據實際開發決定
相關文章
相關標籤/搜索