持續更新的實戰筆記,涵蓋庫表結構管理、字段變更、索引視圖操作,適合日常開發快速查閱。
-- 建庫(指定字符集)
CREATE DATABASE IF NOT EXISTS verifyidear CHARACTER SET UTF8;
-- 建表(指定引擎、自增、主鍵)
CREATE TABLE IF NOT EXISTS verifyidear.MyTable (
ID BIGINT(8) UNSIGNED PRIMARY KEY AUTO_INCREMENT,
Updatetime DATETIME,
Name VARCHAR(128)
) ENGINE=MyISAM;
-- 切換庫
USE verifyidear;
-- 新增字段(指定位置、默認值、註釋)
ALTER TABLE MyTable ADD COLUMN IF NOT EXISTS adcolumn VARCHAR(64) DEFAULT '' COMMENT '備註' AFTER Updatetime;
-- 刪除字段
ALTER TABLE MyTable DROP COLUMN IF EXISTS adcolumn;
-- 修改表註釋
ALTER TABLE MyTable COMMENT '測試用表';
-- 修改字段:名稱、類型、默認值、排序規則、註釋、位置(CHANGE 需給舊名新名)
ALTER TABLE MyTable CHANGE COLUMN `Name` `Name` VARCHAR(128) DEFAULT NULL COLLATE 'utf8_general_ci' COMMENT '用戶名' AFTER `Updatetime`;
-- 修改字段屬性(不改名用 MODIFY)
ALTER TABLE MyTable MODIFY COLUMN Name VARCHAR(128) DEFAULT NULL COLLATE 'utf8_general_ci' COMMENT '用戶名' AFTER Updatetime;
-- 創建普通索引
CREATE INDEX idx_name ON MyTable(Name);
-- 創建唯一索引
CREATE UNIQUE INDEX uk_email ON MyTable(Email);
-- 創建組合索引(最左前綴原則)
CREATE INDEX idx_name_email ON MyTable(Name, Email);
-- 刪除索引
DROP INDEX idx_name ON MyTable;
-- 創建視圖
CREATE VIEW v_active_users AS SELECT ID, Name FROM MyTable WHERE Updatetime > DATE_SUB(NOW(), INTERVAL 30 DAY);
-- 查看視圖定義
SHOW CREATE VIEW v_active_users;
-- 刪除視圖
DROP VIEW IF EXISTS v_active_users;
-- 插入(指定列、多行、忽略錯誤)
INSERT INTO MyTable (Name, Updatetime) VALUES ('張三', NOW()), ('李四', NOW());
INSERT IGNORE INTO MyTable (ID, Name) VALUES (1, '重複鍵不報錯');
-- 更新(帶條件、限制行數)
UPDATE MyTable SET Name='王五' WHERE ID=1;
UPDATE MyTable SET Name='趙六' WHERE ID>10 LIMIT 5;
-- 刪除(帶條件、限制行數)
DELETE FROM MyTable WHERE ID=1;
DELETE FROM MyTable WHERE Updatetime < '2020-01-01' LIMIT 100;
-- 查詢(分頁、排序、去重)
SELECT DISTINCT Name FROM MyTable ORDER BY Updatetime DESC LIMIT 10 OFFSET 20;
START TRANSACTION;
INSERT INTO MyTable (Name) VALUES ('事務測試');
UPDATE MyTable SET Name='回滾測試' WHERE ID=999;
COMMIT; -- 或 ROLLBACK;
-- 創建用戶
CREATE USER 'app'@'%' IDENTIFIED BY 'password';
-- 授權
GRANT SELECT, INSERT, UPDATE, DELETE ON verifyidear.* TO 'app'@'%';
FLUSH PRIVILEGES;
-- 查看權限
SHOW GRANTS FOR 'app'@'%';
-- 撤銷
REVOKE INSERT ON verifyidear.* FROM 'app'@'%';
建議收藏為代碼片段,IDE 內直接調用,減少語法錯誤與查閱時間。