萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 基礎入門筆記:從 SQL 標準到 DDL/DML/DQL 實戰

記錄 MySQL 學習第十三天的核心知識點,涵蓋 SQL 語言分類、資料庫/表結構操作、資料增刪改查、完整性約束等基礎技能,適合初學者快速建立知識骨架。

一、SQL 語言體系

  • SQL:Structured Query Language,ANSI/ISO 標準,理論上可跨資料庫執行。
  • 方言:廠商擴展語法(如 MySQL AUTO_INCREMENT、Oracle SEQUENCE),僅限特定資料庫。
  • 類比:標準語 = 普通話,方言 = 地方話。

二、SQL 四大語言類別

類別全稱關鍵字用途
DDLData Definition LanguageCREATE, ALTER, DROP, TRUNCATE定義庫/表結構
DMLData Manipulation LanguageINSERT, UPDATE, DELETE操作資料列
DQLData Query LanguageSELECT查詢資料
TPLTransaction Process LanguageCOMMIT, ROLLBACK, SAVEPOINT事務控制
DCLData Control LanguageGRANT, REVOKE權限管理
CCLCursor Control LanguageDECLARE, OPEN, FETCH, CLOSE游標操作

三、基本約定與對應關係

  • Java Class ↔ 表結構;Java Object ↔ 表記錄。
  • MySQL 非 Windows 環境嚴格區分大小寫(表名、資料庫名)。
  • 命名規範:關鍵字小寫、多單詞下劃線分隔(如 create_table)。

四、DDL 實戰:資料庫與表結構管理

1. 資料庫操作

CREATE DATABASE mydb1;
SHOW DATABASES;
SHOW CREATE DATABASE mydb1;
CREATE DATABASE mydb2 CHARACTER SET gbk;
CREATE DATABASE mydb3 CHARACTER SET gbk COLLATE gbk_chinese_ci;
DROP DATABASE mydb3;
ALTER DATABASE mydb2 CHARACTER SET utf8;

2. 表結構操作

USE mydb1;
CREATE TABLE employee (
  id INT,
  name VARCHAR(200),
  gender VARCHAR(200),
  birthday DATE,
  entry_date DATE,
  job VARCHAR(200),
  salary FLOAT(8,2),
  resume TEXT
);
SHOW TABLES;
DESC employee;
SHOW CREATE TABLE employee;
ALTER TABLE employee ADD image BLOB;
ALTER TABLE employee MODIFY job VARCHAR(60);
ALTER TABLE employee DROP image;
RENAME TABLE employee TO user;
ALTER TABLE user CHARACTER SET utf8;
ALTER TABLE user CHANGE name username VARCHAR(100);

五、DML 實戰:資料增刪改

字串與日期必須用單引號;特殊值 NULL 代表「無值」。

INSERT INTO user(id,username,gender,birthday,entry_date,job,salary,resume)
VALUES(1,'wangdongxue','female','1991-09-08','2014-02-17','CEO',100000,'beautygirl');
INSERT INTO user VALUES(2,'wangdong','male','1990-09-08','2014-02-17','CTO',100000,'strong man');
INSERT INTO user VALUES(3,'查顯成','男性','1988-09-08','2014-02-17','UFO',100000,'帥鍋');
SELECT * FROM user;
UPDATE user SET salary=5000;
UPDATE user SET salary=3000 WHERE username='查顯成';
UPDATE user SET salary=4000,job='CEO' WHERE username='wangdong';
UPDATE user SET salary=salary+1000 WHERE username='wangdongxue';
DELETE FROM user WHERE username='查顯成';
DELETE FROM user;           -- DML,逐行刪除,可回滾
TRUNCATE TABLE user;        -- DDL,重建表結構,不可回滾,速度極快

六、DQL 實戰:靈活查詢

-- 投影與去重
SELECT name, english FROM student;
SELECT DISTINCT english FROM student;

-- 運算與別名
SELECT name, math+10 FROM student;
SELECT name, chinese+english+math AS 總分 FROM student;
SELECT name AS 姓名, chinese+english+math AS 總分 FROM student;

-- 條件過濾
SELECT * FROM student WHERE name='王五';
SELECT * FROM student WHERE english > 90;
SELECT * FROM student WHERE (chinese+english+math) > 200;

-- 模糊查詢:_ 單字元,% 任意字元
SELECT * FROM student WHERE name LIKE '李%';

-- 範圍與集合
SELECT name, english FROM student WHERE english BETWEEN 80 AND 90;
SELECT name, math FROM student WHERE math IN (89,90,91);

-- 邏輯組合
SELECT * FROM student WHERE math > 80 AND chinese > 80;

-- 排序
SELECT name, math FROM student ORDER BY math;
SELECT name, chinese+math+english AS 總分 FROM student ORDER BY 總分 DESC;
-- 關鍵字作別名需反引號:ORDER BY `order` DESC

-- 分頁
SELECT * FROM student LIMIT 0,3;  -- 索引從 0 起,取 3 條

七、資料完整性約束

1. 域完整性(列級)

id INT(11)              -- 整數,顯示寬度 11
name VARCHAR(100) NOT NULL
username VARCHAR(100) UNIQUE

2. 實體完整性(行級)

-- 方式一:列級定義
id INT PRIMARY KEY AUTO_INCREMENT;

-- 方式二:表級定義
id INT,
PRIMARY KEY (id)

MySQL 支援 AUTO_INCREMENT 自增主鍵(Oracle 需序列)。

遺留練習

CREATE TABLE t2 (
  id INT PRIMARY KEY AUTO_INCREMENT  -- auto_increment 為 MySQL 方言
);

後續將深入 TPL(事務)、DCL(權限)、視圖、存儲程序等進階主題。

copyright © 萬盛學電腦網 all rights reserved