Presentation is loading. Please wait.

Presentation is loading. Please wait.

데이터 수정 데이터 수정 명령문을 이해한다. 데이터 삽입, 갱신 및 삭제 명령문을 이해한다.

Similar presentations


Presentation on theme: "데이터 수정 데이터 수정 명령문을 이해한다. 데이터 삽입, 갱신 및 삭제 명령문을 이해한다."— Presentation transcript:

1 데이터 수정 데이터 수정 명령문을 이해한다. 데이터 삽입, 갱신 및 삭제 명령문을 이해한다.
정교하게 데이터를 삽입하는 각종 명령문을 사용할 수 있다.

2 기초 데이터 수정 명령문 고급 데이터 삽입

3 1. 기초 데이터 수정 명령문 INSERT 문의 기초 INSERT 문: 테이블에 한 행을 삽입하는 명령문
INSERT와 table_name 사이의 키워드 INTO는 Transact-SQL에서는 생략할 수 있지만, 생략할 수 없는 SQL 변종들도 많다. 따라서 호환성을 높이기 위해 가급적 INTO를 생략하지 않는 것이 좋다. column_list는 쉼표로 구분된 하나 이상의 열 목록을 가리킨다. (예: col1, col2, ...) value_list의 각각의 값은 같은 위치의 열에 할당된다.

4 1. 기초 데이터 수정 명령문 INSERT 문의 기초 value_list는 쉼표로 구분된 하나 이상의 값 목록을 가리킨다.
(예: val1, val2, ...) 값은 숫자 상수, 문자열 상수, 연산식, 키워드(DEFAULT) 등이 될 수 있음 숫자 상수는 숫자를 그냥 기입한다. (예: 1, 2.34) - 문자열상수는작은따옴표로둘러싼다. (예:‘ABC’,‘ 홍길동’) (value_list)는 쉼표로 구분되어 반복될 수 있다. 즉 하나의 INSERT 문으로 여러 행을 동시에 삽입할 수 있다.

5 1. 기초 데이터 수정 명령문 INSERT 문의 기초 INSERT 문의 실행이 성공하면 [그림 5-1]처럼 기본적으로
테이블의 마지막 행 뒤에 새로운 행이 삽입된다. INSERT 문이 실패하면 행 삽입은 취소되며, 테이블에 클러스터 인덱스가 있을 경우에는 기존의 행들 사이에 삽입될 수도 있다.

6 1. 기초 데이터 수정 명령문 INSERT 문의 기초 삽입한 결과, 일부 열이 NULL 상태로 되는 경우가 있지만, NULL도
특수한 값으로 간주되므로 예외에 해당되지 않음 따라서 ‘NULL 상태다’라는 표현 대신에 ‘NULL 값이 들어 있다’ 라는 표현을 쓸 것임 INSERT 문은 행 전체에 대해 적용된다. 즉 한 행의 일부분만을 삽입할 수는 없다.

7 1. 기초 데이터 수정 명령문 INSERT 문의 기초 예제 1
1 USE Test1DB; 2 INSERT INTO Table1 ( id, name ) 3 VALUES ( 4, 'bcdefg' ); 예제 1 Id 열에 4를 할당 name 열에 ‘bcdefg’를 할당 1 USE Test1DB; 2 INSERT INTO Table1 ( id, name ) 3 VALUES ( 4, 'bcdefg' );

8 1. 기초 데이터 수정 명령문 INSERT 문의 활용` 기본적인 INSERT 문에서 약간씩 변형된 경우를 알아보자.
열 순서 변경 - [예제 1]과 반대로 열의 순서를 바꿔서 데이터를 삽입 - name을 앞에, id를 뒤에 오게 하여 삽입했지만, 조회 결과는 정상임 - 바뀐 열과 값의 순서는 반드시 서로 일치해야 한다는 점을 주의하자. 1 INSERT INTO Table1 ( name, id ) 2 VALUES ( 'cdefgh', 5 ); 3 SELECT * 4 FROM Table1 5 WHERE id = 5; 예제 2 열 목록의 순서를 바꿔서 삽입: 값 목록은 열 목록과 일치

9 1. 기초 데이터 수정 명령문 INSERT 문의 활용 1 INSERT INTO Table1 ( name, id )
2 VALUES ( 'cdefgh', 5 ); 3 SELECT * 4 FROM Table1 5 WHERE id = 5;

10 1. 기초 데이터 수정 명령문 INSERT 문의 활용 여러 행 삽입 - 두 행의 값을 동시에 지정하여 한꺼번에 삽입해보자.
여러 행을 한꺼번에 삽입할 수도 있다. 이를 위해서는“(value_list)” 를 쉼표로 구분하여 반복하면 된다. - 두 행의 값을 동시에 지정하여 한꺼번에 삽입해보자. 1 INSERT INTO Table1 ( id, name ) 2 VALUES 3 ( 6, 'defghi' ), 4 ( 7, 'efghij' ); 5 SELECT * FROM Table1; 예제 3 두 행이 동시에 삽입됨

11 1. 기초 데이터 수정 명령문 INSERT 문의 활용 1 INSERT INTO Table1 ( id, name )
2 VALUES 3 ( 6, 'defghi' ), 4 ( 7, 'efghij' ); 5 SELECT * FROM Table1;

12 1. 기초 데이터 수정 명령문 INSERT 문의 활용 열 생략 - 열을 생략하는 경우를 살펴보자. 예제 4
- Name 열 하나만 지정하고, 삽입한 행을 조회해 보자. 1 USE AdventureWorksLT; 2 INSERT INTO SalesLT.ProductCategory ( Name ) 3 VALUES ('기타1'); 4 SELECT * 5 FROM SalesLT.ProductCategory 6 WHERE NAME = '기타1'; 예제 4 한 열만 지정

13 1. 기초 데이터 수정 명령문 INSERT 문의 활용 1 USE AdventureWorksLT;
2 INSERT INTO SalesLT.ProductCategory ( Name ) VALUES ('기타1'); 4 SELECT * FROM SalesLT.ProductCategory 6 WHERE NAME = '기타1‘;

14 1. 기초 데이터 수정 명령문 INSERT 문의 활용 열을 생략할 경우 아무 열이나 생략할 수 없음
NULL이 허용되지 않고, 기본 값(DEFAULT)도 정의되어 있지 않으며, IDENTITY 속성도 설정되지 않은 열을 생략하면 오류가 발생함 (기본 값: 열 값을 생략할 때 기본적으로 삽입되도록 미리 정의해 놓은 값) NULL의 표현 쿼리 편집기에서는 식별을 도와주기 위해‘NULL’이라고 표시해 주지만, 실제로 NULL 열에는 아무런 값도 들어 있지 않다. 그러나 분명 한 의사소통을 위해‘NULL 값이 들어 있다’라고 표현하기로 하겠다.

15 1. 기초 데이터 수정 명령문 INSERT 문의 활용 값으로 DEFAULT 사용
열에는 기본 값 또는 NULL이(기본 값이 정의되어 있지 않고 NULL 이 허용되는 열일 경우) 삽입된다. 1 USE AdventureWorksLT; 2 INSERT INTO SalesLT.ProductCategory 3 (ParentProductCategoryID, Name, rowguid, ModifiedDate) 4 VALUES (DEFAULT, '기타2', DEFAULT, DEFAULT); 예제 5 기본 값으로 지정

16 1. 기초 데이터 수정 명령문 INSERT 문의 활용 1 USE AdventureWorksLT;
2 INSERT INTO SalesLT.ProductCategory 3 (ParentProductCategoryID, Name, rowguid, ModifiedDate) 4 VALUES (DEFAULT, '기타2', DEFAULT, DEFAULT);

17 1. 기초 데이터 수정 명령문 INSERT 문의 활용 - 방금 삽입된 행을 조회해 보자. 5 SELECT *
6 FROM SalesLT.ProductCategory 7 WHERE NAME = '기타2‘;

18 1. 기초 데이터 수정 명령문 INSERT 문의 활용 값으로 NULL을 지정
무조건 NULL이 삽입됨(단, NULL이 허용되는 열이어야 한다) - 4행에서 기본 키인 id 열에는 IDENTITY 속성을 설정하고, 5행에서 name 열에는 NULL을 허용함 - 6~8행에서 location 열에는 NULL을 허용하면서 기본 값을 정의함 - 9~11행에서 reg_date 열에는 NULL을 허용하지 않고 기본 값을 정의 - 16~17행에서 name 열에는‘홍길동’, location 열에는 NULL을 지정하여 한 행을 삽입함 예제 6

19 1. 기초 데이터 수정 명령문 INSERT 문의 활용 1 USE Test1DB; 2 GO
3 CREATE TABLE TableDft ( 4 id int IDENTITY (1,1), 5 name varchar(20) NULL, 6 location varchar(20) NULL 7 CONSTRAINT Default_Location DEFAULT '서울시‘, 9 reg_date datetime NOT NULL CONSTRAINT Default_CurrDate DEFAULT GETDATE ( ), 12 CONSTRAINT XPKTableDft PRIMARY KEY CLUSTERED (id ASC) 14 ); 15 GO 16 INSERT INTO TableDft (name, location) 17 VALUES ('홍길동', NULL );

20 1. 기초 데이터 수정 명령문 INSERT 문의 활용
- location 열에‘서울시’라는 기본 값을 정의했지만, 실행 결과를 보면 NULL이 삽입된 것을 확인할 수 있음 18 SELECT * FROM TableDft;

21 1. 기초 데이터 수정 명령문 INSERT 문의 활용 예제 7 - NULL 대신에 DEFAULT를 삽입
- name 열에‘을지매’를, location 열에는 DEFAULT를 지정하여 삽입해보자. 예제 7 1 INSERT INTO TableDft (name, location) 2 VALUES ('을지매', DEFAULT );

22 1. 기초 데이터 수정 명령문 INSERT 문의 활용 - 방금 삽입된 행을 조회해 보자.
3 SELECT * FROM TableDft;

23 1. 기초 데이터 수정 명령문 INSERT 문의 활용 DEFAULT VALUES 절 완전히 대치함 예제 8
열의 개수만큼‘DEFAULT’를 나열해도 된다. 그러나 DEFAULT VALUES 절을 이용하면 휠씬 간단하게 적용할 수 있다. -‘DEFAULT VALUES’절은 기본적인‘VALUES(값 목록)’절을 완전히 대치함 예제 8 1 INSERT INTO TableDft 2 DEFAULT VALUES;

24 1. 기초 데이터 수정 명령문 INSERT 문의 활용 - 방금 삽입된 행을 조회해 보자.
3 SELECT * FROM TableDft;

25 1. 기초 데이터 수정 명령문 UPDATE 문의 기초 UPDATE 문: 테이블의 하나 이상의 열을 갱신하는 명령문
구문 설명 columni = valuei 쌍은 필요한 만큼 반복될 수 있다(쌍들 사이는‘,’ 로 구분한다). WHERE 절은 생략될 수도 있지만, 이 경우 모든 행을 일괄적으로 갱신 하므로 대부분의 경우에 WHERE 절을 사용한다.

26 1. 기초 데이터 수정 명령문 UPDATE 문의 기초 UPDATE 문의 작동 원리

27 1. 기초 데이터 수정 명령문 UPDATE 문의 기초 예제 9 - [그림 5-1]의 개념도를 구현해보자.
1 USE Test1DB; 2 SELECT * FROM TableDft; 3 UPDATE TableDft 4 SET location = '부산시' 5 WHERE location = '서울시'; 6 SELECT * FROM TableDft; 예제 9 location 값을 ‘부산시’로 변경

28 1. 기초 데이터 수정 명령문 UPDATE 문의 기초 1 USE Test1DB; 2 SELECT * FROM TableDft;
3 UPDATE TableDft 4 SET location = '부산시' 5 WHERE location = '서울시'; 6 SELECT * FROM TableDft;

29 1. 기초 데이터 수정 명령문 UPDATE 문의 활용 값으로 DEFAULT 사용 1 SELECT * FROM TableDft
또는 NULL로 (기본 값이 정의되어 있지 않고 NULL이 허용되는 열일 경우) 갱신할 수 있다. 1 SELECT * FROM TableDft 2 WHERE id = 1; 3 UPDATE TableDft 4 SET location = DEFAULT 5 WHERE id = 1; 6 SELECT * FROM TableDft 7 WHERE id = 1; 예제 10 location 값을 기본 값으로 변경

30 1. 기초 데이터 수정 명령문 UPDATE 문의 활용 1 SELECT * FROM TableDft 2 WHERE id = 1;
3 UPDATE TableDft 4 SET location = DEFAULT 5 WHERE id = 1; 6 SELECT * FROM TableDft 7 WHERE id = 1;

31 1. 기초 데이터 수정 명령문 UPDATE 문의 활용 기존의 열 값을 기준으로 갱신 1 USE Test1DB;
더하거나 곱하는 등의 조작을 하는 경우가 많다. - 기존 열 값을 기준으로 갱신해보자. 1 USE Test1DB; 2 SELECT * FROM orders 3 WHERE orders_id = 1; 4 UPDATE orders 5 SET qty = qty + 5 6 WHERE orders_id = 1; 7 SELECT * FROM orders 8 WHERE orders_id = 1; 예제 11 기존 qty 값에 5를 더한 값으로 변경

32 1. 기초 데이터 수정 명령문 UPDATE 문의 활용 1 USE Test1DB; 2 SELECT * FROM orders
3 WHERE orders_id = 1; 4 UPDATE orders 5 SET qty = qty + 5 6 WHERE orders_id = 1; 7 SELECT * FROM orders 8 WHERE orders_id = 1;

33 1. 기초 데이터 수정 명령문 DELETE 문 DELETE 문: 테이블에서 하나 이상의 행을 삭제하는 명령문
구문 설명 DELETE와 table_name 사이의 키워드 FROM은 Transact-SQL에서는 생략할 수 있지만, 생략할 수 없는 SQL 변종들도 많다. 따라서 호환성을 높이기 위해 가급적 FROM을 생략하지 않는 것이 좋다. WHERE 절은 생략될 수도 있지만, 이 경우 모든 행을 일괄적으로 삭제하므로 대부분의 경우에WHERE 절을 사용한다.

34 1. 기초 데이터 수정 명령문 DELETE 문 DELETE 문의 작동 원리

35 1. 기초 데이터 수정 명령문 DELETE 문 DELETE 문이 실행되면 WHERE 절에서 지정한 행 전체가 삭제된다.
에는 하나 또는 그 이상의 행이 삭제된다. DELETE 문은 행 단위로 적용되며, 행의 일부만을 삭제할 수는 없다. 1 USE Test1DB; 2 SELECT * FROM Table1; 3 DELETE FROM Table1 4 WHERE id = 7; 5 SELECT * FROM Table1 6 WHERE id = 7; 예제 12

36 1. 기초 데이터 수정 명령문 DELETE 문 1 USE Test1DB; 2 SELECT * FROM Table1;
3 DELETE FROM Table1 4 WHERE id = 7; 5 SELECT * FROM Table1 6 WHERE id = 7;

37 2. 고급 데이터 삽입 SELECT INTO 문 SELECT INTO 문: 새로운 테이블을 만들고 조회 결과를 이 테이블에
행으로 삽입한다. SELECT INTO 문의 개념도

38 2. 고급 데이터 삽입 SELECT INTO 문 SELECT INTO 문의 구문 구문 설명
new_table은 데이터베이스 내에 존재하지 않는 새로운 이름이어야 함 SELECT INTO 문을 실행하려면 CREATE TABLE 권한이 있어야 함 select_list에서는 반드시 열 이름 또는 열 별칭을 사용해야만 함. select_list의 계산된 열도 new_table에서는 더 이상 계산된 열이 아니며, 원본 식에 의해 자동으로 데이터 형이 부여됨 search_condition이 실패하면 데이터는 없이 테이블 구조만 만들어짐

39 2. 고급 데이터 삽입 SELECT INTO 문 예제 13 - [그림 5-4]의 개념도를 구현해보자.
1 USE Test1DB; 2 SELECT name, YEAR(reg_date) AS reg_year 3 INTO Temp1 4 FROM TableDft; 5 SELECT * 6 FROM Temp1;

40 2. 고급 데이터 삽입 SELECT INTO 문 예제 14 - [예제 13]에서 생성된 Temp1 테이블의 특성을 확인해보자.
1 USE Test1DB; 2 EXEC SP_HELP Temp1;

41 2. 고급 데이터 삽입 INSERT SELECT 문 INSERT SELECT 문: 조회 결과를 기존 테이블에 누적하여 삽입시킴

42 2. 고급 데이터 삽입 INSERT SELECT 문 조회 결과, Table1 테이블로부터 추출된 결과 집합이 Temp1
테이블에 있는 기존의 행들에 누적되어 삽입된다. INSERT SELECT 문의 구문 구문 설명 existing_table은 데이터베이스 내에 이미 존재하는 기존의 테이블 이름이어야 한다. select_list의 데이터 형식은 existing_table의 열들의 데이터 형식과 호환성이 있어야 한다. existing_table에는 있으나 select_list에서 생략된 열에는 기본 값이 설정되어 있거나 NULL을 허용해야 한다.

43 2. 고급 데이터 삽입 INSERT SELECT 문 예제 15 - [그림 5-6]의 개념도를 구현 1 USE Test1DB;
2 SELECT COUNT(*) FROM Temp1; 3 INSERT INTO Temp1 (name) 4 SELECT name 5 FROM Table1 6 WHERE id <= 2; 7 SELECT * FROM Temp1;


Download ppt "데이터 수정 데이터 수정 명령문을 이해한다. 데이터 삽입, 갱신 및 삭제 명령문을 이해한다."

Similar presentations


Ads by Google