CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER DATABASE mydb CHARACTER SET utf8mb4;
DROP DATABASE mydb;
SHOW DATABASES;
USE mydb;
SELECT DATABASE();
CREATE TABLE userInfo (
userId INT PRIMARY KEY AUTO_INCREMENT COMMENT '主鍵',
userName VARCHAR(20) NOT NULL COMMENT '用戶名',
userPwd VARCHAR(20) NOT NULL COMMENT '密碼',
userSex TINYINT DEFAULT 0 COMMENT '性別 0女 1男',
userAge DECIMAL(10,2) NOT NULL COMMENT '薪資',
createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用戶表';
-- 查看結構
DESC userInfo;
SHOW CREATE TABLE userInfo\G
-- 新增欄位
ALTER TABLE userInfo ADD COLUMN userAge INT(100) COMMENT '年齡';
-- 修改欄位類型/屬性
ALTER TABLE userInfo MODIFY COLUMN userSex TINYINT COMMENT '性別';
ALTER TABLE userInfo CHANGE COLUMN userSex userSexs TINYINT; -- 重命名+改類型
-- 刪除欄位
ALTER TABLE userInfo DROP COLUMN userAge;
-- 重命名表
RENAME TABLE userInfo TO stuInfo;
-- 或
ALTER TABLE userInfo RENAME TO stuInfo;
-- 刪表
DROP TABLE stuInfo;
INSERT INTO userInfo VALUES (NULL, '張三', '123456', 0, 2000.00);
INSERT INTO userInfo (userName, userPwd, userSex, userAge) VALUES
('李四', '123456', 0, 4200.00), ('王五', '123456', 1, 3000.00);
SELECT * FROM userInfo;
SELECT * FROM userInfo ORDER BY userId LIMIT 0, 2; -- 分頁
SELECT * FROM userInfo LIMIT 2 OFFSET 0; -- 等價
SELECT userId, userName FROM userInfo WHERE userAge > 3000;
SELECT COUNT(*) FROM userInfo;
SELECT NOW(); -- 當前時間
UPDATE userInfo SET userAge = 4500 WHERE userId = 2;
DELETE FROM userInfo WHERE userId = 1;
TRUNCATE TABLE userInfo; -- 全清、重置自增、不可回滾
-- 建立索引
CREATE INDEX idx_name ON userInfo(userName);
CREATE UNIQUE INDEX uk_name ON userInfo(userName);
ALTER TABLE userInfo ADD INDEX idx_sex_age (userSex, userAge);
-- 查看索引
SHOW INDEX FROM userInfo\G
-- 刪除索引
DROP INDEX idx_name ON userInfo;
ALTER TABLE userInfo DROP INDEX uk_name;
-- 表級轉換 (推薦)
ALTER TABLE userInfo CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 庫級轉換 (僅影響新表)
ALTER DATABASE mydb CHARACTER SET utf8mb4;
-- 連接層指定 (應用端)
-- JDBC: ?characterEncoding=utf8&connectionCollation=utf8mb4_general_ci
-- PDO: charset=utf8mb4
-- Python: charset='utf8mb4'
-- 字段內容前綴添加 (如文章內容縮進)
UPDATE article SET content = CONCAT(' ', content);
-- 去除首尾空格
UPDATE userInfo SET userName = TRIM(userName);
-- 替換
UPDATE userInfo SET userName = REPLACE(userName, '舊', '新');
-- 截取
SELECT SUBSTRING(userName, 1, 10) FROM userInfo;
| 分類 | 函數 | 示例 |
|---|---|---|
| 時間 | NOW() | 當前日期時間 |
| CURDATE() | 當前日期 | |
| DATE_FORMAT() | DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') | |
| DATE_ADD/SUB | DATE_ADD(NOW(), INTERVAL 1 DAY) | |
| 字符串 | CONCAT() | CONCAT('a','b') → 'ab' |
| LENGTH() | 字節長度 | |
| CHAR_LENGTH() | 字符長度 | |
| 流程控制 | IF() | IF(age>18,'成年','未成年') |
| CASE WHEN | CASE WHEN sex=1 THEN '男' ELSE '女' END | |
| COALESCE() | COALESCE(NULL, '默認值') → '默認值' | |
| 聚合 | COUNT/SUM/AVG | 標準聚合 |
| GROUP_CONCAT | GROUP_CONCAT(name SEPARATOR ',') |
收藏建議: 本手冊涵蓋 90% 日常開發運維場景,建議配合 HELP 'command' (如 HELP 'CREATE TABLE') 終端即時查閱語法細節。