針對日常開發運維高頻命令進行分類整理,並附 PHP 連接流程與參數化查詢範例,適合新手入門與老手速查。
<?php
// 1. 建立連接 (mysqli 面向對象)
$conn = new mysqli("localhost", "username", "password", "database", 3306);
if ($conn->connect_error) {
die("連接失敗: " . $conn->connect_error);
}
$conn->set_charset("utf8mb4"); // 關鍵:設置字符集
// 2. 執行查詢
$sql = "SELECT id, name, email FROM users WHERE status = ? AND created_at > ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("is", $status, $date); // 參數化防注入
$status = 1;
$date = '2023-01-01';
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo $row['name'] . "\n";
}
$stmt->close();
$conn->close();
?>
關鍵點: 必須使用 prepare/bind_param 參數化查詢,set_charset("utf8mb4") 確保編碼一致。
| 操作 | 命令 | 說明 |
|---|---|---|
| 啟動客戶端 | mysql -u root -p | 交互式輸入密碼 |
| 修改密碼 | mysqladmin -u root -p'old' password 'new' | 5.7+ 亦可 ALTER USER |
| 顯示數據庫 | SHOW DATABASES; | |
| 切換數據庫 | USE db_name; | |
| 顯示表 | SHOW TABLES; | |
| 表結構 | DESC table_name; / SHOW CREATE TABLE t; | |
| 建庫 | CREATE DATABASE db_name CHARSET utf8mb4; | |
| 建表 | CREATE TABLE t (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50)); | |
| 刪表 | DROP TABLE t; | |
| 刪庫 | DROP DATABASE db; | |
| 清空表 | TRUNCATE TABLE t; | 非事務、不可回滾、重置自增 |
| 查詢所有 | SELECT * FROM t; | |
| 插入 | INSERT INTO t (name) VALUES ('test'); | |
| 導入 SQL 文件 | mysql -u root -p < /path/file.sql | 命令行執行,非 MySQL 內部 |
| 導出數據 | mysqldump -u root -p db > dump.sql | 命令行執行 |
# 數據文件格式:列間 Tab 分隔,NULL 用 \N 表示
# 文件內容示例:
3 rose 深圳二中 1976-10-10
# 導入命令(需先 USE database)
LOAD DATA LOCAL INFILE 'file.txt' INTO TABLE table_name
FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';
| MySQL 類型 | 格式 | PHP 獲取當前時間 |
|---|---|---|
| DATETIME | YYYY-MM-DD HH:MM:SS | date('Y-m-d H:i:s') |
| TIMESTAMP | YYYY-MM-DD HH:MM:SS | date('Y-m-d H:i:s') |
| DATE | YYYY-MM-DD | date('Y-m-d') |
| TIME | HH:MM:SS | date('H:i:s') |
CREATE TABLE t (
email VARCHAR(100) UNIQUE -- 列級
);
-- 或表級
CREATE TABLE t (
email VARCHAR(100),
UNIQUE KEY uk_email (email)
);