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

T-SQL 速查手冊:從基礎語句到流程控制完全指南

     編輯:關於SqlServer

語句分類總覽

類別關鍵字功能
數據操作 (DML)SELECT檢索行列
INSERT添加新行
DELETE刪除行
UPDATE更新數據
數據定義 (DDL)CREATE TABLE創建表
DROP TABLE刪除表
ALTER TABLE修改表結構
CREATE VIEW創建視圖
DROP VIEW刪除視圖
CREATE INDEX創建索引
DROP INDEX刪除索引
CREATE PROCEDURE創建存儲過程
DROP PROCEDURE刪除存儲過程
CREATE TRIGGER創建觸發器
數據控制 (DCL)GRANT授予權限
DENY拒絕權限
REVOKE撤銷權限
事務控制 (TCL)COMMIT提交事務
ROLLBACK回滾事務
SET TRANSACTION定義事務特性
過程化 SQLDECLARE聲明游標
EXPLAIN描述訪問計劃
OPEN打開游標
FETCH提取行
CLOSE關閉游標
PREPARE準備動態 SQL
EXECUTE執行動態 SQL
DESCRIBE描述準備語句

變量聲明

-- 局部變量
DECLARE @id CHAR(10)
SET @id = '10010001'   -- 或 SELECT @id = '10010001'

-- 全局變量:以 @@ 開頭(如 @@ERROR, @@IDENTITY, @@ROWCOUNT)

流程控制

IF ... ELSE

DECLARE @x INT, @y INT, @z INT
SELECT @x = 1, @y = 2, @z = 3
IF @x > @y
    PRINT 'x > y'
ELSE IF @y > @z
    PRINT 'y > z'
ELSE
    PRINT 'z >= y'

CASE 表達式

USE pangu
UPDATE employee
SET e_wage = CASE
    WHEN job_level = '1' THEN e_wage * 1.08
    WHEN job_level = '2' THEN e_wage * 1.07
    WHEN job_level = '3' THEN e_wage * 1.06
    ELSE e_wage * 1.05
END

WHILE 循環 + BREAK/CONTINUE

DECLARE @x INT, @y INT, @c INT
SELECT @x = 1, @y = 1
WHILE @x < 3
BEGIN
    PRINT @x
    WHILE @y < 3
    BEGIN
        SELECT @c = 100*@x + @y
        PRINT @c
        SELECT @y = @y + 1
    END
    SELECT @x = @x + 1
    SELECT @y = 1
END

WAITFOR 延遲執行

WAITFOR DELAY '01:02:03'  -- 等待 1時2分3秒
SELECT * FROM employee

WAITFOR TIME '23:08:00'   -- 等到 23:08
SELECT * FROM employee

核心 DML 詳解

SELECT

SELECT *|列名 FROM 表名 WHERE 條件
-- 條件運算符:=, <>, >, <, >=, <=
-- LIKE 通配符:%, _, [範圍], [^排除範圍]
-- 邏輯:AND, OR, NOT
-- 范圍:BETWEEN ... AND ...
-- 列表:IN (值1, 值2...)
-- 排序:ORDER BY 列名 DESC|ASC 或列號
-- 子查詢:外層 WHERE 用 IN 防多行
-- 去重:DISTINCT
-- 計算列:SELECT 列, "別名" = 表達式
-- 分組:GROUP BY 列 HAVING 條件
-- 外連接:左連 *= 右連 =*

UNION 合併結果集

SELECT 列 FROM 表1
UNION [ALL]   -- ALL 保留重複行
SELECT 列 FROM 表2

INSERT

INSERT INTO 表 (列1, 列2) VALUES ('值1', '值2')
INSERT INTO 表 (列1, 列2) SELECT 列1, 列2 FROM 表2

UPDATE

UPDATE 表 SET 列1 = '值1' [WHERE 條件]
-- 可用 DEFAULT, NULL, 表達式 (列1 = 列2 + 4)

DELETE / TRUNCATE / DROP

DELETE FROM 表 WHERE 條件
TRUNCATE TABLE 表   -- 刪全表數據,保留結構,速度快、不記錄日誌
DROP TABLE 表       -- 刪表結構與數據
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved