一、登錄數據庫
在linux系統中登錄數據庫的指令
mysql -h 127.48.0.236 -P 3306 -u root -p
- -h:填寫IP地址,指明要連接的主機。如果不加該字段表示本地主機
- -P:填寫端口號,指明進程。?如果不加該字段會使用默認的端口號。
- -u:指明要以什么用戶的身份登錄。
- -p:表示密碼,可在后面直接加密碼,也可以不加,回車后會彈出密碼的填寫。
quit指令退出數據庫。
免密碼配置
vim打開配置文件/etc/my.cnf,加入以下選項:
skip-grant-tables
然后重啟服務器才能生效,即:
systemctl restart mysqld
雖然做了免密碼配置,但在登錄時依舊會彈出密碼填寫框,我們直接回車就行。?
二、數據庫的理解
數據庫服務分為客戶端和服務端,分別是mysql和mysqld。
- mysql本質:基于CS(client,server)模式的網絡服務,是一種提供數據存取功能的網絡服務。
????????數據庫一般指在磁盤或者內存中特定結構組織的數據庫方案。文件也是用來存儲數據,為什么不用文件呢?
主要在于這幾點:
- 文件存在安全性問題。
- 文件不利于數據查詢和管理。
- 文件不利于存儲海量數據。
- 文件在程序中控制不方便。
????????而數據庫提供一些管理方案,對數據處理時我們直接調用對應的接口就行,不用程序員逐一去處理。
三、MySQL的表現形式
1.登錄數據庫
2.展示庫
show databases;
?3.建庫
create databases 庫名;?
打開配置文件/etc/my.cnf可以查看數據被保存在那個目錄下:
如:datadir=/var/lib/mysql 選項。我們查找/var/lib/mysql目錄下的文件:
可以發現多了一個test目錄,所以可以知道
- 庫的本質:目錄。
接下來我們創建表結構:
查看/var/lib/mysql/test的變化:?
我們發現新增了一些文件。
- 表的本質:對應庫目錄下的一個普通文件。?
數據庫本質就是文件,只不過由數據庫服務幫我們管理。
主流的數據庫
- SQL Sever: 微軟的產品,.Net程序員的最愛,中大型項目。
- Oracle: 甲骨文產品,適合大型項目,復雜的業務邏輯,并發一般來說不如MySQL。
- MySQL:世界上最受歡迎的數據庫,屬于甲骨文,并發性好,不適合做復雜的業務。主要用在電商,SNS,論壇。對簡單的SQL處理效果好。
- PostgreSQL :加州大學伯克利分校計算機系開發的關系型數據庫,不管是私用,商用,還是學術研究使用,可以免費使用,修改和分發。
- SQLite: 是一款輕型的數據庫,是遵守ACID的關系型數據庫管理系統,它包含在一個相對小的C庫中。它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。
- H2: 是一個用Java開發的嵌入式數據庫,它本身只是一個類庫,可以直接嵌入到應用項目中。
服務器、數據庫、表之間的關系:
四、MySQL架構
MySQL構架分為三層:
- 第一層:連接池。主要做連接管理,權限管理,安全管理等。
- 第二層:主要做client指令分析,即解析器、優化器、緩存等。
- 第三層:存儲引擎(類似操作系統的驅動程序),直接與操作系統打交道。使用show engines指令可查看,如下:
五、語句分類
- DDL【data definition language】 數據定義語言,用來維護存儲數據的結構,代表指令: create, drop, alter。
- DML【data manipulation language】 數據操縱語言,用來對數據進行操作,代表指令: insert,delete,update。
- DML中又單獨分了一個DQL,數據查詢語言,代表指令: select。
- DCL【Data Control Language】 數據控制語言,主要負責權限管理和事務,代表指令: grant,revoke,commit。
?
?