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

DBA 必備:SQL 基礎語法與進階查詢速查手冊

     編輯:關於SqlServer

一、資料庫與物件管理 (DDL)

操作語法範例備註
建立資料庫CREATE DATABASE MyDB;可加 ON PRIMARY ... LOG ON ... 指定檔案
刪除資料庫DROP DATABASE MyDB;需獨佔存取
備份資料庫BACKUP DATABASE MyDB TO DISK='C:\Backup\MyDB.bak';完整備份
建立資料表CREATE TABLE Users (ID INT PRIMARY KEY, Name NVARCHAR(50) NOT NULL);支援 IDENTITY、DEFAULT、CHECK
修改資料表ALTER TABLE Users ADD Email NVARCHAR(100);加欄位;刪欄位用 DROP COLUMN
建立索引CREATE INDEX IX_Users_Name ON Users(Name);唯一索引加 UNIQUE;含含欄位用 INCLUDE
建立檢視表CREATE VIEW v_ActiveUsers AS SELECT * FROM Users WHERE IsActive=1;加 WITH SCHEMABINDING 可建索引檢視

二、資料操作 (DML)

操作語法
查詢SELECT col1, col2 FROM Table WHERE condition ORDER BY col1 DESC;
新增INSERT INTO Table (col1, col2) VALUES ('A', 'B');
更新UPDATE Table SET col1='New' WHERE condition;
刪除DELETE FROM Table WHERE condition;
合併MERGE INTO Target USING Source ON ... WHEN MATCHED THEN UPDATE ... WHEN NOT MATCHED THEN INSERT ...;

三、集合運算子

運算子行為去重
UNION合併兩結果集是
UNION ALL合併兩結果集否(效能較好)
INTERSECT交集是
EXCEPT差集 (左 - 右)是

※ 所有運算子要求欄位數、順序、型別相容。

四、連接查詢

-- 內部連接
SELECT * FROM Orders o INNER JOIN Customers c ON o.CustID = c.CustID;

-- 左外部連接(保留左表所有列)
SELECT * FROM Customers c LEFT JOIN Orders o ON c.CustID = o.CustID;

-- 完整外部連接
SELECT * FROM TableA a FULL JOIN TableB b ON a.ID = b.ID;

-- 交叉連接(笛卡兒積)
SELECT * FROM TableA CROSS JOIN TableB;

五、常用彙總與視窗函數

函數用途範例
COUNT(*)列數SELECT COUNT(*) FROM Orders;
SUM(col)加總SELECT SUM(Amount) FROM Orders;
AVG(col)平均SELECT AVG(Score) FROM Exams;
ROW_NUMBER() OVER (ORDER BY col)排序編號分頁、去重首選
RANK() / DENSE_RANK()排名並列名次處理不同
LEAD() / LAG()取得前後列值同期比較

六、進階查詢模式

相關子查詢 vs JOIN

-- 相關子查詢(逐列執行,較慢)
SELECT * FROM Orders o
WHERE EXISTS (SELECT 1 FROM OrderDetails d WHERE d.OrderID = o.OrderID);

-- 改寫為 JOIN(集合運算,較快)
SELECT DISTINCT o.* FROM Orders o
INNER JOIN OrderDetails d ON o.OrderID = d.OrderID;

分頁查詢 (SQL Server 2012+)

SELECT * FROM Products
ORDER BY ProductID
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;

七、交易控制


BEGIN TRANSACTION;
    UPDATE Accounts SET Balance -= 100 WHERE ID = 1;
    UPDATE Accounts SET Balance += 100 WHERE ID = 2;
    IF @@ERROR <> 0 ROLLBACK TRANSACTION;
COMMIT TRANSACTION;

或使用 TRY...CATCH 區塊 (SQL 2005+)。

八、權限管理


CREATE LOGIN AppUser WITH PASSWORD = 'Str0ng!Pwd';
CREATE USER AppUser FOR LOGIN AppUser;
GRANT SELECT, INSERT, UPDATE ON Schema::dbo TO AppUser;
DENY DELETE ON Schema::dbo TO AppUser;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved