首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 入門實戰教程:從安裝連接到核心查詢與管理

     編輯:MySQL 綜合教學

MySQL 入門實戰教程:從安裝連接到核心查詢與管理

本教程基於 MySQL 5.6 官方文檔核心章節,結合實操演示,帶領零基礎讀者快速掌握 MySQL 連接、查詢、庫表創建、數據導入、檢索、批處理、常用查詢模式及 Apache 整合。所有代碼均經實測可直接運行。

目錄

  1. 連接與斷開服務器
  2. 輸入查詢基礎
  3. 創建並使用數據庫
  4. 獲取庫表信息
  5. 批處理模式
  6. 常見查詢示例
  7. 與 Apache 整合

1. 連接與斷開服務器

標準連接命令:

mysql -h host -u user -p
# 輸入密碼後進入 mysql> 提示符

本地連接可省略 -h:

mysql -u root -p

斷開連接:

mysql> QUIT
# 或 EXIT、Ctrl+D

2. 輸入查詢基礎

MySQL 以分號 ; 判斷語句結束,支援多行輸入:

mysql> SELECT VERSION(), CURRENT_DATE;
+------------+--------------+
| VERSION()  | CURRENT_DATE |
+------------+--------------+
| 5.6.21-log | 2014-10-14   |
+------------+--------------+

可作計算器用:

mysql> SELECT SIN(PI()/4), (3+2)*5;

單行多語句:

mysql> SELECT VERSION(); SELECT NOW();

取消當前輸入:輸入 \c。

提示符含義:

提示符含義
mysql>就緒接受新命令
->等待多行語句下一行
'> / ">字符串未閉合(單/雙引號)
`>標識符未閉合(反引號)
/*>註釋未閉合

遇到 '> 或 "> 時,補全引號再輸入 \c 取消。

3. 創建並使用數據庫

3.1 創建與選擇數據庫

mysql> SHOW DATABASES;
mysql> CREATE DATABASE menagerie;
mysql> USE menagerie
Database changed

注意: Unix 下庫表名區分大小寫,建議統一小寫。

3.2 創建表

mysql> CREATE TABLE pet (
    name VARCHAR(20),
    owner VARCHAR(20),
    species VARCHAR(20),
    sex CHAR(1),
    birth DATE,
    death DATE
);
mysql> DESCRIBE pet;  -- 查看表結構

3.3 給表填充數值

方式一:LOAD DATA(批量高效)

準備 pet.txt(Tab 分隔,NULL 用 \N):

Fluffy  Harold  cat  f  1993-02-04  \N
Claws   Gwen    cat  m  1994-03-17  \N
Buffy   Harold  dog  f  1989-05-13  \N
Fang    Benny   dog  m  1990-08-27  \N
Bowser  Diane   dog  m  1979-08-31  1995-07-29
Chirpy  Gwen    bird f  1998-09-11  \N
Whistler Gwen   bird \N 1997-12-09  \N
Slim    Benny   snake m 1996-04-29  \N

導入:

mysql> LOAD DATA LOCAL INFILE '/home/user/pet.txt' INTO TABLE pet;

方式二:INSERT(單條插入)

mysql> INSERT INTO pet VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);

3.4 從表中檢索信息

選擇所有: SELECT * FROM pet;

修正數據: UPDATE pet SET birth='1989-08-31' WHERE name='Bowser';

條件查詢:

SELECT * FROM pet WHERE name='Bowser';
SELECT * FROM pet WHERE birth >= '1998-1-1';
SELECT * FROM pet WHERE species='dog' AND sex='f';
SELECT * FROM pet WHERE species='snake' OR species='bird';

選擇特定列:

SELECT name, birth FROM pet;
SELECT DISTINCT owner FROM pet;

排序:

SELECT name, birth FROM pet ORDER BY birth;
SELECT name, birth FROM pet ORDER BY birth DESC;
SELECT name, species, birth FROM pet ORDER BY species, birth DESC;

日期計算:

SELECT name, birth, CURDATE(),
       TIMESTAMPDIFF(YEAR, birth, CURDATE()) AS age
FROM pet ORDER BY age;

處理 NULL: 必須用 IS NULL/IS NOT NULL,不能用 = NULL。

模式匹配:

SELECT * FROM pet WHERE name LIKE 'b%';      -- 以 b 開頭
SELECT * FROM pet WHERE name LIKE '%fy';     -- 以 fy 結尾
SELECT * FROM pet WHERE name LIKE '%w%';     -- 包含 w
SELECT * FROM pet WHERE name LIKE '_____';   -- 5 字符
SELECT * FROM pet WHERE name REGEXP '^b';    -- 正則:以 b 開頭

統計計數:

SELECT COUNT(*) FROM pet;
SELECT owner, COUNT(*) FROM pet GROUP BY owner;
SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;

多表關聯(自關聯):

CREATE TABLE event (name VARCHAR(20), date DATE, type VARCHAR(15), remark VARCHAR(255));
-- 導入 event.txt 後
SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species
FROM pet AS p1 INNER JOIN pet AS p2
  ON p1.species = p2.species AND p1.sex='f' AND p2.sex='m';  -- 找配對

4. 獲取庫表信息

SHOW DATABASES;
SELECT DATABASE();           -- 當前庫
SHOW TABLES;
DESCRIBE pet;                -- 表結構
SHOW CREATE TABLE pet;       -- 建表語句

5. 批處理模式

將 SQL 寫入文件 batch.sql:

SHOW DATABASES;
SELECT DATABASE();
USE menagerie;
SHOW TABLES;
SELECT DISTINCT species FROM pet;

執行:

mysql -u root -p < batch.sql
# 格式化輸出加 -t,顯示執行語句加 -vvv

6. 常見查詢示例

使用 shop 表(article, dealer, price,主鍵 article+dealer)。

6.1 列最大值

SELECT MAX(article) AS article FROM shop;

6.2 最大值所在行

SELECT article, dealer, price FROM shop
WHERE price = (SELECT MAX(price) FROM shop);
-- 或 LEFT JOIN / LIMIT 1

6.3 分組最大值

SELECT article, MAX(price) AS price FROM shop GROUP BY article;

6.4 分組最大值所在行

SELECT article, dealer, price FROM shop s1
WHERE price = (SELECT MAX(s2.price) FROM shop s2 WHERE s1.article = s2.article);
-- 或 JOIN 子查詢 / LEFT JOIN

6.5 用戶變量

SELECT @min:=MIN(price), @max:=MAX(price) FROM shop;
SELECT * FROM shop WHERE price=@min OR price=@max;

6.6 外鍵約束

InnoDB 支持外鍵,語法:

CREATE TABLE shirt (
    id INT AUTO_INCREMENT PRIMARY KEY,
    style ENUM('t-shirt','polo','dress') NOT NULL,
    color ENUM('red','blue','orange','white','black') NOT NULL,
    owner SMALLINT UNSIGNED NOT NULL REFERENCES person(id),
    PRIMARY KEY (id)
) ENGINE=InnoDB;

注意: MySQL REFERENCES 不檢查引用表是否存在、不觸發級聯動作、不創建索引,僅作為列屬性存在。

7. 與 Apache 整合

將 Apache 日誌格式調整為 CSV,便於 LOAD DATA 導入 MySQL 分析:

LogFormat "\"%h\",%{%Y%m%d%H%M%S}t,%>s,\"%b\",\"%{Content-Type}o\",\"%U\",\"%{Referer}i\",\"%{User-Agent}i\""

導入:

LOAD DATA INFILE '/local/access_log' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\';

快速入門建議

  1. 先掌握 SQL 基礎語法(CRUD、JOIN、GROUP BY、子查詢)。
  2. 熟練使用 mysql 客戶端交互與批處理。
  3. 閱讀官方文檔 Data Types、Functions、Storage Engines 章節。
  4. 實踐建庫、建表、導數據、寫查詢、建索引、EXPLAIN 分析全流程。
  5. 推薦參考書:《MySQL 必知必會》、《高性能 MySQL》(進階)。

總結

MySQL 入門核心在於:連接認證 → 庫表對象管理 → 數據導入導出 → 查詢檢索技巧 → 批處理自動化 → 常見模式積累 → 系統整合。本教程提供了可直接運行的完整代碼示例,建議在測試環境逐行敲擊練習,構建肌肉記憶,奠定扎實基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved