MySQL/MySQL 實用指南
由於 MySQL 本身不足以執行真正的資料庫伺服器,所以安裝它的更實用方法是部署一個一體化包,其中包含所有必要的額外元素:Apache 和 PHP。
Windows 10 注意
- 伺服器 IIS 預設啟動,這會導致 Apache 更改其埠(888 而不是 80)。要解決這個問題,只需在“程式和功能”中取消選中“Internet Information Services”,然後“啟用或停用 Windows 功能”。同樣,MySQL 埠可能會從 3306 更改為 3388。
- 此外,EasyPHP 開發伺服器(別名 Devserver,紅色版本)無法正常工作(缺少 MSVCR110.dll),但EasyPHP 託管伺服器(別名 Webserver,藍色版本)可以。但是,它在每次啟動時都會自動啟動,這會顯著降低系統速度。為了避免這種情況,請執行services.msc,並將以下三個服務切換到手動啟動。然後,要按需(以管理員身份)啟動它們,請建立一個名為MySQL.cmd的指令碼,其中包含以下幾行
net start ews-dbserver
net start ews-httpserver
net start ews-dashboard
pause
net stop ews-dashboard
net stop ews-httpserver
net stop ews-dbserver
本指南從使用 Ubuntu 和 apt-get 的 Linux Shell 的角度撰寫[1]。
如果您只想使用終端:
確保您已安裝 MySQL 客戶端和伺服器。要在 apt-get 發行版(例如 Debian 和 Ubuntu)下安裝客戶端和伺服器,請執行
apt-get install mysql-client mysql-client-5.0 mysql-server mysql-server-5.0
關於 MySQL 包
確保安裝安全:
如果以下所有答案都是“是”,那麼這將清理您的安裝,強制您設定 root 密碼,要求您測試匿名使用者並使您的資料庫內部化。
請務必小心。確保您正在按照您的規格配置 MySQL。
以下是程式碼
mysql_secure_installation
現在 MySQL 已安裝,您不一定擁有自己的賬戶,因此您必須以 root 身份登入。
要執行此操作,請鍵入
sudo mysql -u root -p
(這意味著您正在以“root”使用者身份登入(-u root),並且您正在請求“root”的密碼(-p))
成功登入後,您的命令列應如下所示:mysql>
順便說一句,如果您的命令列最終看起來像這樣:-> 則有一個解釋。
在 MySQL 中,您執行的每個命令都必須以;結尾。這樣它就知道;後面的所有內容都是一個命令。
因此,要退出,只需鍵入;。稍後將對此進行更多介紹。
現在您可以檢查哪些資料庫(如果有)可供您的使用者使用(在本例中為“root”)
show databases;
讓我們直奔主題,建立自己的資料庫。讓我們把它命名為people。在建立資料庫的同時,我們也可以建立自己的使用者賬戶。一舉兩得。
因此,首先建立資料庫
create database people;
(注意:在本例中,您必須是“root”才能建立新資料庫。)
現在我們想授予(GRANT)來自(ON)整個(*)people 資料庫的所有使用者許可權(ALL)給(TO)您的賬戶(yourusername@localhost),您的使用者密碼為stuffedpoodle(IDENTIFIED BY "stuffedpoodle")。
所以我們會輸入以下內容
GRANT ALL ON people.* TO yourusername@localhost IDENTIFIED BY "stuffedpoodle";
太棒了!您現在有了自己的使用者賬戶。假設您選擇ted作為您的使用者名稱。您已配置 MySQL 以表明ted可以根據自己的意願使用people 資料庫。
現在透過鍵入以下內容退出 MySQL
exit
要開始使用people 資料庫,您現在可以以ted身份登入
mysql -u ted -p
在 MySQL 中,資訊儲存在表格中。表格包含列和行。
Ted現在建立了一個people 資料庫。因此,我們現在想將一些資訊輸入表格中。
以ted身份登入。
首先,我們需要確保我們正在使用people 資料庫。所以鍵入
select database();
將顯示您當前正在使用的資料庫。您應該看到一個NULL,這意味著您目前沒有使用任何資料庫。
因此,要開始使用 people 資料庫,請鍵入
\u people
(注意:鍵入:USE people 或以mysql people -u ted -p身份登入也是可以接受的。)
那麼如何建立表格呢?
請記住,我們需要設定所有列值(如姓氏、年齡等)。
現在,還記得那個煩人的->符號嗎?MySQL 將您的命令視為一個命令,而不是一系列命令。因此,-> 使您能夠以比在一行上寫下所有內容更友好的方式輸入內容。(注意:此方法的問題在於,如果您在一行上犯了錯誤並按 ENTER 轉到下一行,則無法返回並更正錯誤。這就是為什麼使用SciTE 文字編輯器(將語言設定為SQL)編寫程式碼並將程式碼複製貼上到 shell 中是一個很好的方法。)
還有一點是,您必須在除最後兩行外的每行的末尾用,分隔行。在倒數第二行,不要新增,,最後一行始終以;結尾。
首先,我需要解釋幾件事,這樣您就不會被一堆陌生的程式碼嚇到。
如果您不知道,我們使用括號()來封裝程式碼。(通常稱為圓括號)。
在CREATE TABLE tableName 和第一個括號之後,我們將要寫的第一個內容是每個人的資料庫 ID 編號(我們使用整數[3]),主要稱為主鍵。它有點像護照 ID 號碼。每個號碼對它的所有者都是唯一的,並且它必須是唯一的,以防止重複和冒充。
現在,SQL 中的任何變數都是這樣建立的
variableNAME variableTYPE otherVariableAttributes
. 因此,為了定義主鍵變數,我們需要鍵入例如
peopleID(變數名稱) int(變數型別 - “integer”的縮寫) unsigned(表示我們希望我們的整數值始終為正數) not null(我們希望每行都具有一個值,因此顯然該值不能為空 (NULL)) auto_increment(這將確保建立的每個新行都是唯一的) primary key(我們正在說這個特定的變數將是該表格的主鍵。), (提醒您,, 符號表示該行的結束,因此 MySQL 知道要轉到下一行)
您已經瞭解了int 變數。還有一個類似於String 的變數(例如:如果您以前使用過 Java 程式設計)。它被稱為varchar,代表可變字元。您為有人可以輸入varchar 變數的字元數設定一個值。像這樣:nameOfFattestMooseAlive varchar(30) 所以nameOfFattestMooseAlive 最多可以包含 30 個字元。
好的,那麼讓我們來看一個關於如何建立與people 資料庫相關的表格的例子
CREATE TABLE peopleInfo ( peopleID int unsigned not null auto_increment primary key, firstName varchar(30), lastName varchar(30), age int, gender varchar(13) );
請注意,我將gender 的最大值設定為 13,因為“hermaphrodite” 有 13 個字元。:)
現在您可以鍵入:CREATE TABLE peopleInfo 並按 ENTER 鍵,如果您想開始-> 並編寫其餘的程式碼,或者您可以使用 SCITE 並將其複製貼上到您的 shell 中。
太棒了。我們現在完成了第一個表格。
現在到了我們要將一些真實的人員輸入到我們的peopleInfo 表格中的部分。
由於您已使用people 資料庫,因此您可以鍵入
show tables;
檢視當前資料庫中的表格。要查看錶格的屬性,請鍵入
describe peopleInfo;
那麼,如何將人員填充到我們的peopleInfo 表格中呢?
這是透過告訴 MySQL 您要填充的行以及您要填充的實際資訊/資料來完成的。
因此,我們想插入到我們的表格中(指定行)並輸入我們想要的值(實際資料)。(注意:我們沒有填寫主鍵。)
要建立第一個人,您會鍵入以下內容
INSERT INTO peopleInfo
(firstName, lastName, age, gender)
values
("Bill", "Harper", 17, "male");
太棒了。現在,如果您想將表格的所有資訊列印到螢幕上,請鍵入
select * from peopleInfo;
就是這樣。您的表格現在儲存了第一個人。
將大量資訊插入到您的表格中
一個將在稍後討論的要點是,MySQL 將其自身備份到 .sql 檔案中。這樣做很聰明,因為它會將文字檔案中的實際程式碼備份。
考慮到這一點,假設我們要在你的 peopleInfo 表中新增 10 個人。如果手動輸入每一個人,那將是一件非常繁瑣的事情。如果要新增 1000 個人怎麼辦?
因此,我已經很貼心地寫出了將 10 個人填充到資料庫中的程式碼。:) 建立一個空白的 .txt 檔案,並將以下資訊複製貼上到其中,儲存為 tenPeople.sql。
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Mary", "Jones", 21, "female");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Jill", "Harrington", 19, "female");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Bob", "Mill", 26, "male");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Alfred", "Jinks", 23, "male");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Sandra", "Tussel", 31, "female");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Mike", "Habraha", 45, "male");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("John", "Murry", 22, "male");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Jake", "Mechowsky", 34, "male");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Hobrah", "Hinbrah", 24, "hermaphrodite");
INSERT INTO peopleInfo (firstName, lastName, age, gender) values ("Laura", "Smith", 17, "female");
很好。現在我們要將所有這些人新增到我們的表格中。退出 MySQL,並轉到儲存 tenPeople.sql 檔案的目錄。
到達那裡後,要將所有資料新增到你的資料庫,輸入:
mysql -u ted -p people <tenPeople.sql
然後輸入你的密碼。
現在登入到 MySQL,並記住選擇你正在使用的資料庫。\u people
現在再次檢查你擁有的資訊。好了。
操作你的資料庫
[edit | edit source]現在我們有一個充滿了人的資料庫。我們可以以我們想要的方式顯示這些資訊。
一個簡單的例子是
select firstName, lastName, gender from peopleInfo;
這隻會將人們的姓名、姓氏和性別顯示在螢幕上。你沒有指定要顯示人們的資料庫 ID、數字或年齡。而且最棒的是,你可以選擇要顯示的資料庫中的任何內容。現在,如果你想刪除你的表格,只需輸入
drop table peopleInfo;
附加條件
你也可以在顯示資料時使用額外的條件(過濾器)。
select * from peopleInfo where gender = 'female';
將顯示所有女性。
(注意:字母用 ' 括起來,而數字則直接使用。)
你也可以比較數字。例如
select * from peopleInfo where age > 17;
將顯示錶格中所有年齡大於 17 的人。
一個小索引
> greater than < less than >= greater or equal to <= less than or equal to <> not equal to
假設我們要顯示所有姓氏以字母 “j” 開頭的人。我們將使用 LIKE 條件。(說得通,你的名字像字母 “j” 嗎?如果它以 j 開頭,那麼答案是肯定的。:))
關於 LIKE 條件。
select * from peopleInfo where firstName LIKE "j%";
(注意:LIKE 的邪惡的相反的表兄弟是 NOT LIKE)
備份和恢復你的 MySQL 資料庫
[edit | edit source]有一個名為 mysqldump 的函式。這是一種備份資料庫的方法。
還記得你如何從 tenPeople.sql 中將資訊匯入資料庫嗎?這就是你將資訊恢復到資料庫的方式。
(在這種特殊情況下,你必須確保你的資料庫中有一個名為“peopleInfo”的表格)
現在...
要備份你的資料庫(在本例中備份 people 資料庫)
我們首先要建立我們要備份到的 .txt 檔案。開啟一個空白的 .txt 檔案,並將其儲存為 backupfile.sql。
現在我們可以輸入
mysqldump -u ted -p people > backupfile.sql
恭喜你。你現在已經備份了你的 people 資料庫。
警告! mysqldump 是備份生產資料庫的最糟糕方法之一,原因如下
- 它需要相當長的時間來轉儲資料
- 恢復需要更長的時間。取決於資料量,可能需要幾天時間!
- MyISAM 表或混合環境的鎖定問題
更好的解決方案基於二進位制複製。它允許你執行非鎖定、一致的備份。
對於 MyISAM 或混合環境
- LVM 快照
對於 InnoDB
- LVM 快照
- ZFS 快照(適用於 Solaris 系統)
- InnoDB 熱備份
- XtraBackup(類似於 InnoDB 熱備份,但免費)
phpMyAdmin
[edit | edit source]這個圖形介面允許透過用滑鼠選擇一些選項來生成 SQL 程式碼。該軟體在 http://wiki.cihar.com/pma/Welcome_to_phpMyAdmin_Wiki 上有自己的維基頁面。
Hello world
[edit | edit source]要輸入 SQL 命令
- 在 shell 中啟動 MySQL
- Linux:
mysql-h localhost -u root MyDB - Windows:
"C:\Program Files (x86)\EasyPHP\binaries\mysql\bin\mysql.exe"-h localhost -u root MyDB
- Linux:
- 或者在 PhpMyAdmin 中開啟一個 SQL 視窗(例如:https:///modules/phpmyadmin/#PMAURL-1:server_sql.php?server=1)。
select "hello world";
+-------------+
| hello world |
+-------------+
| hello world |
+-------------+
1 row in set (0.00 sec)