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

Slides:



Advertisements
Similar presentations
일정 관리 다이어리 제작 JSP Programming with a Workbook. 학습 목표  사용자의 일정을 관리할 수 있는 다이어리에 대하여 알아보자. JSP Programming with a Workbook2.
Advertisements

12 데이터 무결성 제약조건 데이터 무결성 제약조건의 개념 데이터 무결성 제약조건의 종류 무결성 제약조건의 생성 방법.
PARK SUNGJIN Oracle 설치 PARK SUNGJIN
DB 프로그래밍 학기.
DB 프로그래밍 학기.
You YOungseok 데이터베이스 테이블 및 인덱스 You YOungseok.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
Excel 일차 강사 : 박영민.
데이터 베이스 설계 및 실습 #1 - 오라클 설치 및 SQL 기본.
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
SQL 개요 SQL 개요 - SQL은 현재 DBMS 시장에서 관계 DBMS가 압도적인 우위를 차지하는 데 중요한 요인의 하나
12장 데이터 읽기 일관성과 락.
6장 Mysql 명령어 한빛미디어(주).
MySQL 및 Workbench 설치 데이터 베이스.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
14장 질의응답 한빛미디어(주).
기본적인 SELECT문 작성.
11 테이블 관리와 데이터 딕셔너리 데이터베이스 응용 프로젝트 개발 테이블 구조 변경 데이터 딕셔너리.
3장. 데이터베이스 구축의 전체 과정 미리 실습하기
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
5장 Mysql 데이터베이스 한빛미디어(주).
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
ASP.NET : Database 접근 2008 컴퓨터공학실험(Ⅰ)
단일 테이블 조회를 위한 SELECT 문을 이해한다. 열 제약조건과 행 제약조건을 이해한다. 결과 집합 변경 방법을 이해한다.
뷰와 저장 프로시저 뷰의 개념을 이해한다. 뷰의 정의와 관리 방법을 이해한다. 뷰를 사용함으로써 생기는 장점을 알아본다.
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
5. T-SQL의 시스템 함수 시스템 제공 함수 시스템 제공 함수
18강. 데이터 베이스 - II JDBC 살펴보기 Statement객체 살펴보기 Lecturer Kim Myoung-Ho
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
MYSQL 설치 SQL언어 SQL언어의 활용 웹과 SQL언어와의 연동
KHS JDBC Programming 4 KHS
5장 Mysql 데이터베이스 한빛미디어(주).
10장. 예외처리.
KIM HEESANG PL/SQL 2 KIM HEESANG
자바 5.0 프로그래밍.
11장. 1차원 배열.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
You YoungSEok Oracle 설치 You YoungSEok
고급 T-SQL.
환경 설정 예제 데이터베이스 생성 - 그림 3.34의 SQL Server 관리 스튜디오 창의 왼쪽 영역의 데이터베
프로그래밍 개요
JDBC Lecture 004 By MINIO.
JSP 게시판 구현.
3장. SQL Server 2008 전체 운영 실습 및 DB와 프로그램의 연동
기초 SQL 문 SELECT 문과 같은 데이터베이스 조회 명령문을 이해한다.
테이블 만들기 실습 목표 입력할 tableDB <실습1> SSMS에서 테이블 생성
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
CHAP 21. 전화, SMS, 주소록.
23장. Trigger CREATE TRIGGER 구문 DROP TRIGGER 구문 트리거 사용하기
문성우 SQL 실습 Part Ⅰ 문성우.
Database Relational DML SQL.
SQL Server 2000 세미나 View, SP &Trigger
에어 PHP 입문.
10 데이터 조작어 데이터 조작어 데이터 입력 데이터 수정 데이터 삭제 MERGE 트랜잭션 관리 시퀀스.
10 데이터 조작어 데이터 조작어 데이터 입력 데이터 수정 데이터 삭제 MERGE 트랜잭션 관리 시퀀스.
제 18 장 (Oracle) 오라클에서 트랜잭션 지원
테이블 관리 테이블 생성,수정,삭제 데이터 입력 수정, 삭제 2010학년도 2학기.
14 뷰(View) 뷰의 개념 뷰 관리.
제 23 장 오라클에서 보안 기능.
Chapter 10 데이터 검색1.
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
요약과 집계 각종 요약과 집계 기법을 이해한다. 각종 집계 함수를 이해한다.
14 뷰(View) 뷰의 개념 뷰 관리.
 6장. SQL 쿼리.
11장. 보안과 권한 관리 보안 권한 관리. 11장. 보안과 권한 관리 보안 권한 관리.
6 객체.
교과서 78쪽 학습 목표 정보 관리의 필요성을 이해할 수 있다. 데이터베이스의 개념과 필요성을 이해할 수 있다.
Presentation transcript:

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

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

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

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

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

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

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' );

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 열 목록의 순서를 바꿔서 삽입: 값 목록은 열 목록과 일치

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

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

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

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 한 열만 지정

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

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

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 기본 값으로 지정

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

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

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

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 8 DEFAULT '서울시‘, 9 reg_date datetime NOT NULL 10 CONSTRAINT Default_CurrDate 11 DEFAULT GETDATE ( ), 12 CONSTRAINT XPKTableDft 13 PRIMARY KEY CLUSTERED (id ASC) 14 ); 15 GO 16 INSERT INTO TableDft (name, location) 17 VALUES ('홍길동', NULL );

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

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

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

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

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

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

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

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 값을 ‘부산시’로 변경

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

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 값을 기본 값으로 변경

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;

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를 더한 값으로 변경

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;

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

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

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

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;

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

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

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;

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

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

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

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;