MySQL快速學習入門
什麼是資料庫?
資料庫是儲存資料的集合的單獨的應用程式。每個資料庫具有一個或多個不同的API,用於建立,訪問,管理,檢索和複製所儲存資料。
其他型別的資料儲存,可以使用,如獲取檔案系統上的檔案或記憶體中的大的雜湊表,但資料並寫入不會那麼快,但這些型別的系統易於使用。
所以今天,我們使用關係資料庫管理系統(RDBMS)來儲存和管理體積龐大的資料。這就是所謂關係資料庫,因為所有的資料儲存到不同的表和關係建立使用主鍵或外來鍵等其它鍵。
一個關係資料庫管理系統(RDBMS)是一種軟體是:
-
使您能夠實現具有表,列和索引的資料庫
-
保證了各種表的行之間的引用完整性
-
自動更新索引
-
解釋SQL查詢和聯合各表的資訊。
RDBMS術語:
在我們開始講解MySQL資料庫系統之前,讓我們修訂資料庫數的定義。
-
資料庫: 資料庫是表的集合,具有相關資料。
-
表: 表是用資料矩陣。在一個數據庫中的表看起來就像一個簡單的電子表格。
-
列: 一列(資料元素)包含一個的資料和相同種類,例如,列郵政編碼。
-
行: 一行(=元組,條目或記錄)是一組相關的資料,例如一個訂閱的資料。
-
冗餘: 儲存資料兩次,冗餘使系統更快。
-
主鍵: 主鍵是唯一的。不能在一個表中出現的一個鍵兩次。使用鍵可以快速找到一行。
-
外來鍵: 外來鍵是兩個表之間的連線值。
-
複合鍵: 複合鍵(複合鍵)是由多個列,因為有時一個列是不夠唯一標識鍵的。
-
索引: 在資料庫中的索引類似於索引在一本書(書的目錄)。
-
參照完整性: 參照完整性可以確保外來鍵值總是指向現有的行。
MySQL 資料庫
MySQL是一個快速,易於使用的RDBMS,被用於許多小型和大型企業。MySQL由一個瑞典公司MySQL AB支援。正在開發,銷售。MySQL變得如此受歡迎,因為許多很好的理由:
-
MySQL在一個開源許可下發布。所以使用它不要擔心什麼問題。
-
MySQL本身是非常強大的程式。它擁有可處理最昂貴,最強大的資料庫軟體包的相當大一部分功能。
-
MySQL使用眾所周知的SQL資料語言的標準形式。
-
MySQL可執行在許多類作業系統和許多語言,包括 PHP, PERL, C, C++, JAVA 等
-
MySQL執行得非常快,甚至在大型資料集也可以執行得很好。
-
MySQL與PHP非常友好,是最受讚賞的Web開發語言。
-
MySQL支援大型資料庫,可達5千萬行以上的表。 表的預設檔案大小限制為4GB,但可以增加(如果作業系統可以處理它),800萬TB是一個理論極限(TB).
-
MySQL是定製的。開源GPL許可允許程式設計師修改MySQL軟體,以適應自己的特定環境。
在開始學習MySQL之前
開始學習本教程之前,應該學習過PHP和HTML等基本知識。
本教程特別注重在PHP環境使用MySQL。所以在本教程中給出的許多例子是基於PHP程式來講解的。
所以建議先學習/看看PHP教程(供大家參考)。
下載MySQL:
所有的MySQL可以從以下連結下載:MySQL下載. 挑選 MySQL社群伺服器版本號,並儘可能準確對應想要的安裝平臺。
安裝MySQL在Linux/UNIX上
推薦通過RPM的方式在Linux系統上安裝MySQL。MySQL AB公司在其網站上可供下載以下RPM:
-
MySQL - MySQL資料庫伺服器,管理資料庫和表,控制使用者的訪問,並處理SQL查詢。
-
MySQL-client - MySQL客戶端程式,這使得它可以連線到伺服器並進行互動。
-
MySQL-devel - 庫和標頭檔案在編譯使用MySQL的其他程式時使用。
-
MySQL-shared - 共享庫的MySQL客戶端。
-
MySQL-bench - MySQL資料庫伺服器的基準測試和效能測試工具。
這裡列出的都是建立在SUSE Linux系統的MySQL 的RPM包,但它們通常也可以執行在其他Linux也不會有問題。
現在,按照如下步驟進行安裝:
-
使用 root 使用者登入系統。
-
切換到包含RPM的目錄:
-
通過執行以下命令來安裝MySQL資料庫伺服器。 請使用 RPM 檔案的名稱替換檔名(斜體字部分)。
[[email protected]]# rpm -i MySQL-5.0.9-0.i386.rpm
上面的命令需要安裝MySQL伺服器,建立MySQL使用者,建立必要的配置,並自動啟動MySQL伺服器。
可以找到所有的MySQL相關的二進位制檔案在 /usr/bin 和 /usr/sbin. 所有表和資料庫將在 /var/lib/mysql 目錄中建立。
-
這是可選的,但推薦的步驟是以同樣的方式來安裝剩下的 RPM 包:
[[email protected]]# rpm -i MySQL-client-5.0.9-0.i386.rpm [[email protected]]# rpm -i MySQL-devel-5.0.9-0.i386.rpm [[email protected]]# rpm -i MySQL-shared-5.0.9-0.i386.rpm [[email protected]]# rpm -i MySQL-bench-5.0.9-0.i386.rpm
本教程主要是面向想學習MySQL的初學者,在通過本教程的學習後,能夠對MySQL有一個初步的認識並能比較熟練地操作MySQL資料庫。
1、MySQL安裝(Window7 安裝)
在任何版本的 Windows 預設安裝是現在比以前要容易得多,MySQL巧妙地打包安裝程式。只需下載安裝包,隨地把它解壓縮,並執行 mysql.exe. 下載地址:http://dev.mysql.com/downloads/ 頁面如下圖所示:
這裡點選:DOWNLOAD 連結,進入一下頁面:
這裡點選:DOWNLOAD 連結,進入一下頁面:
這裡要求註冊網站帳號,但可以直接通過。如上點選 "No thanks, just start my download",繼續下一步:
提示下載儲存檔案,下載完成後(本教程中下載完成的檔案是:mysql-5.6.25-winx64.zip)解壓檔案放到目錄:D:\software 下,這是一個免安裝包,這裡不需要安裝步驟。
在本教程中MySQL執行檔案在:D:\software\mysql-5.6.25-winx64\bin, 它通過從命令提示符第一次進入測試MySQL伺服器。轉到mysqld伺服器的位置,這裡進入 D:\software\mysql-5.6.25-winx64\bin,然後輸入mysqld.exe,
注:或直接雙擊檔案:mysqld.exe 啟動MySQL服務,如果不啟動資料庫,以下的步驟無法操作;
如果一切順利,會看到有關啟動和InnoDB一些訊息。如果沒有看到,可能有許可權問題。請確保儲存資料的目錄可以訪問任何根據使用者(可能是MySQL)執行資料庫程序。
MySQL不會自己新增到開始選單,並沒有特別漂亮的GUI的方式來停止伺服器。 因此,如果傾向於通過雙擊可執行 mysqld 啟動伺服器,應該記住通過並用 mysqladmin,任務列表,工作管理員或其他 Windows 特定方式來執行。
驗證MySQL安裝
MySQL已經被成功安裝後,基礎表已經被初始化,並且伺服器已經啟動,可以通過一些簡單的測試驗證。
使用中mysqladmin工具程式來獲取伺服器狀態
使用 mysqladmin 來檢查伺服器版本。在目錄 D:\software\mysql-5.6.25-winx64\bin
D:\software\mysql-5.6.25-winx64\bin> mysqladmin --version
看到結果如下:
mysqladmin Ver 8.42 Distrib 5.6.25, for Win64 on x86_64
如果看到這樣的訊息,則有可能是在安裝了一些問題,需要一些幫助解決它。
使用MySQL客戶端執行簡單的SQL命令
可以使用MySQL客戶端使用 mysql 命令連線到 MySQL 伺服器。此時,不需要給任何密碼,因為預設情況下它被設定為空。
所以,只需要使用下面的命令:
D:\software\mysql-5.6.25-winx64\bin> mysql
應該出現一個mysql>提示符。 現在,已連線到MySQL伺服器,可以在MySQL的命令>提示符下執行所有SQL,如下:
mysql> SHOW DATABASES; +----------+ | Database | +----------+ | mysql | | test | +----------+ 2 rows in set (0.13 sec)
安裝後的步驟:
MySQL附帶了一個空密碼有的root使用者。成功後安裝了資料庫和客戶端,需要進行如下設定root密碼:
D:\software\mysql-5.6.25-winx64\bin> mysqladmin -u root password "123456";
注:
1. 關閉正在執行的MySQL服務。2. 開啟DOS視窗,轉到 D:\software\mysql-5.6.25-winx64\bin 目錄。
3. 輸入mysqld --skip-grant-tables 回車。--skip-grant-tables 的意思是啟動MySQL服務的時候跳過許可權表認證。
4. 再開一個DOS視窗(因為剛才那個DOS視窗已經不能動了),轉到mysql\bin目錄。
5. 輸入mysql回車,如果成功,將出現MySQL提示符 >。
6. 連線許可權資料庫: use mysql; 。
6. 改密碼:update user set password=password("123456") where user="root";(別忘了最後加分號) 。
7. 重新整理許可權(必須步驟):flush privileges;
8. 退出 quit。
9. 登出系統,再進入,使用使用者名稱root和剛才設定的新密碼 123456 登入。
現在使MySQL伺服器的連線,那麼使用下面的命令:
D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p Enter password: ******
2、執行和關閉MySQL伺服器
首先檢查MySQL伺服器正在執行與否。在資源管理器檢視有沒有mysqld的程序,如果MySQL正在執行,那麼會看到列出來的 mysqld 程序。如果伺服器沒有執行,那麼可以使用下面的命令來啟動它:
D:\software\mysql-5.6.25-winx64\bin>mysqld 2015-07-30 22:59:20 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2015-07-30 22:59:20 0 [Note] mysqld (mysqld 5.6.25) starting as process 3028 ...
現在,如果想關閉已經執行的 MySQL 伺服器,那麼可以使用下面的命令做到這一點:
D:\software\mysql-5.6.25-winx64\bin>mysqladmin -u root -p shutdown Enter password: ******
3、設定MySQL使用者帳戶
要新增一個新使用者到 MySQL,只需要在資料庫中的新記錄新增到使用者表:mysql.user
下面是新增新使用者:yiibai 的例子,給定 SELECT, INSERT 和 UPDATE許可權並使用密碼:yiibai123; SQL 查詢是:
D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p Enter password: mysql> use mysql; Database changed mysql> INSERT INTO user (host, user, password, select_priv, insert_priv, update_priv) VALUES ('localhost', 'yiibai', PASSWORD('123456'), 'Y', 'Y', 'Y'); Query OK, 1 row affected (0.20 sec) mysql> FLUSH PRIVILEGES; Query OK, 1 row affected (0.01 sec) mysql> SELECT host, user, password FROM user WHERE user = 'yiibai'; +-----------+---------+------------------+ | host | user | password | +-----------+---------+------------------+ | localhost | yiibai | *59A8740AAC5DBCB2907F38891BE42957F699CB77 | +-----------+---------+------------------+ 1 row in set (0.00 sec)
當要新增一個新使用者,記得要PASSWORD()函式加密MySQL新使用的密碼。正如在上面的例子中看到密碼為mypass,進行加密後為:*59A8740AAC5DBCB2907F38891BE42957F699CB77
注意最後要使用 FLUSH PRIVILEGES 語句。 這告訴伺服器重新載入授權表。如果不使用它,那麼將無法使用新的使用者帳戶連線到MySQL伺服器,至少在伺服器重新啟動後才可以。
也可以通過在使用者設定表以下幾列的值為'Y',指定給新使用者的許可權,在執行INSERT查詢後,也可以在以後使用UPDATE查詢更新它們:
-
Select_priv
-
Insert_priv
-
Update_priv
-
Delete_priv
-
Create_priv
-
Drop_priv
-
Reload_priv
-
Shutdown_priv
-
Process_priv
-
File_priv
-
Grant_priv
-
References_priv
-
Index_priv
-
Alter_priv
下面我們來建立一個數據庫:tutorials,使用以下命令:
D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p password; Enter password:
mysql>create database tutorials default character set utf8 collate utf8_general_ci;
新增使用者帳戶的另一種方式是通過使用GRANT SQL命令; 下面的例子將增加使用者zara 並使用密碼zara123 為特定資料庫:tutorials
D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p password; Enter password: mysql> use mysql; Database changed mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP -> ON tutorials.* -> TO 'yiibai'@'localhost' -> IDENTIFIED BY '123456';
這也將建立一條記錄在MySQL資料庫中的表: user
注意: MySQL不會終止命令,直到給一個分號(;)在SQL命令的結尾。
my.ini 檔案配置
大多數情況下,不需要去修改這個檔案。預設情況下,它會具有以下項:
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock [mysql.server] user=mysql basedir=/var/lib [safe_mysqld] err-log=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
在這裡,可以指定錯誤日誌為其它的目錄,否則不應該更改此檔案中的任何內容。
管理 mysql 命令
這裡是重要的MySQL命令,經常在MySQL資料庫的管理或工作中使用:
-
USE Databasename : 用於選擇在MySQL工作區指定的資料庫。
-
SHOW DATABASES: 列出了MySQL資料庫管理系統中的所有可訪問的資料庫。
-
SHOW TABLES: 顯示已經選擇資料庫中的表的命令。
-
SHOW COLUMNS FROM tablename: 顯示屬性,屬性型別,關鍵資訊,NULL是否被允許,預設值和其它的表資訊。
-
SHOW INDEX FROM tablename: 提供所有指標的詳細資訊表,其中包括PRIMARY KEY.
-
SHOW TABLE STATUS LIKE tablename\G: 報告MySQL的資料庫管理系統的效能和統計資料的詳細資訊。
4、使用MySQL二進位制連線MySQL
可以使用MySQL二進位制在命令提示符下建立MySQL資料庫的連線。
示例:
下面是一個簡單的例子,從命令提示符連線MySQL伺服器:
D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p Enter password:
注意,這裡密碼為空,直接回車就就進入mysql>命令提示符下,能夠執行任何SQL命令。以下是上述命令的結果:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.6.25 MySQL Community Server (GPL) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
在上面的例子中,我們使用 root 使用者,但可以使用任何其他使用者。任何使用者將能夠執行所有的SQL操作(前提這個使用者有對應執行SQL許可權)。
任何時候使用exit命令在mysql>提示符下,從MySQL資料庫斷開。
mysql> exit Bye
5、MySQL建立資料庫
需要特殊許可權建立或刪除一個MySQL資料庫。因此,假如有權使用 root 使用者,就可以用mysql中的mysqladmin來建立資料庫。
示例:
下面是一個簡單的例子,建立名為 tutorials 的資料庫。
D:\software\mysql-5.6.25-winx64\bin> mysqladmin -u root -p create tutorials Enter password:<回車>
或
D:\software\mysql-5.6.25-winx