插入/添加數(shù)據(jù)
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com'); -- 插入單條記錄
INSERT INTO users (name, email) VALUES
('Charlie', 'charlie@example.com'),
('David', 'david@example.com'); -- 插入多條記錄
INSERT INTO users (name, email)
SELECT name, email FROM old_users WHERE age > 20; -- 從其他表復(fù)制
查詢數(shù)據(jù)
SELECT * FROM users; -- 查詢所有記錄
SELECT name, email FROM users; -- 查詢指定字段
SELECT DISTINCT name FROM users; -- 去重查詢
SELECT * FROM users WHERE age > 20 ORDER BY name DESC; -- 帶條件和排序
SELECT * FROM users LIMIT 10; -- 限制結(jié)果集大小
刪除數(shù)據(jù)
DELETE FROM users WHERE id = 1; -- 刪除單條記錄
DELETE FROM users WHERE age > 30; -- 帶條件刪除
DELETE FROM users; -- 刪除所有記錄
更新數(shù)據(jù)
UPDATE users SET email = 'new@example.com' WHERE id = 1; -- 更新單條記錄
UPDATE users SET age = age + 1 WHERE name LIKE 'A%'; -- 帶條件更新
UPDATE users SET age = 25 WHERE id IN (1, 2, 3); -- 使用IN運(yùn)算符
UPDATE users SET age = 25 WHERE age BETWEEN 20 AND 30; -- 使用BETWEEN運(yùn)算符
多表操作
跨表操作屬于對選擇數(shù)據(jù)的進(jìn)階操作。在數(shù)據(jù)表設(shè)計過程中,為了避免將所有數(shù)據(jù)都存在一個數(shù)據(jù)表中,往往一張事物表存儲的信息是唯一的,如電商業(yè)務(wù)中:用戶基本信息表,商品基本信息表,訂單表,庫存表等,在實(shí)際業(yè)務(wù)分析中,如某次購買活動中的購買用戶畫像分析,就需要同時提取到訂單表信息和用戶基本信息進(jìn)行關(guān)聯(lián)分析,這時候就需要通過跨表關(guān)聯(lián)進(jìn)行數(shù)據(jù)的提取和匯總。
常見的跨表關(guān)聯(lián),主要以join的形式出現(xiàn),但也有時會將某張表作為where內(nèi)條件進(jìn)行使用。
SELECT u.name, o.order_id
FROM users u
JOIN orders o ON u.id = o.user_id; -- 內(nèi)連接
SELECT u.name, o.order_id
FROM users u
LEFT JOIN orders o ON u.id = o.user_id; -- 左連接
常見函數(shù)
時間函數(shù)
在處理mysql數(shù)據(jù)時,由于數(shù)據(jù)表基本存儲的都是事件信息,所以需要根據(jù)分析需求去計算不同事件信息之間的時間關(guān)系,時間函數(shù)就變得尤為重要。時間函數(shù)主要包括時間提取/轉(zhuǎn)換和時間計算兩個方向。
- 常見的時間提取函數(shù)主要包括:
| 函數(shù) |
意義 |
例子 |
| NOW() |
返回當(dāng)前日期和時間 |
'2025-12-17 14:11:29' |
| CURRENT_TIMESTAMP() |
等同于NOW() |
CURRENT_TIMESTAMP() → '2025-12-17 14:11:29' |
| SYSDATE() |
返回當(dāng)前日期和時間 |
SYSDATE() → '2025-12-17 14:11:29' |
| LOCALTIME() |
返回當(dāng)前日期和時間 |
LOCALTIME() → '2025-12-17 14:11:29' |
| LOCALTIMESTAMP() |
返回當(dāng)前日期和時間 |
LOCALTIMESTAMP() → '2025-12-17 14:11:29' |
- 時間日期函數(shù)
| 函數(shù) |
意義 |
例子 |
| CURDATE() |
返回當(dāng)前日期 |
CURDATE() → '2025-12-17' |
| CURRENT_DATE() |
等同于CURDATE() |
CURRENT_DATE() → '2025-12-17' |
- 日期時間格式化
| 函數(shù) |
意義 |
例子 |
| DATE_FORMAT(date, format) |
格式化日期時間 |
DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') → '2025-12-17 14:11:29' |
| UNIX_TIMESTAMP() |
返回當(dāng)前時間戳 |
UNIX_TIMESTAMP() → 1734432689 |
| FROM_UNIXTIME(timestamp) |
時間戳轉(zhuǎn)日期時間 |
FROM_UNIXTIME(1734432689) → '2025-12-17 14:11:29' |
主要是計算天數(shù)間隔,如注冊距今天數(shù),最近一次購買距今天數(shù),或者兩次購買時間間隔天數(shù)等,為后續(xù)分組分析做數(shù)據(jù)提取計算。
| 函數(shù) |
意義 |
例子 |
| TIMESTAMPDIFF(unit, start_time, end_time) |
計算時間差(精確到秒) |
TIMESTAMPDIFF(MINUTE, '2025-12-17 14:00:00', NOW()) → 11 |
| DATEDIFF(end_date, start_date) |
計算日期差(天) |
DATEDIFF('2025-12-18', CURDATE()) → 1 |
| ADDDATE(date, INTERVAL expr type) |
日期加減 |
ADDDATE(CURDATE(), INTERVAL 1 DAY) → '2025-12-18' |
| SUBDATE(date, INTERVAL expr type) |
日期減法 |
SUBDATE(CURDATE(), INTERVAL 1 HOUR) → '2025-12-17 13:11:29' |
字符處理函數(shù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。