首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL Server 完整語法速查:DDL、DML、DCL 與進階查詢實戰指南

     編輯:MySQL 資料庫相關知識

掌握 SQL Server 的核心語法,是資料庫開發與管理的基本功。本文系統整理 SQL 三大語言分類(DDL、DML、DCL)的常用指令,涵蓋資料庫/資料表建立、備份、索引、視圖、聯結查詢、集合運算等實務操作,並附上可直接執行的語法範例,適合開發人員隨時查閱。

SQL 三大語言分類

分類全稱常用指令
DDLData Definition LanguageCREATE, ALTER, DROP, DECLARE
DMLData Manipulation LanguageSELECT, DELETE, UPDATE, INSERT
DCLData Control LanguageGRANT, REVOKE, COMMIT, ROLLBACK

基礎物件操作語法

資料庫管理

-- 建立資料庫
CREATE DATABASE database_name;

-- 刪除資料庫
DROP DATABASE dbname;

-- 備份資料庫(建立備份裝置並執行備份)
USE master;
EXEC sp_addumpdevice 'disk', 'testBack', 'C:\backup\MyDB.bak';
BACKUP DATABASE pubs TO testBack;

資料表結構操作

-- 建立新表
CREATE TABLE tabname (
  col1 type1 [NOT NULL] [PRIMARY KEY],
  col2 type2 [NOT NULL], ...
);

-- 依現有表結構建立新表
CREATE TABLE tab_new LIKE tab_old;              -- 僅複製結構
CREATE TABLE tab_new AS SELECT col1, col2 FROM tab_old WHERE 1=0;  -- 複製結構不含資料

-- 刪除資料表
DROP TABLE tabname;

-- 新增欄位
ALTER TABLE tabname ADD COLUMN col type;

-- 設定/移除主鍵
ALTER TABLE tabname ADD PRIMARY KEY (col);
ALTER TABLE tabname DROP PRIMARY KEY;

-- 索引操作
CREATE [UNIQUE] INDEX idxname ON tabname(col...);
DROP INDEX idxname;

-- 視圖操作
CREATE VIEW viewname AS SELECT ...;
DROP VIEW viewname;

核心查詢與彙總函數

-- 基礎查詢
SELECT * FROM table1 WHERE condition;
INSERT INTO table1(field1,field2) VALUES(value1,value2);
DELETE FROM table1 WHERE condition;
UPDATE table1 SET field1=value1 WHERE condition;
SELECT * FROM table1 WHERE field1 LIKE '%value1%';
SELECT * FROM table1 ORDER BY field1, field2 [DESC];

-- 彙總統計
SELECT COUNT(*) AS totalcount FROM table1;
SELECT SUM(field1) AS sumvalue FROM table1;
SELECT AVG(field1) AS avgvalue FROM table1;
SELECT MAX(field1) AS maxvalue FROM table1;
SELECT MIN(field1) AS minvalue FROM table1;

進階集合運算:UNION / EXCEPT / INTERSECT

  • UNION:合併兩結果集並移除重複列;UNION ALL 保留重複。
  • EXCEPT:回傳存在於第一個結果集但不在第二個結果集的列;EXCEPT ALL 保留重複。
  • INTERSECT:回傳兩結果集交集;INTERSECT ALL 保留重複。
注意: 參與運算的查詢結果欄位數、資料型別必須一致。

外部聯結(OUTER JOIN)完整語法

-- LEFT OUTER JOIN:左表所有列 + 右表匹配列
SELECT a.a, a.b, a.c, b.c, b.d, b.f 
FROM a LEFT OUTER JOIN b ON a.a = b.c;

-- RIGHT OUTER JOIN:右表所有列 + 左表匹配列
SELECT ... FROM a RIGHT OUTER JOIN b ON a.a = b.c;

-- FULL OUTER JOIN:兩表所有列
SELECT ... FROM a FULL OUTER JOIN b ON a.a = b.c;

實用技巧:複製表結構與資料

-- 僅複製結構
SELECT * INTO b FROM a WHERE 1<>1;
-- 或
SELECT TOP 0 * INTO b FROM a;

-- 複製資料
INSERT INTO b(a, b, c) SELECT d, e, f FROM a;

-- 跨資料庫複製(Access/舊版語法)
INSERT INTO b(a, b, c) SELECT d, e, f FROM b IN '完整路徑\data.mdb' WHERE 條件;

子查詢與衍生表查詢

-- IN 子查詢
SELECT a,b,c FROM a WHERE a IN (SELECT d FROM b);

-- 衍生表(內聯檢視)
SELECT * FROM (SELECT a,b,c FROM a) T WHERE t.a > 1;

熟練這些語法,能大幅提升撰寫預存程序、ETL 腳本與效能調校的效率。建議收藏備查,並在測試環境實驗各指令行為差異。

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