IT/SQL

MSSQL DELETE 및 DELETE JOIN

아이앤휘 2024. 4. 22. 13:33

MSSQL DELETE 문과 FROM 및 JOIN 절을 사용한 DELETE 문을 살펴봅니다.

 

구문

-- Syntax for SQL Server and Azure SQL Database  
  
[ WITH <common_table_expression> [ ,...n ] ]  
DELETE   
    [ TOP ( expression ) [ PERCENT ] ]   
    [ FROM ]   
    { { table_alias  
      | <object>   
      | rowset_function_limited   
      [ WITH ( table_hint_limited [ ...n ] ) ] }   
      | @table_variable  
    }  
    [ <OUTPUT Clause> ]  
    [ FROM table_source [ ,...n ] ]   
    [ WHERE { <search_condition>   
            | { [ CURRENT OF   
                   { { [ GLOBAL ] cursor_name }   
                       | cursor_variable_name   
                   }   
                ]  
              }  
            }   
    ]   
    [ OPTION ( <Query Hint> [ ,...n ] ) ]   
[; ]  
  
<object> ::=  
{   
    [ server_name.database_name.schema_name.   
      | database_name. [ schema_name ] .   
      | schema_name.  
    ]  
    table_or_view_name   
}

 

잘 안쓰는 내용까지 섞여있어서 구문이 깁니다.

간단한 구문을 이용한 샘플을 보겠습니다.

 

기본구분은 아래와 같습니다.

DELETE FROM TA WHERE C1 < 10

 

JOIN 을 사용한 DELETE

테이블 TA 와 TB 는 각각 아래와 같이 10 개와 6개의 레코드가 있습니다.

현재 데이터

구문

DELETE A
FROM TA A
JOIN TB B ON A.C1 = B.C1

FROM 이하 절은 SELECT 등과 동일하고, DELETE 뒤에 지울 테이블의 ALIAS 를 넣어줍니다.

 

DELETE 결과

DELETE 결과

 

TOP 절을 이용한 DELETE

TOP 을 이용한 DELETE

 

대량의 데이터를 삭제할 때 잠김을 방지하기 위해서 종종 사용합니다.