」則可執行Adminer。
### 二、 注意資料庫的「校對」
1. 「資料庫」和「資料表」名稱不能以「數字」或特殊符號作為開頭。
2. MySQL 4.1 以後,建立資料表時,若要使用UTF8,在「校對」選項請選擇「utf8\_general\_ci」。(latin1\_swedish\_ci是預設值,記得改掉!)
### 三、 建立資料表
1. 登入,選擇「資料庫」,點擊「建立資料表」,輸入資料表名稱,引擎選用「MyISAM」,校對選用「utf8\_general\_ci」。
2. 基本動作:設好欄位名稱→指定資料型態(適當的資料類型讓您上天堂!)
- (1) 若是varchar則一定要設定「長度」,通常建議給到最大255;
- (2) 若是數字則「屬性」多為「unsigned」,即正整數之意;
- (3) 若是要當作流水號,則在「附加」選擇AI即「auto\_increment」最後指定哪些欄位要當作索引。
![](http://www.tad0616.net/uploads/tad_book3/image/1032/p1.png)
### 四、 MySQL常用資料類型一覽
1. (M,D):M是資料位數,最大為255;D是小數位數。
2. \[\]中括號,表示M或D可以省略不寫,不寫的話則以內定範圍為準。
3. unsigned表示正整數狀態,也就是沒有負數。
4. zerofill表示位數不足補0,如int(4),存28這個數字,資料庫會將之存成0028。
5. 日期部份:Y代表的是年,YY代表2位數的年,如97年,YYYY代表4位數的年,如2001年,其餘的M(月)、D(日)依此類推。
6. 當年份數字在00-69之間,則會被當作2000-2069,若是在70-99之間,則當作1970-1999!
7. php的時間戳記是unix timestamp是由1970/01/01 00:00累計之今的秒數。而MySQL的時間戳記則是YYYYMMDDHHMMSS,根據M值而有所不同。
8. Big5中文,一個字佔2位元;UTF-8中文,一個字佔3位元。
| 類型 | bytes | 範圍 | 選項 |
數字類型 | **TINYINT**(M) 非常小整數 | 1 | -128到127,unsigned狀態則為0到255 | unsigned、zerofill |
**SMALLINT**(M) 較小整數 | 2 | -32768到32767,unsigned狀態則為0到65535 | unsigned、zerofill |
**MEDIUMINT**(M) 中型整數 | 3 | -8388608到8388607,unsigned狀態則為0到16777215 | unsigned、zerofill |
**INT**(M) 標準整數 | 4 | -2147483648到2147483647unsigned狀態則為0到4294967295 | unsigned、zerofill |
**BIGINT**(M) 大整數 | 8 | -9223372036854775808到9223372036854775807unsigned狀態則為0到18446744073709551615 | unsigned、zerofill |
**FLOAT**(M) 單精確度浮點數 | 4 | FLOAT(M,D)最小非零值:±1.175494351E - 38FLOAT(4)最大非零值:±3.402823466E + 38FLOAT(8)最大非零值:±1.7976931348623157E + 308 | zerofill |
**DOUBLE**(M) 雙精確度浮點數 | 8 | 最小非零值:±2.2250738585072014E - 308 | zerofill |
**DECIMAL**(M,D) | M | 可變;其值的範圍依賴於M和D | zerofill |
日期類型 | **DATE** 日期 | 3 | 1000-01-01到9999-12-31 | |
**DATETIME** 日期時間 | 8 | 1000-01-01 00:00:00到9999-12-31 23:59:59 | |
**TIMESTAMP**(M) 時間戳記 | 2,4,6,8,10,12,14 (左) | 1970-01-01 00:00:00到2037 | |
**TIME** 時間 | 3 | -838:59:59到838:59:59 | |
**YEAR** 年度 | 1 | 1901到2155 | |
文字類型 | **CHAR**(M) 固定長度字串 | M | 1<=M<=255 | |
**VARCHAR**(M) 變動長度字串 | M+1 | 1<=M<=255 | |
**TINYTEXT**非常小的文本串 | M+1 | 255個字元 | |
**TEXT**小文本串 | M+2 | 65535個字元 | |
**MEDIUMTEXT**中等文本串 | M+3 | 16777215個字元 | |
**LONGTEXT**大文本串 | M+4 | 4294967295個字元 | |
**TINYBLOB**超小型BLOB | M+1 | 255個字元 | |
**BLOB**小型BLOB | M+2 | 65535個字元 | |
**MEDIUMBLOB**中型BLOB | M+3 | 16777215個字元 | |
**LONGBLOB**大型BLOB | M+4 | 4294967295個字元 | |
特殊 | **ENUM** 單選選項 | 1或2 | 最多65535個選項 | |
**SET** 複選選項 | 1,2,3,4,8 | 最多64個選項 | |
### 五、 匯出資料表
1. 為了方便系統重建或轉移,我們可以將資料庫結構匯出,方便下一次安裝。
2. 點選「匯出」,格式選用「sql」,並句選要匯出的資料表名稱。若有要匯出資料,則資料部份也需打勾(此例不用)
3. 匯出後是一個xxx.sql檔,此為文字檔,可用任何編輯器開啟,日後易可以方便的進行匯入動作。
4. 您可以將SQL檔打開,並將一些註解及SET刪除掉。
![](http://www.tad0616.net/uploads/tad_book3/image/1032/p2.png)
### 六、 讓PHP連上MySQL
```
$link=@mysql_connect("localhost","root"," 12345");
if($link){
mysql_query("SET NAMES 'utf8'");
mysql_select_db("test");
}else{
die("無法連上資料庫");
}
```
1. 用法:int mysql\_connect("主機位置","資料庫帳號"," 資料庫密碼");
2. 範例:$link=mysql\_connect("localhost","root","12345");
3. 該函數會傳回一個int(整數),我們稱之為「連線編號」,其資料型態為:資源。
4. 只要程式和資料庫都在同一台主機,「主機位置」填入「localhost」即可。
5. 執行SQL語法:int mysql\_query( "SQL語法" \[, 連線編號\]);
6. 結束連線可使用:「mysql\_close($link);」,不過,其實不用也沒關係。
7. 讓MySQL可以順利寫入UTF8中文:mysql\_query("SET NAMES 'utf8'"); 在連線之後,加入此行即可。
8. 選擇資料庫:mysql\_select\_db("資料庫名稱");
### 七、 新增資料到資料庫
1. 寫入一筆資料到MySQL中,就要用insert或replace的語法,其用法如下: ```
insert [into] 資料表名稱 [(欄位1,欄位2...)] values (值1,值2...)
```
2. insert 改為 replace 則為「取代」之意,亦即若唯一索引的欄位值已存在,則用新值覆蓋舊值。若不存在,則新增。
3. 可以一次新增多筆: ```
insert [into] 資料表名稱 [(欄位1,欄位2...)] values ( 值 A1, 值 A2... ) , ( 值 B1, 值 B2...) , ( 值 C1 , C2...) , ( 值 D1 , 值 D2...) ;
```
4. 欄位或資料表稱的前後可加「`」符號(也可不加),而值為字串時,則一定要加引號(通常為單引號)。
### 八、 讀取資料庫內容
1. 要讀出MySQL的資料,那您就要用select這指令。 ```
SELECT 查詢內容 [FROM `資料表名稱` 篩選條件]
```
2. 「篩選條件」有以下幾個東西!注意喔!由上到下就是其語法的先後順序喔!您可不能把LIMIT拿到WHERE的前面,那是錯誤的喔!
- (1) \[where 篩選條件\]
- (2) \[group by 欄位名稱\]\[having group的篩選條件\]
- (3) \[order by {unsigned\_integer | 欄位名稱 | formula} \[asc | desc\] ,...\]
- (4) \[limit \[起點,\] 筆數\]
### 九、 常和select一起用的PHP的函數
1. 從資料庫取得的陣列,索引值可以是數字或字串(即欄位名稱)。$row\[0\] 或 $row\["title"\] ```
$row=mysql_fetch_array();
```
2. 從資料庫取得的陣列,索引值只能是數字(數字索引)。$row\[0\],通常搭配list()來將陣列值套用到指定變數上。 ```
$row=mysql_fetch_row();
```
3. 從資料庫取得的陣列,索引值只能是字串(關聯索引)。$row\["title"\] ```
$row=mysql_fetch_assoc();
```
### 十、 常和GROUP BY搭配使用的MySQL函數
- COUNT():計算數目
- AVG():計算GROUP的平均值
- MIN():找出最小值
- MAX():找出最大值
- SUM():總和