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

常用 SQL 陳述式大全:基礎 DDL/DML、進階查詢、外聯接、子查詢、跨庫操作

     編輯:關於SqlServer

一、基礎 DDL/DML

操作SQL Server / 通用語法
建立資料庫CREATE DATABASE DbName
刪除資料庫DROP DATABASE DbName
備份資料庫BACKUP DATABASE DbName TO DISK = 'Path.bak'
建立資料表CREATE TABLE T (Col1 Type1 [NOT NULL] [PRIMARY KEY], Col2 Type2 ...)
依現有表建表SELECT * INTO NewT FROM OldT WHERE 1=0 (結構) / SELECT * INTO NewT FROM OldT (結構+資料)
刪除資料表DROP TABLE T
新增欄位ALTER TABLE T ADD Col Type
新增主鍵ALTER TABLE T ADD PRIMARY KEY (Col)
建立索引CREATE [UNIQUE] INDEX IdxName ON T (Col...)
建立視圖CREATE VIEW V AS SELECT ...

二、基礎 DML 單表操作

操作語法
查詢SELECT * FROM T WHERE Condition
插入INSERT INTO T (C1, C2) VALUES (V1, V2)
刪除DELETE FROM T WHERE Condition
更新UPDATE T SET C1 = V1 WHERE Condition
模糊查詢SELECT * FROM T WHERE C1 LIKE '%Keyword%'
排序SELECT * FROM T ORDER BY C1, C2 [DESC]
統計COUNT/SUM/AVG/MAX/MIN

三、集合運算子

運算子說明去重
UNION合併結果集是
UNION ALL合併結果集否 (效能較好)
EXCEPT (SQL Server) / MINUS (Oracle)差集 (在前不在後)是
INTERSECT交集是

注意:參與運算的查詢欄位數、順序、資料型別必須相容。

四、外聯接 (JOIN)

類型關鍵字結果集
左外聯接LEFT [OUTER] JOIN左表全保留 + 匹配右表
右外聯接RIGHT [OUTER] JOIN右表全保留 + 匹配左表
完整外聯接FULL [OUTER] JOIN雙表全保留

SELECT a.Col1, a.Col2, b.Col3, b.Col4
FROM TableA a
LEFT OUTER JOIN TableB b ON a.Key = b.Key;

五、子查詢與衍生表


-- WHERE 子查詢
SELECT * FROM TableA WHERE Col1 IN (SELECT Col2 FROM TableB);

-- 衍生表 (FROM 子查詢)
SELECT * FROM (SELECT Col1, Col2 FROM TableA) T WHERE T.Col1 > 1;

六、BETWEEN 範圍查詢


SELECT * FROM T WHERE DateCol BETWEEN '2024-01-01' AND '2024-01-31';  -- 含邊界
SELECT * FROM T WHERE NumCol NOT BETWEEN 10 AND 20;  -- 不含邊界

七、跨資料庫/異構資料存取 (SQL Server)


-- Access
SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 'Data Source="C:\DB.mdb"')...TableName;

-- Excel
SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 'Data Source="C:\Book.xls";Extended Properties=Excel 8.0')...[Sheet1$];

-- 另一 SQL Server (連結伺服器)
SELECT * FROM LinkedServer.DB.dbo.TableName;

八、實用進階片段

  • 分頁 (SQL 2012+):OFFSET @PageSize * (@PageNum-1) ROWS FETCH NEXT @PageSize ROWS ONLY
  • 去重保留最新:DELETE FROM T WHERE ID NOT IN (SELECT MAX(ID) FROM T GROUP BY KeyCol)
  • 動態轉置 (行轉列):配合 PIVOT 或動態 SQL 組裝 CASE WHEN 聚合。
  • 遞迴 CTE (階層查詢):WITH CTE AS (SELECT ... UNION ALL SELECT ... FROM CTE JOIN ...)

結語

此清單涵蓋日常開發 90% 以上 SQL 場景。建議依專案資料庫平台 (SQL Server/Oracle/PostgreSQL/MySQL) 微調語法細節 (如 LIMIT/OFFSET、序列、日期函數) 後建立團隊程式碼片段庫。

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