XAMPP-MySQL入門使用

XAMPP內的MySQL是MariaDB。

How to use

XAMPP也內建有資料庫管理工具PhpMyAdmin,啟動MySQL後,在你的主機/phpmyadmin路徑下可以開啟它。

當然你也可以用shell登入,不過指令有點多,這邊就先不採用

預設phpmyadmin會使用root直接登入,所以我們來看一點權限設定的部分

XAMPP 5.6.15 修改 MySQL 密碼與 PhpMyAdmin 設定

  • 刪除匿名登入
  • 設定root密碼
  • 修改phpmyadmin設定檔(config.inc.php)
  • 新增操作使用者(避免使用root存取DB)

這樣我們有了root密碼和另一個使用者(寫程式時帳密就變成必填),而在我們開啟phpmyadmin這時會自動帶入我們剛才設定的config去登入(config預設還是root)

或可以不要在config設密碼然後修改$cfg['Servers'][$i]['auth_type'] = 'http';,就可以在開啟phpmyadmin頁面時卡一個使用者登入了

(首頁logo下方有登出可以按)

參考文章:

MariaDB的版本資訊

MySQL家族版本圖

mysql_version

MySQL default engine

  • MySQL 5.1之前預設是: MyISAM

  • MySQL 5.5之後預設是: InnoDB

    (中間的版本好像跳掉了???)

MyISAM屬於Table-level-lock,當資料表正在異動時,會整表lock住不能讀取

InnoDB屬於Row-level-lock,當資料表正在異動時,只會lock住有異動的row,其它資料仍然有機會可以讀取

InnoDB還支援了ACID transaction功能

  • Atomicity(原子性,不可分割性)
  • Consistency(一致性)
  • Isolation(隔離性)
  • Durability(持久性)

參考: MySQL 中,MyISAM 與 InnoDB 帶來的差異

START TRANSACTION(BEGIN)

(InnoDB)

預設狀況下,SQL語句都會被立即執行並且提交結果

可以SELECT @@AUTOCOMMIT;查詢這個參數,預設為1

START TRANSACTION;BEGIN;可以開啟一個交易區塊,表示在COMMIT;指令執行前的SQL執行結果都不會被立即提交出去

意思是當你在中間做新增、刪除、修改…等,在別的連線中都還不會存取到你的結果(但有一些指令會強制造成交易中斷),

交易中ROLLBACK;指令會讓交易取消,並且回到交易前的狀態。

SET AUTOCOMMIT = 0;這時候自動提交的功能被關閉,所以即使不開啟交易也是會像上面的狀況一樣,必須等到COMMIT;才會將結果提交出去。

查詢autocommit參數 = 1,開啟交易區塊,並且插入一筆資料(3, 'Jimmy'),從另一個連線查看並沒有結果(還沒COMMIT)

參考:

import file to MySQL

原先使用phpmyadmin操作csv匯入,但時間實在是太久了(平均一個檔30MB)

後來直接使用shell操作比較有效。

先建好db, table, 各欄位

附上匯入檔案指令(utf8編碼)

1
LOAD DATA LOCAL INFILE '檔案路徑名稱' INTO TABLE 完整表格名稱 CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

推薦文章