數據庫基礎知識——Mysql包括什麽是數據庫、、主流數據庫、MySQL架構、、服務器,數據庫,表之間的關系、、使用數據庫、、SQL分類、存儲引擎。
1、什麽是數據庫
數據庫是用來存儲數據的。那麽我們之前學習過的存儲數據可以使用文件,那麽為什麽還要弄個數據庫呢?
這就要談談用文件保存數據的幾個缺點:
文件的安全性問題、文件不利於數據查詢和管理、文件不利於存儲海量數據、文件在程序中控制不方便。
因此為了解決上述的問題,專家們設計出更利於管理數據的東西——數據庫,它更有效地管理數據。數據庫的水平是衡量壹個程序員水平的重要指標。
數據庫:物理操作系統文件或其他形式文件類型的集合。在MySQL數據庫中,數據庫文件可
以是frm,MYD,MYI,ibd結尾的文件。當使用NDB引擎時,數據庫的文件可能不是操作系統上的文件,而是存放在內存之中的文件,但是定義仍然不變。
2、主流數據庫
l?MySQL:世界上最受歡迎的數據庫,屬於甲骨文,並發性好,不適合做復雜的業務。主要用在電商,SNS,論壇。對簡單的SQL處理效果好。
l?SQLSever:微軟的產品,.Net程序元的最愛,常用於中大型項目。
l?Oracle:甲骨文產品,適合大型項目,復雜的業務邏輯,並發壹般來說不如MySQL。
2.1MySQL
我主要學習MySQL數據庫,那麽就再了解了解MySQL數據庫。MySQL被設計為壹個可移植的數據庫,幾乎在當前所有系統上都能運行,如:Linux,Windows,Mac,Solaris和FreeBSD。盡管各平臺在底層(如線程)實現方面都各有不同。
但是MySQL基本上能保證在各個平臺上的物理體系結構的壹致性。因此,用戶應該能夠很好的理解MySQL數據庫在所有這些平臺上是如何運作的。
3、MySQL架構:
MySQL數據庫由後臺線程以及壹個***享內存區組成。***享內存可以被運行的後臺線程所***享。需要牢記的是,數據庫實例才是真正用於操作數據庫文件的。在MySQL中,實例與數據庫的關系通常是壹壹對應的。即壹個實例對應壹個數據庫,壹個數據庫對應壹個實例。但是,在集群情況下可能存在壹個數據庫被多個數據實例使用的情況。
MySQL被設計為壹個單進程多線程架構的數據庫,這點與SQLServer比較類似,但與Oracle多進程的架構有所不同(Oracle的Windows版本也是單進程多線程架構的)。這也就是說,MySQL數據庫實例在系統上的表示就是壹個進程。可以通過ps指令觀察MySQL數據庫啟動後的進程情況:
註意進程為17022的進程就是MySQL的實例。當啟動實例時,MySQL數據庫會去讀取配置文件,根據配置文件中的參數來啟動數據庫實例。在MySQL數據庫中可以沒有配置文件,在這種情況下,MySQL會按照編譯時的默認參數設置啟動實例。
查看當MySQL實例啟動時,會在那些位置查找配置文件:
[Lxy@VM-20-12-centos~]$mysql--help|grepmy.cnforderofpreference,my.cnf,$MYSQL_TCP_PORT,/etc/my.cnf/etc/mysql/my.cnf/usr/etc/my.cnf~/.my.cnf
可以看到,MySQL數據庫是按照/etc/my.cnf->/etc/mysql/my.cnf->/usr/etc/my.cnf->~/.my.cnf的順序來讀取配置文件的。如果幾個配置文件中都有同壹個參數,MySQL數據庫會按照讀取到的最後壹個參數為準。在Linux環境下,配置文件壹般放在/etc/my.cnf下。在Windows平臺下,配置文件的後綴名可能是.cnf或者.ini。
配置文件中有壹個參數datadir,該參數指定了數據庫所在的路徑。在Linux操作系統下默認datadir為/usr/local/mysql/data,用戶可以修改該參數,當然也可以使用該路徑。
3.1連接服務器
輸入:
mysql-uroot-p。
註意:
如果沒有寫-h127.0.0.1默認是本地連接
如果沒有寫``-P3306`默認是3306端口號
3.2服務器管理。
l?執行win+r輸入services.msc打開服務管理器。
l?通過下圖左側停止,暫停,重啟按鈕進行服務管理(壹般建議不要動)。
4、服務器,數據庫,表之間的關系
所謂安裝數據庫服務器,只是在機器上安裝了壹個數據庫管理系統程序,這個管理程序可以管理多個數據庫,壹般開發人員針對每壹個應用創建壹個數據庫。
為保存應用中實體的數據,壹般會在數據庫中創建多個表,以保存程序中實體的數據。
5、使用數據庫
這裏使用數據庫只是壹些簡單的sql語句,更加相信更加復雜的將在後面的博客中逐漸呈現。
顯示當前所有數據庫。
showdatabases;
使用數據庫。
use[數據庫名];//例如use104_db;
創建數據庫表。
createtablestudent(idint,namevarchar(20));
查看表信息。
desc[表名];//例如descstudent;
像指定表中插入數據。
insertinto[表名](id,name)values(1,"張三");//例如:insertintostudent(id,name)values(1,"張三");//也可以如果是全屬性插入也可以省略屬性字段//例如:insertintostudentvalues(2,"李四");//如果明確指定屬性字段後面的插入字段必須與之匹配//例如:insertintostudent(id)values(3);
查詢表中的數據。
清屏。
systemclear//mysql並沒有提供清屏的指令可以使用系統自帶的指令:
退出數據庫。
6、SQL分類
l?DDLDataDefinitionlanguage數據定義語言,用來維護存儲數據的結構
代表指令:create,drop,alter。
l?DMLDataManipulationLanguage數據操縱語言,用來對數據進行操作的
代表指令:insert,delete,update。
l?DML中又單獨分了壹個DQL,數據查詢語言,代表指令:select。
l?DCLDataControlLanguage數據控制語言,主要負責權限管理和事務
代表指令:grant,revoke,commit。
7、存儲引擎
存儲引擎:數據庫管理系統如何存儲數據,如何為存儲的數據建立索引和如何更新,查詢數據等技術的實現方法。MySQL的核心就是插件式存儲引擎,支持多種存儲引擎。