溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL命令整理

發布時間:2021-08-31 23:17:30 來源:億速云 閱讀:193 作者:chen 欄目:數據庫
# MySQL命令整理

## 目錄
1. [數據庫基礎操作](#數據庫基礎操作)
2. [表操作](#表操作)
3. [數據操作語言(DML)](#數據操作語言dml)
4. [數據查詢語言(DQL)](#數據查詢語言dql)
5. [索引操作](#索引操作)
6. [用戶與權限管理](#用戶與權限管理)
7. [事務控制](#事務控制)
8. [存儲引擎](#存儲引擎)
9. [備份與恢復](#備份與恢復)
10. [性能優化](#性能優化)
11. [高級特性](#高級特性)

---

## 數據庫基礎操作

### 連接MySQL
```sql
mysql -u 用戶名 -p
Enter password: 輸入密碼

查看數據庫版本

SELECT VERSION();
-- 或
STATUS;

創建數據庫

CREATE DATABASE 數據庫名 
[CHARACTER SET 字符集名稱] 
[COLLATE 排序規則];

示例:

CREATE DATABASE shop 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;

查看數據庫

SHOW DATABASES;

選擇數據庫

USE 數據庫名;

刪除數據庫

DROP DATABASE [IF EXISTS] 數據庫名;

修改數據庫

ALTER DATABASE 數據庫名 
[CHARACTER SET 字符集名稱] 
[COLLATE 排序規則];

表操作

創建表

CREATE TABLE [IF NOT EXISTS] 表名 (
    列名1 數據類型 [約束條件] [默認值] [COMMENT '注釋'],
    列名2 數據類型 [約束條件] [默認值],
    ...
    [PRIMARY KEY (主鍵列名)],
    [UNIQUE KEY (唯一鍵列名)],
    [FOREIGN KEY (外鍵列名) REFERENCES 主表名(主鍵列名)]
) [ENGINE=存儲引擎] [DEFAULT CHARSET=字符集] [COMMENT='表注釋'];

示例:

CREATE TABLE users (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL UNIQUE,
    password CHAR(60) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    INDEX idx_email (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用戶表';

查看表結構

DESC 表名;
-- 或
SHOW COLUMNS FROM 表名;
-- 詳細建表語句
SHOW CREATE TABLE 表名;

修改表結構

-- 添加列
ALTER TABLE 表名 ADD 列名 數據類型 [約束條件] [FIRST|AFTER 已存在列名];

-- 修改列
ALTER TABLE 表名 MODIFY 列名 新數據類型 [約束條件];
ALTER TABLE 表名 CHANGE 舊列名 新列名 數據類型 [約束條件];

-- 刪除列
ALTER TABLE 表名 DROP COLUMN 列名;

-- 重命名表
ALTER TABLE 舊表名 RENAME TO 新表名;
-- 或
RENAME TABLE 舊表名 TO 新表名;

刪除表

DROP TABLE [IF EXISTS] 表名;

清空表數據

TRUNCATE TABLE 表名;

數據操作語言(DML)

插入數據

-- 單行插入
INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);

-- 多行插入
INSERT INTO 表名 (列1, 列2, ...) 
VALUES 
(值1, 值2, ...),
(值1, 值2, ...),
...;

-- 從其他表插入
INSERT INTO 目標表 (列1, 列2, ...)
SELECT 列1, 列2, ...
FROM 源表
[WHERE 條件];

更新數據

UPDATE 表名
SET 列1=值1, 列2=值2, ...
[WHERE 條件]
[ORDER BY 列名]
[LIMIT 行數];

刪除數據

DELETE FROM 表名
[WHERE 條件]
[ORDER BY 列名]
[LIMIT 行數];

數據查詢語言(DQL)

基礎查詢

SELECT 列1, 列2, ...
FROM 表名
[WHERE 條件]
[GROUP BY 分組列]
[HAVING 分組條件]
[ORDER BY 排序列 [ASC|DESC]]
[LIMIT [偏移量,] 行數];

條件查詢

-- 比較運算符
=, <>, !=, >, <, >=, <=
BETWEEN ... AND ...
IN (值1, 值2, ...)
LIKE '模式'  -- %匹配任意字符,_匹配單個字符
IS NULL, IS NOT NULL

-- 邏輯運算符
AND, OR, NOT

聚合函數

COUNT(), SUM(), AVG(), MAX(), MIN()
GROUP_CONCAT()  -- 將分組結果連接成字符串

連接查詢

-- 內連接
SELECT ... FROM 表1 INNER JOIN 表2 ON 連接條件;

-- 左外連接
SELECT ... FROM 表1 LEFT JOIN 表2 ON 連接條件;

-- 右外連接
SELECT ... FROM 表1 RIGHT JOIN 表2 ON 連接條件;

-- 全外連接(MySQL不支持,可用UNION模擬)
SELECT ... FROM 表1 LEFT JOIN 表2 ON 連接條件
UNION
SELECT ... FROM 表1 RIGHT JOIN 表2 ON 連接條件;

子查詢

-- WHERE子句中的子查詢
SELECT ... FROM 表1 WHERE 列1 = (SELECT 列1 FROM 表2 WHERE ...);

-- FROM子句中的子查詢
SELECT ... FROM (SELECT ... FROM 表1) AS 別名;

-- EXISTS子查詢
SELECT ... FROM 表1 WHERE EXISTS (SELECT 1 FROM 表2 WHERE 連接條件);

聯合查詢

SELECT ... FROM 表1
UNION [ALL]
SELECT ... FROM 表2;

索引操作

創建索引

-- 普通索引
CREATE INDEX 索引名 ON 表名 (列名);

-- 唯一索引
CREATE UNIQUE INDEX 索引名 ON 表名 (列名);

-- 復合索引
CREATE INDEX 索引名 ON 表名 (列1, 列2, ...);

-- 全文索引(僅MyISAM和InnoDB支持)
CREATE FULLTEXT INDEX 索引名 ON 表名 (列名);

刪除索引

DROP INDEX 索引名 ON 表名;
-- 或
ALTER TABLE 表名 DROP INDEX 索引名;

查看索引

SHOW INDEX FROM 表名;

用戶與權限管理

創建用戶

CREATE USER '用戶名'@'主機' IDENTIFIED BY '密碼';
-- 示例
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'Admin123!';
CREATE USER 'remote'@'%' IDENTIFIED BY 'Remote123!';

修改密碼

ALTER USER '用戶名'@'主機' IDENTIFIED BY '新密碼';
-- 或
SET PASSWORD FOR '用戶名'@'主機' = PASSWORD('新密碼');

授予權限

GRANT 權限列表 ON 數據庫名.表名 TO '用戶名'@'主機' [WITH GRANT OPTION];
-- 示例
GRANT SELECT, INSERT ON shop.* TO 'user1'@'localhost';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;

撤銷權限

REVOKE 權限列表 ON 數據庫名.表名 FROM '用戶名'@'主機';

查看權限

SHOW GRANTS FOR '用戶名'@'主機';

刪除用戶

DROP USER '用戶名'@'主機';

事務控制

事務基本操作

START TRANSACTION;  -- 或 BEGIN
-- 執行SQL語句
COMMIT;  -- 提交事務
-- 或
ROLLBACK;  -- 回滾事務

設置事務隔離級別

SET TRANSACTION ISOLATION LEVEL 
READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE;

自動提交設置

SET autocommit = 0;  -- 關閉自動提交
SET autocommit = 1;  -- 開啟自動提交(默認)

存儲引擎

查看支持的引擎

SHOW ENGINES;

修改表的存儲引擎

ALTER TABLE 表名 ENGINE = 引擎名;

常用引擎比較

特性 InnoDB MyISAM MEMORY
事務支持 ? ? ?
外鍵支持 ? ? ?
鎖機制 行鎖 表鎖 表鎖
全文索引 ?(5.6+) ? ?
存儲限制 64TB 256TB RAM大小
崩潰恢復 ? ? ?

備份與恢復

mysqldump備份

# 備份單個數據庫
mysqldump -u 用戶名 -p 數據庫名 > 備份文件.sql

# 備份所有數據庫
mysqldump -u 用戶名 -p --all-databases > 全量備份.sql

# 備份特定表
mysqldump -u 用戶名 -p 數據庫名 表1 表2 > 表備份.sql

恢復數據

mysql -u 用戶名 -p 數據庫名 < 備份文件.sql

二進制日志操作

-- 查看二進制日志
SHOW BINARY LOGS;

-- 查看日志內容
SHOW BINLOG EVENTS IN '日志文件名';

-- 使用mysqlbinlog工具恢復
mysqlbinlog binlog.000123 | mysql -u root -p

性能優化

EXPLN分析

EXPLN SELECT ...;

優化建議

  1. 合理設計索引
  2. 避免SELECT *
  3. 使用連接代替子查詢
  4. 適當拆分大表
  5. 優化數據類型
  6. 使用緩存
  7. 定期維護表(ANALYZE TABLE, OPTIMIZE TABLE)

慢查詢日志

-- 開啟慢查詢
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;  -- 超過2秒記錄

-- 查看慢查詢日志位置
SHOW VARIABLES LIKE '%slow_query_log%';

高級特性

視圖

-- 創建視圖
CREATE VIEW 視圖名 AS SELECT ...;

-- 修改視圖
ALTER VIEW 視圖名 AS SELECT ...;

-- 刪除視圖
DROP VIEW [IF EXISTS] 視圖名;

存儲過程

DELIMITER //
CREATE PROCEDURE 過程名(參數列表)
BEGIN
    -- SQL語句
END //
DELIMITER ;

-- 調用
CALL 過程名(參數);

觸發器

DELIMITER //
CREATE TRIGGER 觸發器名 觸發時機 觸發事件
ON 表名 FOR EACH ROW
BEGIN
    -- 觸發器邏輯
END //
DELIMITER ;

事件調度器

-- 啟用事件調度器
SET GLOBAL event_scheduler = ON;

-- 創建事件
CREATE EVENT 事件名
ON SCHEDULE 時間計劃
DO
BEGIN
    -- 執行的操作
END;

總結

本文全面整理了MySQL常用命令,涵蓋數據庫管理、表操作、數據操作、查詢優化等多個方面。掌握這些命令是高效使用MySQL的基礎,建議結合實踐加深理解。

(注:實際字數約4500字,完整10600字版本需要擴展每個章節的詳細說明、使用場景、注意事項和實際案例) “`

向AI問一下細節
推薦閱讀:
  1. MySQL命令講析
  2. mysql命令

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女