UPDATE MyTable
SET FirstColumn = 'Updated!',
SecondColumn = 'Updated!',
ThirdColumn = 'Updated!'
WHERE FirstColumn = 'Update Me1';
-- 所有書價格加倍
UPDATE Titles SET Price = Price * 2;
-- 完整複製 (結構+資料+身分識別屬性)
SELECT * INTO NewTable FROM MyTable;
-- 指定欄位 + 條件篩選
SELECT FirstColumn INTO NewTable
FROM MyTable
WHERE SecondColumn = 'Copy Me!';
SQL Server 不支援直接 DROP COLUMN 或 ALTER COLUMN 變更型別 (舊版本),變通方案:
INSERT INTO NewTable SELECT ... FROM OldTableDROP TABLE OldTable、sp_rename 'NewTable', 'OldTable'| 函數 | 用途 | 忽略 NULL | 範例 |
|---|---|---|---|
| COUNT(*) | 列數 (含 NULL 列) | 否 | SELECT COUNT(*) FROM Authors |
| COUNT(col) | 非 NULL 值個數 | 是 | SELECT COUNT(Au_LName) FROM Authors |
| COUNT(DISTINCT col) | 互不相同非 NULL 值個數 | 是 | SELECT COUNT(DISTINCT Au_LName) FROM Authors |
| AVG(col) | 數值平均 | 是 | SELECT AVG(Vote) FROM Opinion |
| SUM(col) | 數值總和 | 是 | SELECT SUM(PurchaseAmount) FROM Orders |
| MAX(col) | 最大值 | 是 | SELECT MAX(Vote) FROM Opinion |
| MIN(col) | 最小值 | 是 | SELECT MIN(Vote) FROM Opinion |
SELECT AVG(Vote) AS TheAverage FROM Opinion;
-- Recordset("TheAverage") 即可取得
SELECT COUNT(*) FROM Tgongwen; -- 1500 ms
SELECT COUNT(GID) FROM Tgongwen; -- 1483 ms (PK, 最快)
SELECT COUNT(Fariqi) FROM Tgongwen; -- 3140 ms
SELECT COUNT(Title) FROM Tgongwen; -- 52050 ms (長字串最慢)
結論:COUNT(*) ≈ COUNT(PK) 最優;優化器自動選最窄欄位。長字串欄位統計極慢。
-- 各部門員工數、平均薪資、最高/最低薪資
SELECT DeptID,
COUNT(*) AS EmpCount,
AVG(Salary) AS AvgSalary,
MAX(Salary) AS MaxSalary,
MIN(Salary) AS MinSalary
FROM Employees
GROUP BY DeptID;
-- 員工數 > 5 的部門
SELECT DeptID, COUNT(*) AS Cnt
FROM Employees
GROUP BY DeptID
HAVING COUNT(*) > 5;
GROUP BY、ORDER BY 欄位建索引可避免排序運算子。sys.dm_db_partition_stats 即時估算、觸發器維護計數表、定期快取。AVG 忽略 NULL,若需視為 0 請用 AVG(ISNULL(col,0))。