從零開始了解數據庫開發
- 安裝MySQL
- 什么是數據庫
- 常見主流數據庫
- 初步了解SQL語句
- 存儲引擎
安裝MySQL
學習數據庫開發之前首先要正確安裝MySQL,可以尋找網上的教程。這里我們先講解數據庫的基礎知識。
安裝好之后,MySQL程序是一直在運行的。這里存在兩個進程mysqld與mysql
那么如何使用數據庫呢?我們先來了解mysql提供的選項:
- -h:選擇連接的主機地址,mysql本質是一種網絡服務,mysql可以連接指定主機的數據庫服務。不指定默認本機服務
- -P:指明服務端口號,不指定使用默認配置
- -u:使用誰的身份登錄
- -p:使用密碼
mysql -h 127.0.0.1 -P 3306 -u root -p
我們輸入密碼就能連接到數據庫:
什么是數據庫
下面我們來了解數據庫基礎,首先來了解mysql與mysqld:
- mysql:MySQL服務的客戶端
- mysqld:MySQL服務的服務端
兩者結合在一起才是MySQL,是一種網絡服務。
MySQL是一套給我們通過數據存取服務的網絡程序,而數據庫一般指在磁盤或者內存中存儲的特定結構的數據。
說到存儲數據為什么不直接使用文件進程存儲呢,為什么還需要數據庫?一般的文件確實提供了數據的儲存功能,但是文件并沒有提供非常好的數據內容的管理能力,并且存在安全性問題。如果想要便捷的增刪查改數據內容,使用數據庫是必須的。
數據庫本質是對數據存儲管理的一套解決方案。
我們來在linux里看一看數據庫具體是什么,我們建立數據庫,建立數據表來看下。我們進入MySQL,可以查看當前的數據庫:
這些數據庫是儲存在哪里呢?我們去MySQL配置的儲存路徑查看一下
可以發現這些數據庫就是這個目錄下的藍色目錄,執行創建數據庫來驗證一下create database helloworld;
確實是出現了。所以建立數據庫的本質就是創建linux下的一個目錄。我們再來看一下數據表
create table student( name varchar(32), age int, gender varchar(32) );
創建了數據表就建立了對應的文件
總結一下:
- 建立數據庫本質就是linux下的一個目錄
- 在數據庫內建立表本質就是在linux下創建對應的文件
- 這些工作都是MySQL幫助我們進行的,數據庫本質也是文件,只不過不需要程序員手動進行操作,程序員只需要訪問MySQL管理數據即可。
常見主流數據庫
- SQLSever:微軟的產品,.Net程序員的最愛,中大型項目。
- Oracle:甲骨文產品,適合大型項目,復雜的業務邏輯,并發一般來說不如MySQL。
- MySQL:世界上最受歡迎的數據庫,屬于甲骨文,并發性好,不適合做復雜的業務。主要用在電商,SNS,論壇。對簡單的SQL處理效果好。
- PostgreSQL:加州大學伯克利分校計算機系開發的關系型數據庫,不管是私用,商用,還是學術研究使用,可以免費使用,修改和分發。
- SQLite:是一款輕型的數據庫,是遵守ACID的關系型數據庫管理系統,它包含在一個相對小的C庫中。它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。
- H2:是一個用Java開發的嵌入式數據庫,它本身只是一個類庫,可以直接嵌入到應用項目中。
初步了解SQL語句
- DDL【data definition language】數據定義語言,用來維護存儲數據的結構,代表指令:create,drop,alter
- DML【data manipulation language】數據操縱語言,用來對數據進行操作代表指令:insert,delete,update,DML中又單獨分了一個DQL,數據查詢語言,代表指令:select
- DCL【Data Control Language】 數據控制語言,主要負責權限管理和事務代表指令:grant,revoke,commit
存儲引擎
接下來我們來了解存儲引擎。存儲引擎是數據庫管理系統如何存儲數據,如何為存儲數據建立新的索引和如何更新,查詢數據等技術的實現方法。
MySQL的核心就是插件式的存儲引擎,支持多種存儲引擎。我們可以看一下有哪些儲存引擎:
其中MySQL中最主要的就是MyISAM和InnoDB,如果遇到這兩種引擎解決不好的問題,既可以不考慮使用MySQL數據庫了。