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

Oracle 數據庫學習筆記:SQL 四大語言分類與核心操作全解

     編輯:Oracle 資料庫基礎

SQL 四大語言分類

類別英文全稱核心命令作用
DDLData Definition LanguageCREATE, ALTER, DROP定義/修改/刪除數據庫對象結構
DMLData Manipulation LanguageSELECT, INSERT, UPDATE, DELETE查詢/插入/更新/刪除數據
TCLTransaction Control LanguageCOMMIT, ROLLBACK, SAVEPOINT事務提交/回滾/保存點控制
DCLData Control LanguageGRANT, REVOKE權限授予/回收

DDL 實戰範例

建表

CREATE TABLE person (
  id INT PRIMARY KEY,
  name VARCHAR(16) NOT NULL,
  password INT NOT NULL,
  address VARCHAR(20)
);

修改表結構

-- 單列新增
ALTER TABLE person ADD (age INT);
-- 多列新增
ALTER TABLE person ADD (age INT, weight INT);
-- 單列修改
ALTER TABLE person MODIFY (age VARCHAR(6));
-- 多列修改
ALTER TABLE person MODIFY (age VARCHAR(6), weight VARCHAR(6));

刪表

DROP TABLE person;

查看表結構

DESCRIBE person;  -- 或 DESC person

DML 核心語法與範例

SELECT 查詢

SELECT * FROM person;                    -- 全列
SELECT id, name FROM person;             -- 指定列
SELECT DISTINCT name FROM person;        -- 去重
SELECT * FROM person WHERE id = 1;       -- 條件過濾
SELECT * FROM person ORDER BY id;        -- 排序(默認 ASC)
SELECT * FROM person WHERE id=1 AND sex='man';
SELECT * FROM person WHERE address='bj' OR sex='woman';
SELECT * FROM person WHERE (address='bj' OR sex='woman') AND age > 20;

完整語法骨架:

SELECT * | { [DISTINCT] col1, col2, ... }
FROM table_name
[WHERE condition]
[ORDER BY col1 [ASC|DESC], col2 ...];

ORDER BY 必須置於所有子句最後;多列排序按聲明順序依次遞歸排序。

INSERT 插入

-- 全列顯式插入
INSERT INTO person (id, name, sex, address) VALUES (1, 'toxm', 'man', 'bj');
-- 全列隱式插入(按建表順序)
INSERT INTO person VALUES (1, 'toxm', 'man', 'bj');
-- 部分列插入
INSERT INTO person (id, name) VALUES (1, 'toxm');
-- 從其他表複製全量
INSERT INTO person SELECT * FROM user_table;
-- 從其他表複製指定列
INSERT INTO person SELECT id, name FROM user_table;
-- 條件複製
INSERT INTO person SELECT * FROM user_table WHERE sex='man';

UPDATE 更新

UPDATE person SET name='toxm' WHERE id=1;
UPDATE person SET name='toxm', address='bj' WHERE id=1;
UPDATE person SET name='toxm';  -- 無 WHERE 更新全表(慎用!)

DELETE 刪除

DELETE FROM person;           -- 清空表(慎用!)
DELETE FROM person WHERE id=1;

TCL 事務控制機制

DML 操作(INSERT/UPDATE/DELETE)首先在數據緩沖區生成變更,未提交前:

  • 當前會話可見變更。
  • 其他會話不可見(隔離性)。
  • COMMIT:持久化到數據文件,所有會話可見。
  • ROLLBACK:丟棄緩沖區變更,事務如未發生。
  • SAVEPOINT:設置標記,支持部分回滾至保存點。
INSERT INTO person VALUES (1, 'a', 'man', 'bj');
-- 此時另一會話查不到該行
COMMIT;  -- 另一會話即可查到
-- 或
ROLLBACK; -- 另一會話永不可見

學習建議

  • 熟練掌握 WHERE 多條件組合(AND/OR/括號優先級)。
  • 養成 COMMIT 前驗證、ROLLBACK 回退演練習慣。
  • 實戰中嚴禁無 WHERE 的全表 UPDATE/DELETE。
  • 進階學習方向:多表連接、子查詢、分析函數、分區表、物化視圖。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved