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

MySQL 終端命令大全:資料庫、資料表、數據操作從入門到精通

     編輯:MySQL 綜合教學

前言:為什麼要掌握終端操作?

圖形工具 (Workbench、DBeaver) 雖便利,但**終端命令是理解 MySQL 內部機制的最短路徑**,也是自動化腳本、CI/CD、容器化部署的基礎。本文系統整理高頻操作,macOS/Linux/Windows 通用。

一、資料庫 (Database) 管理

1.1 建立資料庫

CREATE DATABASE firstDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 建議顯式指定 utf8mb4 (支援 Emoji),避免預設 latin1

1.2 查看所有資料庫

SHOW DATABASES;
-- 系統庫:information_schema, mysql, performance_schema, sys

1.3 修改資料庫編碼

ALTER DATABASE testDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 僅影響後續新建表,現有表需單獨 ALTER TABLE ... CONVERT TO ...

1.4 切換/使用資料庫

USE firstDB;

1.5 查看當前資料庫

SELECT DATABASE();
-- 或 SHOW TABLES; (顯示當前庫下的表)

1.6 刪除資料庫

DROP DATABASE firstDB;
-- 謹慎操作,不可恢復

二、資料表 (Table) 管理

2.1 建立表 (完整範例)

CREATE TABLE PEOPLE (
    ID INT AUTO_INCREMENT PRIMARY KEY COMMENT '主鍵',
    NAME VARCHAR(20) NOT NULL COMMENT '姓名',
    AGE INT NOT NULL COMMENT '年齡',
    BIRTHDAY DATETIME COMMENT '生日',
    CREATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '建立時間'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人員表';

2.2 顯示所有表

SHOW TABLES;

2.3 查看表結構

DESC PEOPLE;
-- 或更詳細
SHOW CREATE TABLE PEOPLE\G

2.4 修改表結構 (DDL)

-- 修改表編碼
ALTER TABLE PEOPLE CONVERT TO CHARACTER SET utf8mb4;

-- 新增欄位
ALTER TABLE PEOPLE ADD COLUMN STAR BOOLEAN DEFAULT FALSE COMMENT '是否明星';
-- 注意:MySQL 無 BOOLEAN,實為 TINYINT(1)

-- 修改欄位類型/屬性
ALTER TABLE PEOPLE MODIFY COLUMN STAR INT COMMENT '改為整型';

-- 刪除欄位
ALTER TABLE PEOPLE DROP COLUMN STAR;

-- 重命名表
RENAME TABLE PEOPLE TO NEW_PEOPLE;
-- 或
ALTER TABLE PEOPLE RENAME TO NEW_PEOPLE;

2.5 以現有表數據建立新表

CREATE TABLE newTable AS SELECT * FROM PEOPLE;
-- 結構+數據複製,但不複製索引/外鍵/觸發器
-- 完整複製結構:
CREATE TABLE newTable LIKE PEOPLE;
INSERT INTO newTable SELECT * FROM PEOPLE;

三、數據操作 (DML) 核心語法

3.1 新增數據 (INSERT)

-- 全欄位插入 (ID 自增傳 NULL/0/DEFAULT)
INSERT INTO PEOPLE VALUES (NULL, 'Anny', 22, '1992-05-22');

-- 指定欄位插入 (推薦,防結構變更報錯)
INSERT INTO PEOPLE (NAME, AGE, BIRTHDAY) VALUES ('Garvey', 23, '1991-05-22');

-- 批量插入 (高效)
INSERT INTO PEOPLE (NAME, AGE, BIRTHDAY) VALUES 
('Lisa', 25, '1989-05-22'), ('Nick', 24, '1990-05-22'), ('Rick', 24, '1991-05-22');

3.2 刪除數據 (DELETE)

-- 條件刪除 (務必加 WHERE,否則全表清空)
DELETE FROM PEOPLE WHERE NAME = 'Lisa';

-- 刪除所有數據 (保留結構、自增計數器)
DELETE FROM PEOPLE;
-- 或截斷表 (重置自增、釋放空間、不可回滾)
TRUNCATE TABLE PEOPLE;

3.3 修改數據 (UPDATE)

UPDATE PEOPLE SET NAME = 'Calvin' WHERE NAME = 'Garvey';
-- 多欄位更新
UPDATE PEOPLE SET AGE = AGE + 1, UPDATED_AT = NOW() WHERE ID > 0;

3.4 查詢數據 (SELECT) 進階

-- 全欄位
SELECT * FROM PEOPLE;

-- 指定欄位
SELECT NAME, AGE, BIRTHDAY FROM PEOPLE;

-- 條件過濾
SELECT * FROM PEOPLE WHERE AGE > 22 AND NAME LIKE 'A%';

-- 排序
SELECT * FROM PEOPLE ORDER BY AGE DESC, ID ASC;

-- 分頁
SELECT * FROM PEOPLE LIMIT 10 OFFSET 0;  -- 第 1 頁
SELECT * FROM PEOPLE LIMIT 10 OFFSET 10; -- 第 2 頁

-- 去重
SELECT DISTINCT AGE FROM PEOPLE;

-- 聚合
SELECT COUNT(*) AS total, AVG(AGE) AS avg_age FROM PEOPLE;

實用技巧與避坑

  • Tab 補全:macOS 終端需**大寫關鍵字**觸發補全 (如 SEL+Tab→SELECT)
  • 分頁輸出:\G 結尾垂直顯示,適合寬表;pager less -SFX 設定分頁器
  • 安全更新模式:SET SQL_SAFE_UPDATES=0 允許無鍵 UPDATE/DELETE (慎用)
  • 導出/導入:mysqldump -u root -p db > backup.sql / mysql -u root -p db < backup.sql

下一步進階: 多表 JOIN、子查詢、窗口函數 (8.0+)、CTE、索引優化、EXPLAIN 分析——敬請關注後續專題。

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