Learning-MySQL【1】:資料庫初識及 MySQL 的安裝
一、什麼是資料
資料(Data):描述事務的符號記錄,描述事物的符號既可以是數字,也可以是文字、圖片,影象、聲音、語言等,資料由多種表現形式,它們都可以經過數字化後存入計算機
在計算機中描述一個事物,就需要抽取這一事物的典型特徵,組成一條記錄,就相當於檔案裡的一行內容,如:
1 qiuxi male 22 安徽 軟體工程
但這樣的單純一條記錄並沒有任何意義,如果我們按逗號作為分隔,依次定義各個資料的含義:
id name sex age adderess major # 欄位
1 qiuxi male 20 安徽 軟體工程 # 記錄
如果這樣表示的話,就能夠了解一個人的資訊了,讓別人一看就清楚了。這裡被定義的各個資料的含義,就稱之為欄位,這條資料資訊,稱之為一條記錄。
二、什麼是資料庫
之前所學,資料要永久儲存,比如使用者註冊的使用者資訊,都是保存於檔案中,而檔案只能存在於某一臺機器上。如果我們不考慮從檔案中讀取資料的效率問題,並且假設我們的程式所有的元件都執行在一臺機器上,那麼用檔案存取資料,並沒有什麼問題。但需要考慮的問題是:程式的執行效率依賴於承載它的硬體,而一臺機器機器的效能總歸是有限的,受限於目前的硬體水平,垂直擴充套件是有極限的。於是我們只能通過水平擴充套件來增強我們系統的整體效能,這就需要我們將程式的各個元件分佈於多臺機器去執行。需要注意的是,雖然我們將程式的各個元件分佈到各臺機器,但各元件仍然是一個整體,言外之意,所有元件的資料還是要共享的。但每臺機器上的元件都只能操作本機的檔案,這就導致了資料必然不一致。於是我們想到了將資料與應用程式分離:把檔案存放於一臺機器,然後將多臺機器通過網路去訪問這臺機器上的檔案,即共享這臺機器上的檔案,共享則意味著競爭,會發生資料不安全,需要加鎖處理......為了遠端訪問並處理這臺共享機器上的檔案,我們必須為我們的程式額外寫一段程式碼,完成如下功能:
# 1、遠端連線
# 2、開啟檔案
# 3、讀寫(加鎖)
# 4、關閉檔案
我們寫任何程式都需要有這段程式碼,於是我們提取這段程式碼,寫成一個專門的處理軟體,這就是資料庫管理軟體的由來,但它解決的不僅僅是資料共享的問題,還有查詢效率,安全性等一系列問題,總之,能把程式設計師從資料管理中解脫出來,專注於自己的程式邏輯的編寫。
資料庫(DataBase,簡稱DB),顧名思義就是存放資料的倉庫,只不過這個倉庫是在計算機儲存裝置上。資料庫中的資料按一定的資料模型組織、描述和儲存,具有較小的冗餘度、較高的資料獨立性和易擴充套件性,並可為各種使用者共享。
三、資料庫管理系統
MySQL 是目前最流行的關係型資料庫管理系統之一,由瑞典 MySQLAB(AB,在瑞典語中表示 “股份公司”,是 “aktiebolag” 的首字母縮寫)公司開發,目前屬於 Oracle 公司。在 Web 應用方面,MySQL 是最好的 RDBMS(Relational Database Manasgement System,關係資料庫管理系統)應用軟體之一。
Oracle 是美國 Oracle 公司開發的一種適用於大型、中型和微型計算機的關係資料庫管理系統。提供的以分散式資料庫為核心的一組軟體產品,是目前最流行的客戶端/伺服器(Client/Server)或 B/S 體系結構的資料庫之一。
DB2 是 IBM 公司研製出的一種關係型資料庫管理系統,分別在不同的作業系統平臺上服務。DB2主要應用於大型應用系統,具有較好的可伸縮性,可以支援從大型機到單使用者環境,應用於OS/2、Windows等平臺下。
SQL Server 是美國微軟公司開發的一個關係資料庫管理系統,以 T-SOL 作為其資料庫查詢和程式語言。SQL Server 採用二級安全驗證、登入驗證以及資料庫使用者許可驗證等安全模式。
四、資料庫伺服器,資料庫管理系統,表與記錄的關係(重點理解)
資料庫說白了就是資料夾
資料庫管理系統就是一個軟體
資料庫伺服器:就是對外專門提供資料的一個機器
表:student, scholl, class_list(即檔案)
資料庫:lzsh_info(即資料夾)
資料庫管理系統:如MySQL(是一個軟體)
資料庫伺服器:一臺計算機(對記憶體要求比較高)
總結:
資料庫伺服器---執行--->資料庫管理軟體
資料庫管理軟體--->管理--->資料庫
資料庫---組織--->表,即資料夾---組織--->檔案
表---存放--->多條記錄,即檔案---存放--->多行內容
五、MySQL 簡介
MySQL 是一個關係型資料庫管理系統,由瑞典 MySQL AB 公司開發,目前屬於 Oracle 旗下公司。MySQL 最流行的關係型資料庫管理系統,在 WEB 應用方面 MySQL 是最好的 RDBMS (Relational Database Management System,關係資料庫管理系統) 應用軟體之一。
1、MySQL 是什麼?
MySQL 就是一個基於 socket 編寫的 C/S 架構的軟體
客戶端軟體:
MySQL 自帶:如 mysql 命令,mysqldump 命令等
Python 模組:如 pymysql
2、資料庫管理軟體分類
關係型:如SQLite,DB2,Oracle,Access,SQL Server,MySQL,注意:SQL語句通用
非關係型:MongoDB,Redis,Memcache
可以簡單的理解為:關係型資料庫需要有表結構,非關係型資料庫是key-value儲存的,沒有表結構
六、MySQL 的安裝
1、在官網下載 MySQL5.6(https://dev.mysql.com/downloads/mysql/5.6.html#downloads),得到一個壓縮包
2、將下載的壓縮包解壓後的整個目錄放在自己喜歡的位置,我的放在 D 盤的 Program Files 下,並改名為 MySQL5.6
3、進入MySQL5.6 目錄,將裡面的 my-default.ini 檔案複製一份,並命名為 my.ini
4、開啟 my.ini 檔案將裡面的 basedir 前面的 # 取消(取消註釋),將其值設定為我們解壓後的 MySQL5.6 根目錄路徑;將 datadir 取消註釋設定為 MySQL5.6 裡的 data 目錄路徑,這是存放資料的路徑。並且我還設定了字元編碼為utf8(注意:MySQL 中的 uft8 編碼中間沒有橫槓,不能寫成 utf-8)
5、安裝 MySQL 服務並啟動:以管理員身份開啟 cmd 視窗後,將目錄切換到你解壓檔案的 bin 目錄
再輸入mysqld install 回車執行就行了
接著就是輸入 net start mysql 啟動服務,提示啟動成功(注:MySQL5.7 以上版本預設沒有 data 目錄,這裡會啟動不成功,需要手動生成 data 目錄)
6、開啟即可登入 MySQL 資料庫,還在命令模式下,將目錄切換到自己的 bin 目錄下。輸入 mysql -uroot -p,預設是沒有密碼的。回車進入,root是使用者名稱
7、配置環境變數
配置好環境變數之後,就可以直接在cmd中輸入 mysql -u root -p 開啟MySQL資料庫,不用進入 bin 目錄,當然你的服務必須啟動先,不然還是不行。可以將服務設定為開機自啟動(Windows 系統下 MySQL 安裝後預設是自啟動)
到這裡 MySQL 就算是安裝完成了,下面來測試一下,接著上面的命令視窗直接輸入show databases; ,表示檢視所有的資料庫,注意不要忘了分號,在 MySQL 中表示語句的結束
再測試環境變數:關閉命令視窗,重新開啟一個新的 cmd 命令視窗直接輸入 mysql -u root -p 就能進入說明環境變數已經配置正確,如圖:
七、為 MySQL 設定修改密碼
方法1: 用 SET PASSWORD 命令
首先登入 MySQL。
格式:mysql> set password for 使用者名稱@localhost = password('新密碼');
例子:mysql> set password for [email protected] = password('000000');
方法2:用 mysqladmin
格式:mysqladmin -u使用者名稱 -p舊密碼 password 新密碼
例子:mysqladmin -uroot -p123456 password 000000
方法3:用 UPDATE 直接編輯 user 表
首先登入 MySQL。
mysql> use mysql;
mysql> update user set password=password('000000') where user='root' and host='localhost';
mysql> flush privileges;
方法4:在忘記 root 密碼的時候,可以這樣
以 Windows為例:
1. 關閉正在執行的 MySQL 服務。
2. 開啟 cmd 視窗,轉到 bin 目錄。
3. 輸入 mysqld --skip-grant-tables 回車。--skip-grant-tables 的意思是啟動 MySQL 服務的時候跳過許可權表認證。
4. 再開一個 cmd 視窗(因為剛才那個視窗已經不能動了),轉到 bin 目錄。
5. 輸入 mysql 回車,如果成功,將出現 MySQL 提示符 >。
6. 連線許可權資料庫: use mysql; 。
6. 改密碼:update user set password=password("000000") where user="root";(別忘了最後加分號) 。
7. 重新整理許可權(必須步驟):flush privileges; 。
8. 退出 quit。
9. 登出系統,再進入,使用使用者名稱 root 和剛才設定的新密碼 000000 登入。