[MSSQL 강좌 - 6] DML - insert, update, delete


Study/Database  2012. 10. 18. 09:25

안녕하세요. 명월입니다.


이번 포스팅에서는 DML에 대해서 알아보겠습니다. DML이란 데이터 조작 언어라고 불리웁니다. 물론 전에 살펴 보았았던 Select 도 DML 에 속한 구문입니다. Select 는 워낙 자주 사용하고 내용이 방대하기에 따로 빼서 포스팅을 하였던 것이고 이번 포스팅에서는 실질적으로 데이터를 조작하는 insert, update, delete 에 대해서 살펴보겠습니다.

 

insert 는 앞에서도 잠깐 살펴 보았듯이 데이터를 입력하는 구문입니다.

MSDN으로 살펴 보겠습니다.

MSDN - insert MSDN 바로가기

[ WITH <common_table_expression> [ ,...n ] ]
INSERT 
{
    [ TOP ( expression ) [ PERCENT ] ] 
    [ INTO ] 
    { <object> | rowset_function_limited 
      [ WITH ( <Table_Hint_Limited> [ ...n ] ) ]
    }
  {
    [ ( column_list ) ] 
    [ <OUTPUT Clause> ]
    { VALUES ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n     ] 
    | derived_table 
    | execute_statement
    | <dml_table_source>
    | DEFAULT VALUES 
    }
  }
}
[;]

이렇게 보면 역시 무슨 말인지 이해가 되질 않습니다.

insert 를 가장 많이 사용하게 되는 형식은

insert into 테이블 (컬럼명) values (데이터값) 또는 모든 컬럼에 Default 로 넣을 경우에는 insert into 테이블 values(데이터 값) 으로 입력을 합니다.

 

설명 보다는 예제로 살펴보도록하겠습니다.

insert into Test_table(idx,name,학교,학년) values(11,'고릴라','중앙','3')

insert into Test_table values(12,'땡보','고려','1')

이렇게 값을 넣어보도록 하겠습니다.

insert 구문은 select 와 같이 사용할 수도 있습니다.

먼저 똑같은 형식의 테이블을 만들어 보도록하겠습니다.

create table Test_table2(
  idx bigint,
  Name varchar(10),
  학교 varchar(10),
  학년 char(1)
)

보시는 바와 같이 똑같은 테이블을 만들어 보았습니다.

그럼 Test_table에 있는 데이터를 똑같이 옮겨보도록하겠습니다.

보시는 바와 같이 입력이 되었습니다. select 의 컬럼수만 맞추면 입력이 되는 형태가 되겠습니다.

 

이번에는 Update 에 대해 알아보도록 하겠습니다.

MSDN - update MSDN 바로가기

[ WITH common_table_expression [...n] ]
UPDATE 
  [ TOP (expression) [ PERCENT ] ] 
  { { table_alias | <object> | rowset_function_limited 
    [ WITH (table_hint_limited [ ...n ] ) ]
  }
    | @table_variable
  }
  SET
    { column_name= { expression | DEFAULT | NULL }
      | { udt_column_name.{ { property_name=expression
	  | field_name=expression }
	  | method_name(argument [ ,...n ] )
          }
      }
      | column_name { .WRITE (expression,@Offset,@Length) }
      | @variable=expression
      | @variable=column=expression
      | column_name { += | -= | *= | /= | %= | &= | ^= | |= } expression
      | @variable { += | -= | *= | /= | %= | &= | ^= | |= } expression
      | @variable=column_name { += | -= | *= | /= | %= | &= | ^= | |= } expression
    } [ ,...n ] 
  [ 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
}

자주 사용하는 구문 형태로 확인 하겠습니다.

update 테이블 이름 set 컬럼명 = 데이터값 where 조건

예제로 살펴보도록 하겠습니다.


 보시는 바와 같이 값이 변했습니다.

 

이번에는 Delete 구문에 대해서 알아보도록하겠습니다.

Delete 는 말그대로 삭제 구문입니다.

MSDN - Delete MSDN 바로가기

[ 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 도 자주 사용하는 구문형식으로 확인 하도록 하겠습니다.

Delete 테이블명 where 조건문

예제로 살펴 보도록 하겠습니다.

레코드가 하나 사라졌습니다.

 

우리가 프로그래밍을 하면서 가장 select 다음으로 많이 사용되는 구문입니다. 여기까지 충분한 연습을 통해 확실히 이해가 되었다면 DB를 끼고 개발하는 ADO 프로그래밍은 거의 무리없이 개발이 가능합니다.

특히 DB의 비중이 많은 웹 개발이라고 하시면 여기까지 익히셔도 게시판까지는 무리 없이 개발이 가능합니다.

참고 쿼리 - 20121018.sql