---
# System prepended metadata

title: MySQL學習筆記
tags: [MySQL]

---

{%hackmd BJrTq20hE %}

###### tags: `MySQL`
<style>
	.blue{
		color:#08f;
	}
	.red{
		color:red;
	}
</style>
# MySQL學習筆記
==MySQL==
	此為阿德的MySQL學習筆記，用於記錄學習過程及備忘，如有錯誤歡迎指正或討論。
## 前言

	SQL的全名是(Structured Query Language)翻譯為"結構化查詢語言"，是資料庫的標準數據查詢語言。


---

## SQL基本語法
	在SQL語法中，基本上語句不管大小寫都可以執行，但習慣上，最好將關鍵字大寫，較長的語句
	拆分成多行，以上習慣能讓撰寫出來的程式碼更方便閱讀。
### 資料庫 DATABASE

#### 基本操作

##### 建立資料庫

**<span class="blue">CREATE DATABASE</span> \`資料庫名稱\` ;**


##### 顯示所有資料庫

**<span class="blue">SHOW DATABASES</span>;**


##### 使用資料庫

**<span class="blue">USE</span> \`資料庫名稱\`;**


##### 刪除資料庫

**<span class="blue">DROP DATABASE</span> \`資料庫名稱\` ;**



---

### 表格 TABLE

#### 建立表格欄位

**<span class="blue">CREATE TABLE</span> \`表格名稱\`(
	\`欄位名稱\` 資料形態 參數 ,
	\`欄位名稱\` 資料形態 參數
);**
	EX: 
```
CREATE TABLE `article`(
	`id` INT PRIMARY KEY AUTO_INCREMENT,
	`title` VARCHAR(30),
	`text_content` TEXT,
	`create_time` DATETIME 
);
```


#### 顯示表格欄位資訊

**<span class="blue">DESCRIBE</span> \`表格名稱\`;**


#### 新增表格欄位

**<span class="blue">ALTER TABLE</span> \`表格名稱\`
<span class="blue">ADD COLUMN</span> \`新欄位名稱\` 資料形態 參數 ;**


#### 修改表格欄位

**<span class="blue">ALTER TABLE</span> \`表格名稱\`
<span class="blue">CHANGE COLUMN</span> \`原欄位名稱\`
\`新欄位名稱\` 資料形態 參數 ;**


#### 刪除表格欄位

**<span class="blue">ALTER TABLE</span> \`表格名稱\`
<span class="blue">DROP COLUMN</span> \`原欄位名稱\`;**


#### 刪除表格

**<span class="blue">DROP TABLE</span> \`表格名稱\`;**


#### 查詢表格資料SELECT(撈取)

全部
**<span class="blue">SELECT</span> * <span class="blue">FROM</span> \`表格名稱\`;**

單欄
**<span class="blue">SELECT</span> \`欄位名稱\` <span class="blue">FROM</span> \`表格名稱\`;**

多欄
**<span class="blue">SELECT</span> \`欄位1\` ,\`欄位2\` <span class="blue">FROM</span> \`表格名稱\`;**


##### **WHERE條件式**

**<span class="blue">SELECT</span> * <span class="blue">FROM</span> \`表格名稱\ <span class="blue">WHERE</span> \`欄位1\` = 值 ;**
	EX:
```
SELECT * FROM \`student\` WHERE \`id\` = 1 AND \`SCORE\` > 10 ;
```
##### **ORDER BY 排序**
**<span class="blue">SELECT</span> * 
<span class="blue">FROM</span> \`表格名稱\`
<span class="blue">ORDER BY</span> \`id\` <span class="blue">ACE</span>;**(預設)

ACE:遞增排列
DESC:遞減排列

##### **LIMIT 資料筆數限制**
限制回傳資料筆數
**<span class="blue">SELECT</span> * 
<span class="blue">FROM</span> \`表格名稱\`
<span class="blue">LIMIT</span> 數量;**

限制從 數字1 後一筆開始回傳 數字2 筆資料
**<span class="blue">SELECT</span> * 
<span class="blue">FROM</span> \`表格名稱\`
<span class="blue">LIMIT</span> 數字1,數字2;**

#### 新增表格資料

**<span class="blue">INSERT INTO</span> \`表格名稱\` <span class="blue">VALUES</span> (\`資料1\,\`資料2\,\`資料3\...);**

也可新增指定欄位
**<span class="blue">INSERT INTO</span> \`表格名稱\`(\`欄位1\,\`欄位2\) <span class="blue">VALUES</span> (\`資料1\,\`資料2\);**


#### 修改表格資料

**<span class="blue">UPDATE</span> \`表格名稱\` 
<span class="blue">SET</span> \`欄位1\`= 新值1,\`欄位2\`= 新值2
<span class="blue">WHERE</span> 條件;**


#### 刪除表格資料

**<span class="blue">DELETE FROM</span> \`表格名稱\` 
<span class="blue">WHERE</span> 條件;**

#### 刪除表格內所有資料

**<span class="blue">TRUNCATE</span> \`表格名稱\`;**
只清除資料，保留結構和欄位。


---

## 欄位資料形態
附上W3schools完整的資料形態
[W3schools-MySQL](https://www.w3schools.com/mySQl/mysql_datatypes.asp)
MySQL提供的資料形態大致分為三種，數值、字串、日期時間。
以下舉例常用的資料形態
### 數值
| 資料形態 | 說明 | 範圍 |
|:--------:|:----:|:----:|
|   INT    | 整數。 |無號:0~4294967295         , 有號:-2147483648\~2147483648      |
|   TINYINT    | 最小整數。 | 無號:0\~255，有號:-128\~127     |
|   SMALLINT    | 短整數。 |  無號:0\~65535，有號:-32768\~32767    |
|   MEDIUMINT    | 中型整數。 |    無號:0\~16777215，無號:-8388608\~8388607  |
|   BIGINT    | 長整數。 |  無號:0\~1844744073709551615，有號:-9223372036854775808\~9223372036854775807    |
|   FLOAT(M,D)    | 單精確浮點數，M為整數的位數，D為小數位數。 |  ±3.402823466E+38    |
|   DOUBLE(M,D)    | 雙精度浮點數，用途和FLOAT類似，但儲存空間是兩倍。 |   ±1.7976931348623157E+308   |
|   DECIMAL(M,D)    | M為整數的位數，D為小數位數。 |    M的範圍:1\~65，D的範圍:0\~65 |

### 字串
|  資料形態  |                      說明                      |            範圍             |
|:----------:|:----------------------------------------------:|:---------------------------:|
|  CHAR(M)   | 固定長度字串，儲存長度不足時右邊會自動補空白。 |           M=1~255           |
| VARCHAR(M) |                 變動長度字串。                 | 65,535 ，或255( ver.<5.0.3) |
|  TINYTEXT  |                     短字串                     |             255             |
|    TEXT    |                      字串                      |        65,535 (65KB)        |
| MEDIUMTEXT |                     中字串                     |      16,777,215(16MB)       |
|  LONGTEXT  |                     長字串                     |             4GB             |


### 時間
| 資料形態 | 說明 | 範圍 |
|:--------:|:----:|:----:|
|	DATE	|日期，格式 yyyy-mm-dd|1000-01-01~9999-12-31|
|	TIME	|時間，格式 hh: mm: ss|00:00:00~23:59:59|
|	DATETIME	|日期+時間，格式 yyyy-mm-dd hh:mm:ss||
|	TIMESTAMP	|時間戳記，格式yyyymmddhhmmss ||