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

MySQL 進階操作實戰(上):表復制、索引、視圖與補充內置函數

     編輯:MySQL 綜合教學

前言

本文為進階操作系列上篇,聚焦 表結構/數據復制、索引全生命周期管理、視圖創建與使用、以及補充實用內置函數,所有示例基於 InnoDB 引擎。

一、表復制:結構與數據分離操作

-- 1. 僅復制結構(含索引、約束、引擎屬性)
CREATE TABLE t2 LIKE t1;

-- 2. 復制數據——建議顯式指定列,避免隱式順序依賴
INSERT INTO t3(name) SELECT name FROM t1;  -- 推薦
-- INSERT INTO t2 SELECT * FROM t1;        -- 不推薦:結構一致時才安全

二、索引管理:推薦統一用 ALTER TABLE

操作推薦語法 (ALTER TABLE)獨立語法 (CREATE/DROP INDEX)
創建普通索引ALTER TABLE t ADD INDEX idx_name (col_list);CREATE INDEX idx_name ON t(col_list);
創建唯一索引ALTER TABLE t ADD UNIQUE [idx_name] (col_list);CREATE UNIQUE INDEX idx_name ON t(col_list);
創建主鍵ALTER TABLE t ADD PRIMARY KEY (col_list);—
刪除普通/唯一索引ALTER TABLE t DROP INDEX idx_name;DROP INDEX idx_name ON t;
刪除主鍵ALTER TABLE t DROP PRIMARY KEY;—

理由:ALTER TABLE 統一入口,便於工具鏈解析、版本控制、回滾腳本生成;CREATE/DROP INDEX 為歷史兼容保留。

查看索引

SHOW INDEX FROM t1\G

輔助技巧:修改列非空(常作為加主鍵前置步驟)

ALTER TABLE t MODIFY id INT NOT NULL;

三、視圖:虛表,隨基表變化而變化

-- 創建
CREATE VIEW v_high_value AS
SELECT * FROM orders WHERE amount > 1000;

-- 查看有哪些視圖
SHOW TABLES;  -- 視圖與表混合顯示

-- 查詢視圖
SELECT * FROM v_high_value;

-- 刪除視圖
DROP VIEW v_high_value;

本質:視圖是儲存的 SELECT 語句,查詢時展開重寫,不存儲物理數據(物化視圖需自行實現)。

四、補充內置函數速查

分類函數說明與示例
字符串LCASE/UCASE同 LOWER/UPPER
LENGTH(str)返回字節長度(非字符數)
REPEAT(str, n)重複 n 次:SELECT REPEAT('a',3); -- aaa
SPACE(n)生成 n 個空格
數學BIN(n)十進制轉二進制字串
CEILING(n)同 CEIL,向上取整
SQRT(n)開平方
MAX/MIN(col)聚合函數,配合 GROUP BY
RAND()隨機排序技巧:SELECT * FROM t ORDER BY RAND();
日期DATEDIFF(d1, d2)天數差(d1-d2),可為負

五、查詢函數幫助

mysql> ? lcase
mysql> HELP 'datediff'

避坑提醒:

  • CREATE VIEW 若引用的基表結構變更(如列刪除),視圖查詢將報錯,需同步維護。
  • 索引雖加速讀取,但會拖慢寫入;單表索引建議 ≤ 5 個,複合索引遵循「最左前綴」原則。
  • ORDER BY RAND() 在大表極慢,生產環境禁用,參考本專欄「RAND() 優化」專題。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved