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

MySQL 入門核心筆記:從安裝到 SQL 腳本語言精通(一)

     編輯:MySQL 綜合教學

MySQL 入門核心筆記:從安裝到 SQL 腳本語言精通(一)

系統梳理 MySQL 服務管理、庫表操作、DDL/DML/DQL 核心語法、連接查詢、子查詢、合並查詢、內置函數(數學/字符串/日期/條件/系統/加密),適合零基礎快速建立知識體系。

一、服務器基本操作

# Windows CMD
net start mysql      # 啟動
net stop mysql       # 停止
mysql -h localhost -u root -p  # 連接

二、數據庫與表結構 (DDL)

數據庫

CREATE DATABASE db_bookstore;
USE db_bookstore;
DROP DATABASE db_bookstore;

表操作

-- 創建
CREATE TABLE IF NOT EXISTS tb_name (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name CHAR(50)
);

-- 查看結構
SHOW COLUMNS FROM tb_name;
DESC tb_name;

-- 刪除
DROP TABLE IF EXISTS tb_name;

-- 修改表結構
ALTER TABLE tb_name 
  ALTER COLUMN col SET DEFAULT val;      -- 設置/刪除默認值(極快,僅元數據)
ALTER TABLE tb_name 
  CHANGE COLUMN old_name new_name TYPE;  -- 重命名、改類型、移動位置
ALTER TABLE tb_name 
  MODIFY COLUMN col TYPE;                -- 不改名時用 MODIFY

-- 重命名表
ALTER TABLE tb_name RENAME TO new_name;
RENAME TABLE tb_name TO new_name;

三、數據操作 (DML)

INSERT INTO tb_name (f1, f2) VALUES (v1, v2);
UPDATE tb_name SET f1=v1, f2=v2 WHERE cond;
DELETE FROM tb_name WHERE cond;

四、數據查詢 (DQL) - SELECT 專題

完整語法模板

SELECT [DISTINCT] col_list
FROM tb_list
[WHERE primary_cond]
[GROUP BY cols [HAVING sec_cond]]
[ORDER BY col [ASC|DESC]]
[LIMIT [offset,] row_count];

核心查詢模式

  • 單表:SELECT * FROM tb WHERE id < 5
  • IN / NOT IN / BETWEEN:WHERE id IN (1,2,3)、WHERE id BETWEEN 1 AND 5
  • LIKE 模糊:% 任意多字符,_ 單字符 → WHERE name LIKE 'm%r_'
  • 空值:IS NULL / IS NOT NULL
  • 多條件:AND / OR
  • 去重:SELECT DISTINCT *
  • 排序:ORDER BY id DESC
  • 分組聚合:SELECT dept, COUNT(*) FROM emp GROUP BY dept HAVING COUNT(*) > 5
  • 多字段分組:GROUP BY dept, job(笛卡爾積分組)
  • 分頁:LIMIT 3(前 3 行)、LIMIT 5,10(第 6-15 行)

連接查詢

-- 內連接(等值最常用)
SELECT * FROM a INNER JOIN b ON a.id = b.id;

-- 左外連接(保留左表所有)
SELECT * FROM a LEFT JOIN b ON a.id = b.id;

-- 右外連接
SELECT * FROM a RIGHT JOIN b ON a.id = b.id;

-- 全外連接(MySQL 不支持,用 UNION 模擬)
SELECT * FROM a LEFT JOIN b ON a.id = b.id
UNION
SELECT * FROM a RIGHT JOIN b ON a.id = b.id;

子查詢

-- IN
SELECT * FROM tb WHERE id IN (SELECT id FROM tb2);

-- ANY
SELECT * FROM tb WHERE id < ANY (SELECT id FROM tb2);

-- ALL
SELECT * FROM tb WHERE id < ALL (SELECT id FROM tb2);

-- EXISTS(返回布爾,常關聯外部表)
SELECT * FROM tb1 WHERE score >= 90 
  AND EXISTS (SELECT * FROM tb2 WHERE grade = '優秀');

-- 關系運算(子查詢必須返回單值)
SELECT * FROM tb WHERE id > (SELECT id FROM tb2 WHERE id=1);

合並查詢

SELECT id, name FROM a UNION SELECT id, author FROM b;   -- 去重
SELECT id, name FROM a UNION ALL SELECT id, author FROM b; -- 保留所有
-- 前提:左右列數、類型、順序一致

五、常用內置函數速查

分類函數說明/示例
數學ABS(x)絕對值
CEIL / FLOOR向上/向下取整
RAND() / RAND(seed)0-1 隨機數,種子固定則序列固定
SIGN(x)符號 -1/0/1
PI()圓周率
TRUNCATE(x, d)截斷小數位(不四捨五入)
ROUND(x, d)四捨五入
POWER(x,y) / SQRT(x) / MOD(x,y)冪/開方/取模
字符串CHAR_LENGTH(str)字符長度
UPPER/UCASE / LOWER/LCASE大小寫轉換
LTRIM / RTRIM / TRIM去除首/尾/首尾空格
REPLACE(s, s1, s2)替換
SUBSTRING(s, n, len) / LEFT / RIGHT子串/左/右
REVERSE(s)反轉
日期時間CURRENT_DATE / CURRENT_TIME當前日期/時間
NOW / CURRENT_TIMESTAMP / LOCALTIME / SYSDATE當前日期時間(同義)
UNIX_TIMESTAMP / FROM_UNIXTIME時間戳雙向轉換
YEAR/MONTH/DAY / HOUR/MINUTE/SECOND提取分量
DATEDIFF(d1,d2)天數差
ADDDATE / SUBDATE日期加減
DATE_FORMAT(date, fmt)格式化,如 '%Y-%m-%d %H:%i'
條件判斷IF(cond, true_val, false_val)三元運算
CASE WHEN ... THEN ... ELSE ... END多條件分支
IFNULL(expr1, expr2)expr1 為 NULL 返回 expr2
系統信息VERSION() / CONNECTION_ID()版本/連接數
DATABASE() / SCHEMA()當前庫
USER() / CURRENT_USER()當前用戶
LAST_INSERT_ID()上次自增 ID
加密MD5(str)不可逆摘要
PASSWORD(str)用戶密碼加密(舊版)
ENCODE/DECODE可逆加密(需 BLOB 存儲)

六、學習路線建議

  1. 搭建環境 → 熟練服務啟停與連接
  2. 掌握 DDL 建庫建表、修改結構
  3. 精通 DML 增刪改、事務控制
  4. 攻克 DQL:單表 → 連接 → 子查詢 → 複雜報表
  5. 熟記高頻函數,查詢時靈活組合
  6. 進階:索引優化、鎖機制、主從架構、分庫分表
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved