# MySQL筆記
第一次學MySQL資料庫,感覺需要做點語法統整不然會亂掉
## 資料庫初始化
下載跟pip install那些我就不紀錄了,這次著重在語法
### 連接MySQL
首先要連接下載時就會生成的root
```python=
import mysql.connector
db = mysql.connector.connect(
host = "localhost", # 因為是本機
user = "root",
password = "才不告訴你哩"
)
```
### 建立DB
再來就要建立database
```python=
myCursor = db.cursor() # 用cursor來操作db
myCursor.execute("CREATE DATABASE test_database") # MySQL很愛大寫字母
```
這樣就能把db連結到我剛剛創造的test_database了
```python=
db = mysql.connector.connect(
host = "localhost", # 因為是本機
user = "root",
password = "才不告訴你哩",
database = "test_database"
)
```
這樣就有非常非常基本的MySQL資料庫了
## table語法
TABLE有超 ~~~ 多東西可以玩
### 建立table
```python=
myCursor.execute("CREATE TABLE Person (name VARCHAR(50), age smallint UNSIGNED, personalID int PRIMARY KEY AUTO_INCREMENT)")
```
這代表我有個叫Person的table且Person有三個column,分別是只能有50個字元的name、二位數以內且大於0的age、每個人都不同且會自動產生的遞增personalID
### 查看column
用DESCRIBE來看
```python=
myCursor.execute("DESCRIBE Person")
for i in myCursor:
print(i) # myCursor是可以迭代的,i是一個tuple
```
輸出長這樣

### 插入資料
那要怎麼放資料到table裡呢
```python=
myCursor.execute("INSERT INTO Person (name, age) VALUES (%s, %s)", ("Weber", 17))
myCursor.execute("INSERT INTO Person (name, age) VALUES (%s, %s)", ("Amber", 22))
myCursor.execute("INSERT INTO Person (name, age) VALUES (%s, %s)", ("Jabey", 22))
# 用字串格式化插入資料
db.commit() # 不commit就不會存下來
```
小提醒,因為personalID是自動產生的,所以插入的時候不用寫
### 選取資料
這邊真的超重要也超好玩,首先是選取整個table的資料
```python=
myCursor.execute("SELECT * FROM Person")
# * 代表全域,跟HTML裡的一樣
for i in myCursor:
print(i)
```
輸出結果長這樣

也可以只選特定column中的資料
```python=
myCursor.execute("SELECT name FROM Person")
for i in myCursor:
print(i)
```
這樣就能找到所有名字

還能針對資料做篩選
```python=
myCursor.execute("SELECT name FROM Person WHERE age = 22 ")
for i in myCursor:
print(i)
```
這樣就能找到所有22歲的人

更猛的是還能排序
```python=
myCursor.execute("SELECT name, personalID FROM Person WHERE age = 22 ORDER by personalID DESC")
# DESC是降序,ACS是升序
for i in myCursor:
print(i)
```

超酷的(o゜▽゜)o☆
### 修改column
首先可以添加column
```python=
myCursor.execute("ALTER TABLE Person ADD COLUMN favFood VARCHAR(50)")
```
變這樣

還能拋棄column
```python=
myCursor.execute("ALTER TABLE Person DROP favFood")
```
這樣就會變回來

甚至能粗暴改變現有column
```python=
myCursor.execute("ALTER TABLE Person CHANGE age age mediumint UNSIGNED")
```
這樣age就能存到三位數

目前這樣感覺就很夠了,先安內