記錄 MySQL 學習第十三天的核心知識點,涵蓋 SQL 語言分類、資料庫/表結構操作、資料增刪改查、完整性約束等基礎技能,適合初學者快速建立知識骨架。
AUTO_INCREMENT、Oracle SEQUENCE),僅限特定資料庫。| 類別 | 全稱 | 關鍵字 | 用途 |
|---|---|---|---|
| DDL | Data Definition Language | CREATE, ALTER, DROP, TRUNCATE | 定義庫/表結構 |
| DML | Data Manipulation Language | INSERT, UPDATE, DELETE | 操作資料列 |
| DQL | Data Query Language | SELECT | 查詢資料 |
| TPL | Transaction Process Language | COMMIT, ROLLBACK, SAVEPOINT | 事務控制 |
| DCL | Data Control Language | GRANT, REVOKE | 權限管理 |
| CCL | Cursor Control Language | DECLARE, OPEN, FETCH, CLOSE | 游標操作 |
create_table)。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;
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);
字串與日期必須用單引號;特殊值 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,重建表結構,不可回滾,速度極快
-- 投影與去重
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 條
id INT(11) -- 整數,顯示寬度 11
name VARCHAR(100) NOT NULL
username VARCHAR(100) UNIQUE
-- 方式一:列級定義
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(權限)、視圖、存儲程序等進階主題。