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

從 Java 持久化到 XML 全棧筆記:JDBC、SQL、資料庫設計、XML 技術體系

     編輯:關於SqlServer

第一章:Java 物件持久化技術演進

  • 序列化:Serializable,簡單但效率低、無事務、版本演進難。
  • XML 持久化:人類可讀、跨平台,但缺乏查詢、索引、事務支援。
  • RDBMS (關係型資料庫):成熟度最高、ACID、SQL 標準、生態最豐富——**企業級首選**。
  • ODBMS (物件資料庫):物件直接存儲,理論完美但商業採用極少。

第二章:資料庫與表核心概念

  • 表 = 實體集合,列 = 屬性,行 = 實體實例。
  • 關聯:1:1、1:N (外鍵指向主鍵)、M:N (中間連接表雙外鍵)。
  • 引擎架構:桌面資料庫 (Access) vs 網路資料庫 (SQL Server/Oracle)。

第三章:SQL 三大語言類別

類別全稱核心指令
DDLData Definition LanguageCREATE/ALTER/DROP DATABASE/TABLE/INDEX
DMLData Manipulation LanguageSELECT/INSERT/UPDATE/DELETE
DCLData Control LanguageGRANT/REVOKE

第四章:主流資料庫與埠號

  • Oracle : 1521
  • SQL Server : 1433
  • MySQL : 3306

第五章:建表與約束 (SQL Server 語法)

CREATE TABLE T (
    id INT IDENTITY(1,1) PRIMARY KEY,
    name NVARCHAR(50) DEFAULT 'N/A' NOT NULL,
    memo NTEXT,
    created DATETIME DEFAULT GETDATE(),
    amount MONEY,
    qty INT DEFAULT 0,
    price DECIMAL(12,4) DEFAULT 0,
    img IMAGE
);

約束類型:PK、FK、UNIQUE、NOT NULL、CHECK、DEFAULT。

第六章:基礎 CRUD 與 SELECT 進階

  • INSERT ... VALUES / INSERT ... SELECT
  • DELETE / TRUNCATE (不可回滾、不觸發 Trigger)
  • UPDATE ... SET ... WHERE
  • SELECT [DISTINCT] col [alias] FROM ... WHERE ... ORDER BY ...
  • 運算子:比較、邏輯 (AND/OR/NOT)、BETWEEN、IN、LIKE (%、_、ESCAPE)、IS NULL。

第七章:JDBC 核心 API 與標準流程

String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url    = "jdbc:sqlserver://localhost:1433;databaseName=Test";
String sql    = "SELECT * FROM Users WHERE id=?";

Class.forName(driver);
Connection con = DriverManager.getConnection(url, "user", "pwd");
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, 100);
ResultSet rs = ps.executeQuery();
while (rs.next()) { /* process */ }
rs.close(); ps.close(); con.close();

PreparedStatement 防注入、預編譯重用,優於 Statement。

第八章:聚合函數與 GROUP BY 執行順序

  1. FROM / JOIN
  2. WHERE (分組前過濾)
  3. GROUP BY
  4. HAVING (分組後過濾)
  5. SELECT (投影、聚合)
  6. ORDER BY

常用聚合:COUNT/SUM/AVG/MAX/MIN;計數修飾:* / ALL(col) / DISTINCT(col)。

第九章:子查詢與集合運算

  • 相關 vs 非相關子查詢 (前者逐行執行,效能較差)。
  • EXISTS / ALL / ANY 量詞。
  • 集合:UNION / UNION ALL / EXCEPT / INTERSECT (縱向拼接)。

第十章:JOIN 類型與效能

  • INNER JOIN (等值連接,過濾 NULL)。
  • LEFT/RIGHT/FULL OUTER JOIN (保留駕馭端 NULL)。
  • JOIN 效能優於相關子查詢,但過度 JOIN 仍是效能殺手。

第十一章:資料庫設計四階段與 ER 建模

  1. 需求分析 → 概要設計 → 邏輯設計 (ER 圖) → 物理設計 (DDL)。
  2. ER 元素:實體 (矩形)、屬性 (橢圓)、關聯 (菱形)。
  3. 屬性分類:原子/複合、單值/多值、存儲/導出、鍵屬性。
  4. 關聯約束:基數比、參與度 (全/部)、結構約束。
  5. 弱實體:無主鍵,依賴強實體 (雙矩形/雙菱形)。

第十二章:正規化與反正規化

  • 1NF:原子性、無重複行。
  • 2NF:符合 1NF + 無部分函數相依。
  • 3NF:符合 2NF + 無傳遞相依。
  • 反正規化:為效能故意引入冗余 (違反 2/3NF),**不可違反 1NF**。

第十三章:DAO 模式與持久層分離

DAO (Data Access Object) 封裝所有資料庫存取,業務邏輯層僅依賴介面,實現**鬆散耦合**、易測試、易遷移。

第十四章:XML 技術全景

領域技術用途
結構描述/驗證DTD / XML Schema (XSD)定義元素、屬性、資料型別、約束
轉換XSL / XSLTXML → HTML/PDF/其他 XML
查詢XPath / XQuery節點選取、條件過濾、聚合
解析DOM (樹、隨機存取) / SAX (事件流、低記憶體、單向)程式化處理 XML 文檔
連結/定位XLink / XPointer跨文檔引用、精準片段定位

第十五章:DOM / SAX / JDOM / DOM4J 解析器對比

  • DOM (W3C):全量載入記憶體,樹結構,支援修改、隨機存取,大檔案 OOM 風險。
  • SAX (W3C):事件驅動,流式處理,記憶體極低,唯讀、單向、無法回溯。
  • JDOM:Java 原生 API,非 W3C,輕量、易用,適合快速開發。
  • DOM4J:開源、效能最優、功能最全,**企業級首選**,支援 XPath、XSLT、事件模型。

DOM4J 程式碼範本

// 寫入
Document doc = DocumentHelper.createDocument();
Element root = doc.addElement("root");
root.addElement("child").addAttribute("attr", "value").setText("content");
OutputFormat fmt = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new FileOutputStream("out.xml"), fmt);
writer.write(doc); writer.close();

// 讀取 (SAXReader + 迭代器)
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("in.xml"));
for (Iterator i = doc.getRootElement().elementIterator(); i.hasNext(); ) {
    Element e = (Element) i.next();
    System.out.println(e.getName() + " = " + e.getTextTrim());
}

結語

從關係理論到 SQL、JDBC、DAO、ER 建模、正規化、XML 全棧技術,構建了企業級資料存取與交換的完整知識骨架。實戰中請根據資料量、併發、跨平台需求,在 RDBMS、NoSQL、XML/JSON 之間做理性選型。

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