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

MySQL 零距離實戰筆記:數據表 CRUD、運算符函數、查詢進階與安全加密完全指南

     編輯:MySQL 綜合教學

MySQL 零距離實戰筆記:數據表 CRUD、運算符函數、查詢進階與安全加密完全指南

本文整理自《與 MySQL 零距離接觸》視頻課程學習筆記,系統梳理數據庫/表/行/列四個維度的 CRUD 操作、核心運算符與函數庫(字符、數值、比較、時間日期、信息、聚合、加密)、查詢進階語法,為 MySQL 入門開發者提供結構化速查手冊。

一、四大維度 CRUD 操作速查表

1. 表級操作

操作語法
創建CREATE TABLE table_name (...)
刪除DROP TABLE table_name
重命名ALTER TABLE old_name RENAME TO new_name
查看結構SELECT * FROM table_name / DESC table_name / SHOW COLUMNS FROM table_name

2. 行級操作 (數據操作 DML)

操作語法
插入 (方式 1)INSERT INTO table_name (col1, col2) VALUES (val1, val2)
插入 (方式 2)INSERT INTO table_name SET col1=val1, col2=val2
刪除DELETE FROM table_name WHERE condition
更新UPDATE table_name SET col1=val1, col2=val2 WHERE condition
查詢SELECT col1, col2 FROM table_name WHERE condition

3. 列級操作 (結構變更 DDL)

操作語法
增加列ALTER TABLE table_name ADD column_name datatype
刪除列ALTER TABLE table_name DROP column_name
修改列 (CHANGE)ALTER TABLE table_name CHANGE old_name new_name datatype
修改屬性 (MODIFY)ALTER TABLE table_name MODIFY column_name datatype
查看列SHOW COLUMNS FROM table_name

二、核心運算符與函數庫

1. 字符函數

函數說明示例
CONCAT(str1, str2, ...)字符串拼接SELECT CONCAT('hha','-','hdf') → 'hha-hdf'
CONCAT_WS(sep, str1, str2, ...)帶分隔符拼接SELECT CONCAT_WS('=','A','B','C') → 'A=B=C'
FORMAT(num, decimals)格式化數字 (千分位、小數位)SELECT FORMAT(125060.752, 2) → '125,060.75'
LOWER(str) / UPPER(str)大小寫轉換SELECT LOWER('HIIHO') → 'hiihO'
LEFT(str, len) / RIGHT(str, len)左/右截取指定長度SELECT LEFT('fsfds', 2) → 'fs'
LENGTH(str)字節長度SELECT LENGTH(' fsfds ')
LTRIM(str) / RTRIM(str) / TRIM(str)去除左/右/兩側空格SELECT TRIM(' fsfds ') → 'fsfds'
TRIM([BOTH|LEADING|TRAILING] 'chars' FROM str)去除指定字符SELECT TRIM(LEADING '?' FROM '?fs?fds?')
SUBSTRING(str, pos, len) / SUBSTRING(str, pos)子串提取SELECT SUBSTRING('fsfds', 2, 3) → 'sfd'
REPLACE(str, from_str, to_str)字符串替換SELECT REPLACE('fsgasgsfa','s','t') → 'ftgatgtfa'
LIKE模糊匹配SELECT 'myufsd' LIKE 'm%' → 1 (真)

通配符: % 匹配任意長度字符 (含 0) | _ 匹配單個字符
轉義: SELECT * FROM test WHERE first_name LIKE '%1%%' ESCAPE '1' (用 '1' 轉義 '%')

2. 數值運算符

  • DIV:整數除法 (如 10 DIV 3 = 3)
  • 標準算術:+, -, *, /, % (取模)

3. 比較運算符與函數

  • BETWEEN ... AND ... / NOT BETWEEN ... AND ...
  • IN (...) / NOT IN (...)
  • =, <=> (NULL 安全等於), !=, <>, <, <=, >, >=
  • IS NULL / IS NOT NULL
  • GREATEST() / LEAST() (取最大/最小值)

4. 時間日期函數

函數說明示例
NOW()當前日期時間2024-01-15 10:30:45
CURDATE()當前日期2024-01-15
CURTIME()當前時間10:30:45
DATE_ADD(date, INTERVAL expr unit)日期加減間隔DATE_ADD(NOW(), INTERVAL 1 DAY)
DATEDIFF(date1, date2)日期差 (天數)DATEDIFF('2024-01-15', '2024-01-10') → 5
DATE_FORMAT(date, format)日期格式化輸出DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s')

5. 信息函數

函數說明
CONNECTION_ID()當前連接 ID
DATABASE()當前默認數據庫
LAST_INSERT_ID()上一條 INSERT 生成的自增 ID
USER()當前用戶@主機
VERSION()MySQL 版本號

6. 聚合函數

  • COUNT(expr):非 NULL 個數 / COUNT(*):行數
  • SUM(expr)、AVG(expr)、MIN(expr)、MAX(expr)
  • GROUP_CONCAT(expr):分組拼接字符串
  • 配合 GROUP BY、HAVING 使用

7. 加密函數

函數說明特點
MD5(str)MD5 雜湊 (128 位)不可逆、定長 32 十六進制字符、碰撞風險較高
PASSWORD(str)MySQL 密碼加密 (內部用)版本相關算法,**不建議應用層使用**
SHA1(str) / SHA2(str, hash_len)SHA 雜湊族更安全,推薦 SHA2-256/512
AES_ENCRYPT/DECRYPT對稱加密可逆,需鍵管理

三、查詢進階語法

1. 別名

SELECT id AS userId, username AS uname FROM users;

2. 分組查詢

SELECT sex FROM users GROUP BY sex;

3. 分組過濾 (HAVING)

條件:聚合函數 或 HAVING 後字段出現在 SELECT 列表中

SELECT age, sex FROM users GROUP BY sex HAVING age > 2;

4. 排序

SELECT * FROM users ORDER BY id DESC;  -- DESC 降序,默認 ASC 升序

5. 限制結果集

SELECT * FROM users LIMIT 2;        -- 前 2 條
SELECT * FROM users LIMIT 2, 2;     -- 跳過 2 條,取 2 條 (第 3-4 條)

四、DML 進階與多表查詢

1. 子查詢插入

INSERT INTO test(username) SELECT username FROM users WHERE age > 27;

2. 更新與子查詢

  • IN / NOT IN
  • EXISTS / NOT EXISTS (相關子查詢,通常性能更優)

3. 多表連接類型

類型關鍵字說明
內連接INNER JOIN / JOIN / CROSS JOINMySQL 中三者等價,僅返回匹配行
左外連接LEFT [OUTER] JOIN左表全量,右表匹配或 NULL
右外連接RIGHT [OUTER] JOIN右表全量,左表匹配或 NULL
SELECT u.username, u.age, u.sex
FROM user1 u
INNER JOIN user2 u2 ON u.id = u2.id;

五、安全編碼最佳實踐提醒

  1. 防 SQL 注入: 應用層**強制使用參數化查詢 (PreparedStatement)**,拼接 SQL 絕對禁止。
  2. 密碼存儲: **禁用 MD5/PASSWORD()**,採用 bcrypt/scrypt/Argon2 或 PBKDF2 (高計算成本、自帶鹽值)。
  3. 敏感數據加密: 應用層加密落庫 (AES-GCM 等),數據庫僅存密文,鍵由 KMS 管理。
  4. 最小權限: 業務賬號僅授予必要增刪改查權限,嚴禁 DROP/ALTER/GRANT。
  5. 審計日志: 開啟 Binlog (ROW 格式) + 審計插件 (MariaDB Audit Plugin / MySQL Enterprise Audit) 記錄所有 DML/DDL。

六、總結

MySQL 基礎操作看似簡單,但細節決定質量:CHAR vs VARCHAR 選型、DATETIME vs TIMESTAMP 時區語義、LEFT JOIN 驅動表選擇、LIMIT 分頁深度陷阱、聚合函數 NULL 語義、加密函數安全等級。建立結構化知識體系,配合 EXPLAIN 驗證執行計劃,養成參數化查詢肌肉記憶,是從「會用」到「用好」的必經之路。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved