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

SQL Server 入門(四):文字/影像資料操作與 DML 基礎指令

     編輯:關於SqlServer

文字與影像資料類型存取

  • `text` / `ntext` / `image` 可直接用於 `SELECT` 選取清單
  • 單次擷取大小受 `TEXTSIZE` 控制,預設 4096 位元組
  • 修改:`SET TEXTSIZE 2147483647`(最大 2GB);目前值存於 `@@TEXTSIZE`

TEXTPTR + READTEXT 精確讀取

-- 取得文字指標(16 位元組二進位)
DECLARE @ptr VARBINARY(16)
SELECT @ptr = TEXTPTR(notes) FROM authors WHERE au_id = '172-32-1176'

-- 讀取指定位移、長度
READTEXT authors.notes @ptr 0 1000  -- 從位移 0 讀 1000 位元組

適用於大型物件分塊讀取、避免一次傳輸過大資料。

資料操作語言 (DML) 基礎

INSERT

-- 明確欄位
INSERT INTO table (col1, col2) VALUES (val1, val2)

-- 從 SELECT 插入
INSERT INTO table (col1, col2)
SELECT colA, colB FROM other_table WHERE ...

-- 從預存程序插入
INSERT INTO table (col1, col2)
EXEC sp_GetData
  • 未列入欄位清單 → 依資料表定義順序
  • `timestamp` / `IDENTITY` 欄位不可指定值(系統自動產生)
  • 有 `DEFAULT` 限制的欄位可省略,將使用預設值

UPDATE

UPDATE table
SET col1 = val1, col2 = val2
WHERE search_condition
  • 無 `WHERE` → 更新所有列(極度危險)
  • 支援 `JOIN` 寫法:
    `UPDATE t SET t.col = s.col FROM target t JOIN source s ON t.id = s.id`

DELETE

DELETE [FROM] table
WHERE search_condition
  • 無 `WHERE` → 刪除所有列
  • 支援 `JOIN` 刪除多表關聯資料
  • 大量刪除考慮 `TRUNCATE TABLE`(無記錄、不可回復、重設 IDENTITY)

實務提醒

  • 所有 DML 皆在交易內執行,隱含或顯式 `BEGIN TRAN`
  • 大量操作分批次執行,避免鎖定升級與記錄檔暴增
  • 搭配 `@@ROWCOUNT` 確認影響列數
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved