首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 多表關聯查詢與備份處理實例

     編輯:MySQL 資料庫相關知識

場景準備

已有員工基本信息表 mytable:

+----------+------+------------+-----------+
| name     | sex  | birth      | birthaddr |
+----------+------+------------+-----------+
| abccs    | f    | 1977-07-07 | china     |
| mary     | f    | 1978-12-12 | usa       |
| tom      | m    | 1970-09-02 | usa       |
+----------+------+------------+-----------+

建立文章表 title

CREATE TABLE title (
  writer VARCHAR(20) NOT NULL,
  title  VARCHAR(40) NOT NULL,
  senddate DATE
);

插入樣本數據:

+--------+-------+------------+
| writer | title | senddate   |
+--------+-------+------------+
| abccs  | a1    | 2000-01-23 |
| mary   | b1    | 1998-03-21 |
| abccs  | a2    | 2000-12-04 |
| tom    | c1    | 1992-05-16 |
| tom    | c2    | 1999-12-12 |
+--------+-------+------------+

多表關聯查詢實例

1. 查詢 abccs 的姓名、性別與所有文章

SELECT m.name, m.sex, t.title
FROM mytable m, title t
WHERE m.name = t.writer AND m.name = 'abccs';

結果:

+-------+------+-------+
| name  | sex  | title |
+-------+------+-------+
| abccs | f    | a1    |
| abccs | f    | a2    |
+-------+------+-------+

2. 查詢文章 a2 的作者、出生地與出生日期

SELECT t.title, t.writer, m.birthaddr, m.birth
FROM mytable m, title t
WHERE m.name = t.writer AND t.title = 'a2';

結果:

+-------+--------+-----------+------------+
| title | writer | birthaddr | birth      |
+-------+--------+-----------+------------+
| a2    | abccs  | china     | 1977-07-07 |
+-------+--------+-----------+------------+

關鍵點提示

  • 兩表關聯欄位名不同時(name vs writer),直接用表別名限定即可。
  • 若同名(如皆為 name),必須寫成 mytable.name = title.name 避免歧義。
  • 舊式逗號關聯等價於 INNER JOIN ... ON,建議新代碼使用显式 JOIN 語法。

備份處理建議

  1. 邏輯備份:mysqldump -u root -p --databases db_name > backup.sql
  2. 物理備份(MyISAM):停服務後直接複製 .frm/.MYD/.MYI 檔案。
  3. 定時任務:結合 crontab 或 Windows 任務計劃,保留最近 N 份備份。
  4. 驗證:定期在測試環境還原,確保備份可用性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved