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

SQL 指令大全:DDL、DML、DCL 分類與常用語法速查表

     編輯:關於SqlServer

SQL 語言分類

類別全稱常用指令用途
DDLData Definition Language
資料定義語言
CREATE, ALTER, DROP, DECLARE定義與管理資料庫物件結構
DMLData Manipulation Language
資料操縱語言
SELECT, INSERT, UPDATE, DELETE操作資料表中的資料內容
DCLData Control Language
資料控制語言
GRANT, REVOKE, COMMIT, ROLLBACK權限控制與交易管理

基礎 DDL 操作

資料庫管理

-- 建立資料庫
CREATE DATABASE database_name;

-- 刪除資料庫
DROP DATABASE dbname;

-- 備份 SQL Server 資料庫
USE master;
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat';
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 DEFINITION ONLY; -- 結構+可選資料

-- 刪除資料表
DROP TABLE tabname;

-- 新增欄位
ALTER TABLE tabname ADD COLUMN col type;
-- 注意:欄位新增後無法刪除(部份 DBMS 限制),資料型別通常不可變更,僅能擴充 VARCHAR 長度。

-- 主鍵管理
ALTER TABLE tabname ADD PRIMARY KEY (col);
ALTER TABLE tabname DROP PRIMARY KEY (col);

-- 索引管理
CREATE [UNIQUE] INDEX idxname ON tabname (col...);
DROP INDEX idxname;
-- 索引不可直接修改,需刪除後重建。

-- 檢視表管理
CREATE VIEW viewname AS SELECT statement;
DROP VIEW viewname;

核心 DML 操作

-- 查詢
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;

-- 模糊查詢(LIKE 語法)
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 sum_value FROM table1;

進階查詢技巧

  • 子查詢:`SELECT * FROM table1 WHERE id IN (SELECT id FROM table2 WHERE condition)`
  • 聯結:INNER JOIN、LEFT JOIN、RIGHT JOIN、CROSS JOIN
  • 分組彙總:`GROUP BY` 搭配 `HAVING` 過濾群組
  • 分頁查詢:SQL Server 使用 `ROW_NUMBER() OVER (ORDER BY col) 配合 CTE` 或 `OFFSET/FETCH`(2012+)
  • 合併結果:`UNION`(去重)、`UNION ALL`(保留重複)

DCL 權限與交易控制

-- 授權
GRANT SELECT, INSERT ON table1 TO user1;

-- 收回權限
REVOKE SELECT ON table1 FROM user1;

-- 交易控制
BEGIN TRANSACTION;
  UPDATE accounts SET balance = balance - 100 WHERE id = 1;
  UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT; -- 或 ROLLBACK 回滾

實務建議

  1. DDL 操作會隱式提交交易,謹慎在交易區塊中執行。
  2. 大量刪除資料考慮 `TRUNCATE TABLE`(無法 Rollback、重設身分值、速度較快)。
  3. 索引建立需依查詢模式規劃,避免過度索引拖慢寫入效能。
  4. 生產環境嚴禁直接 `DROP` 物件,建議先重命名或移至封存結構描述。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved