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

什麼是 SQL 資料庫:架構、語言組成與核心操作入門

     編輯:關於SqlServer

SQL(Structured Query Language,結構化查詢語言)是專為關聯式資料庫設計的標準化語言,功能強大、易學易用,已成為幾乎所有主流資料庫(SQL Server, Oracle, MySQL, PostgreSQL, DB2 等)的通用操作介面。

SQL 資料庫三級架構對照表

傳統關聯術語SQL 標準術語說明
外模式視圖使用者視角的邏輯資料子集
概念模式/模式基本表實際儲存資料的邏輯結構定義
內模式/儲存模式儲存檔案實體儲存結構與存取路徑
元組列一筆資料記錄
屬性欄資料項/欄位

SQL 語言四大功能分類

  1. 資料定義語言 (DDL):CREATE/ALTER/DROP DATABASE, TABLE, VIEW, INDEX — 定義邏輯結構。
  2. 資料操縱語言 (DML):
    • 查詢:SELECT
    • 更新:INSERT, UPDATE, DELETE
  3. 資料控制語言 (DCL):GRANT/REVOKE 權限、COMMIT/ROLLBACK 交易控制、完整性約束定義。
  4. 嵌入式 SQL 規範:規定 SQL 陳述式如何嵌入宿主語言(C, C++, Java, C#, COBOL, Python 等)程式碼中。

核心物件層級關係

  • 一個 資料庫 包含一或多個 結構描述。
  • 一個結構描述包含 基本表、視圖、索引、預存程序、函數 等物件。
  • 基本表 由列組成,每列對應一個欄位(資料型別、長度、精度、允許 NULL、預設值、約束)。
  • 視圖 是儲存的 SELECT 查詢定義,不儲存實體資料(索引視圖除外),提供安全性與邏輯簡化。
  • 一個基本表可跨多個 儲存檔案(檔案群組),一個檔案群組可放多個表。

常用資料型別概覽

分類型別範例適用場景
整數TINYINT, SMALLINT, INT, BIGINT計數、代碼鍵、識別碼
精確數值DECIMAL(p,s), NUMERIC(p,s), MONEY, SMALLMONEY金額、精確計算
近似數值FLOAT, REAL科學計算、非精確測量
日期時間DATE, TIME, DATETIME, DATETIME2, SMALLDATETIME, DATETIMEOFFSET時間戳記、排程、稽核
字串CHAR, VARCHAR, NCHAR, NVARCHAR, TEXT, NTEXT (舊)文字、代碼、JSON/XML 片段
二進位BINARY, VARBINARY, IMAGE (舊)檔案、圖片、加密資料
特殊UNIQUEIDENTIFIER, XML, GEOMETRY, GEOGRAPHY, HIERARCHYIDGUID、半結構化、空間、階層

基本 DDL 範例

-- 建立資料庫
CREATE DATABASE XMManage
ON PRIMARY (
    NAME = XMManage_Data,
    FILENAME = 'D:\Data\XMManage.mdf',
    SIZE = 500MB, MAXSIZE = 10GB, FILEGROWTH = 100MB
)
LOG ON (
    NAME = XMManage_Log,
    FILENAME = 'D:\Log\XMManage.ldf',
    SIZE = 100MB, MAXSIZE = 5GB, FILEGROWTH = 50MB
);
GO

-- 建立基本表
CREATE TABLE Projects (
    ProjectID INT IDENTITY(1,1) PRIMARY KEY,
    Name NVARCHAR(100) NOT NULL,
    StartDate DATE NOT NULL DEFAULT GETDATE(),
    Budget DECIMAL(14,2) CHECK (Budget >= 0),
    Status TINYINT NOT NULL DEFAULT 1
);
GO

-- 建立視圖
CREATE VIEW vw_ActiveProjects AS
SELECT ProjectID, Name, StartDate, Budget
FROM Projects
WHERE Status = 1;
GO

-- 建立索引
CREATE INDEX IX_Projects_StartDate ON Projects (StartDate);
GO

基本 DML 範例

-- 插入
INSERT INTO Projects (Name, StartDate, Budget) VALUES (N'網站改版', '2024-01-15', 500000);

-- 查詢
SELECT ProjectID, Name, Budget FROM vw_ActiveProjects WHERE Budget > 100000 ORDER BY StartDate;

-- 更新
UPDATE Projects SET Status = 2, Budget = Budget * 1.1 WHERE ProjectID = 1;

-- 刪除
DELETE FROM Projects WHERE ProjectID = 999 AND Status = 1;  -- 僅刪除草稿專案

嵌入式 SQL 概念(以 C# ADO.NET 為例)

using (var conn = new SqlConnection(connStr))
using (var cmd = new SqlCommand("SELECT Name FROM Projects WHERE Budget > @min", conn))
{
    cmd.Parameters.AddWithValue("@min", 100000);
    conn.Open();
    using (var reader = cmd.ExecuteReader())
        while (reader.Read()) Console.WriteLine(reader.GetString(0));
}

學習路徑建議

  1. 掌握 SELECT/FROM/WHERE/ORDER BY/GROUP BY/HAVING 查詢基礎。
  2. 熟練 JOIN(INNER, LEFT, RIGHT, FULL, CROSS)與子查詢/CTE。
  3. 理解索引原理、執行計畫閱讀、統計資料維護。
  4. 學習交易控制(ACID)、隔離等級、死鎖處理。
  5. 進階:分割資料表、資料壓縮、記憶體最佳化資料表、Columnstore 索引、查詢存儲。

SQL 是資料專業人員的通用語言,投資學習回報率極高。從基礎語法出發,逐步深入內部機制,即能駕馭各類關聯式資料庫平台。

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