MySQL資料庫總結(一)
概述:
資料庫的作用:通俗易懂的講就是用於資料的儲存。
傳統的儲存方式如文字、Excel等有諸多不足:
- 文字:檔案過大時開啟會卡頓,非常慢。
- Excel:儲存的資料量非常少,不符合當今資料動不動就上百萬條這種海量資料的需求。
資料庫更加方便管理資料,通過sql語句更加有效率,編寫SQL語句要注意:功能+效能!
資料庫的分類:
- 結構化資料庫,實質上就是關係型資料庫,比如Oracle、MySQL等。二維表結構來邏輯表達和實現的資料, 對於表結構的每一列,都有著清晰的定義。
- 半結構化資料庫,主要是鍵值對的形式存在。它的描述資料的結構和內容混在一起,沒有明顯的區分。比如xml、json
- 非結構化資料庫,從形態上,非結構化資料主要包含三大塊:第一是文字文字;第二是影象、圖片等;第三是視訊流、電視流。之前儲存圖片資料使用是blob格式,現在已被儲存路徑path形式代替了。
關係型資料庫比較:
目前最流行的是Oracle和MySQL,對比如下:
Oracle:效率高,已經優化到極致,使用和維護成本高,對硬體的要求要比其他資料庫高。
MySQL:開源,簡單,效能優越,支援多使用者,單程序多執行緒,c/s
MySQL執行流程:
- 啟動MySQL服務
- 載入配置檔案到伺服器記憶體
- 生成MySQL資料庫例項
- 簡歷MySQL客戶端與MySQL資料庫例項通訊的鏈路
- MySQL客戶端請求MySQL會話
- MySQL服務端響應客戶端請求
MySQL表儲存引擎:
MySQL的預設儲存引擎是InnoDB;
引擎(Engine)是電子平臺上開發程式或系統的核心元件。利用引擎,開發者可迅速建立、鋪設程式所需的功能,或利用其輔助程式的運轉。一般而言,引擎是一個程式或一套系統的支援部分。常見的程式引擎有遊戲引擎,搜尋引擎,防毒引擎等。
簡單來說,儲存引擎就是指表的型別以及表在計算機上的儲存方式。通過show engines來檢視
InnoDB的特點:完善事務支援,主要體現在寫入資料這方面,即增刪改操作。
MyISAM的特點:讀取速度快,用於查詢;
兩個結合可以達到一個讀寫分離的效果,從而優化資料庫。
mysql預設資料庫:
- information_schema儲存源資料資訊,即描述表結構的資訊。
- mysql儲存使用者資訊
- performance_schema跟蹤執行的資訊
- test做實驗用的,也可以自己再建一個庫
基礎操作:(重點)
查詢埠:netstat -ano|grep 3306
登入:mysql -uroot -p >>回車>> 輸入連線密碼
檢視所有字符集:show variables like 'character%'; ---出現亂碼時檢查編碼格式
檢視資料庫:show databases;
匯入匯出:(資料庫的備份)
- mysqldump -uroot -p 資料庫名>路徑\檔名.格式 ==匯出
- mysql -uroot -p 資料庫名<路徑\檔名.格式 ==匯出
- mysql -uroot -p test<./test.sql --命令還原指定備份
檢視欄位值溢位是否截斷:
--檢視當前的sql_mode
select @@sql_mode;
--插入測試資料
insert into inttype values(128); //設定的欄位最大值為127
- 無法插入,切換sql_mode模式
set sql_mode = 'ansi';
- 插入成功,但被截斷
insert into inttype values(128);
獲取系統時間:select now();select year(now()); ===獲取年份
約束值範圍:
create table person(
-> sex enum('male','female'),
-> interest set('sports','study','sing')
-> );
enum ----單選
set ----多選
其他
yinyint一個位元組
smallint兩個位元組
mediumint三個位元組
int四個位元組
bigint八個位元組TIMESTAMP[(M)]
時間戳。範圍是’1970-01-01 00:00:00’到2037年。
後續有待更新,感謝閱讀~