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

SQL 常用指令大全:DDL、DML、DCL 與進階查詢技巧

     編輯:關於SqlServer

SQL 指令分類

類別全稱常用指令用途
DDLData Definition LanguageCREATE, ALTER, DROP, TRUNCATE定義資料庫物件結構
DMLData Manipulation LanguageSELECT, INSERT, UPDATE, DELETE操作資料內容
DCLData Control LanguageGRANT, REVOKE, COMMIT, ROLLBACK權限控制與交易管理

核心 DDL 操作

資料庫與資料表

-- 建立/刪除資料庫
CREATE DATABASE MyDB;
DROP DATABASE MyDB;

-- 建立資料表(含主鍵、非空、預設值)
CREATE TABLE Users (
    UserID   INT PRIMARY KEY IDENTITY,
    UserName NVARCHAR(50) NOT NULL,
    Email    NVARCHAR(100) UNIQUE,
    RegDate  DATETIME DEFAULT GETDATE()
);

-- 修改結構
ALTER TABLE Users ADD Phone NVARCHAR(20);
ALTER TABLE Users ALTER COLUMN Email NVARCHAR(150); -- 擴充長度
ALTER TABLE Users DROP COLUMN Phone;

索引與檢視

CREATE UNIQUE INDEX IX_Users_Email ON Users(Email);
DROP INDEX IX_Users_Email ON Users;

CREATE VIEW V_ActiveUsers AS
SELECT UserID, UserName FROM Users WHERE IsActive = 1;

核心 DML 查詢與修改

基本查詢

SELECT * FROM Users WHERE UserName LIKE '張%';
SELECT UserName, Email FROM Users ORDER BY RegDate DESC;
SELECT COUNT(*) AS Total FROM Users;

分頁查詢 (SQL Server 2012+)

SELECT * FROM Users
ORDER BY UserID
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY; -- 第 3 頁,每頁 10 筆

集合運算

SELECT UserID FROM Users_2023
UNION      -- 去重合併
SELECT UserID FROM Users_2024;

SELECT UserID FROM Users_2023
EXCEPT     -- 差集
SELECT UserID FROM Users_2024;

SELECT UserID FROM Users_2023
INTERSECT  -- 交集
SELECT UserID FROM Users_2024;

進階實用技巧

  • 隨機抽樣:SELECT TOP 10 * FROM Users ORDER BY NEWID()
  • 刪除重複資料:DELETE FROM Users WHERE UserID NOT IN (SELECT MAX(UserID) FROM Users GROUP BY Email)
  • 動態字串截斷顯示:CASE WHEN LEN(Title) > 20 THEN LEFT(Title,20)+'...' ELSE Title END
  • 交易控制:BEGIN TRAN; ... COMMIT/ROLLBACK;

效能小撇步

  • 避免 SELECT *,明確列出欄位。
  • WHERE 條件欄位建立索引,但低基數欄位(如性別)不宜建索引。
  • 大量匯入用 BULK INSERT 或 bcp,而非逐筆 INSERT。
  • 善用 SET STATISTICS IO, TIME ON 分析查詢成本。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved