오라클 sql과 pl/sql을 다루는 기술 - 3장.sql 문장

20
The Technique of Java Programming

Upload: chariehong

Post on 14-Aug-2015

107 views

Category:

Software


9 download

TRANSCRIPT

Page 1: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

The Technique of Java Programming

Page 2: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

들어가기

이 자료는 교육 등 비영리 목적으로만 사용해야 합니다 !!!!

Page 3: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

만든사람 및 책 소개

• 오라클 SQL과 PL/SQL을 다루는 기술 : 오라클 프로그래밍 , 현장 밀착 입문서는 따로 있다 !

• 홍형경

• 주요 저서 : - 〈뇌를 자극하는 오라클 프로그래밍 SQL&PL/SQL

- Head First 시리즈를 비롯해 다수의 책 번역

Page 4: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

SQL 문장 살펴보기첫째 마당 오라클 프로그래밍의 시작 , SQL

3 장

Page 5: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

01 SELECT

INSERT

UPDATE

MERGE

DELETE

02

03

SQL 문장 살펴보기

04

06

07

08

COMMIT, ROLLBACK, TRUNCATE

의사컬럼

연산자

표현식

조건식

0509

10

Page 6: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

01

구문

SELECT * 혹은 컬럼FROM [ 스키마 .] 테이블명 혹은 [ 스키마 .] 뷰명WHERE 조건ORDER BY 컬럼 ;

테이블이나 뷰에 있는 데이터를 선택 ( 조회 ) 할 때 사용

SELECT 문

● SELECT : 선택하고자 하는 컬럼명 , 모든 컬럼을 조회하고 싶다면 *

● FROM : 선택할 테이블이나 뷰 명

● WHERE : 선택 조건 , 여러 조건 기술 시에는 AND, OR 로 연결

● ORDER BY : 조회 데이터 정렬 시 , 정렬하고자 하는 컬럼명 기술

Page 7: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

02

구문

INSERT INTO [ 스키마 .] 테이블명 ( 컬럼 1, 컬럼 2, …)VALUES ( 값 1, 값 2, …);

새로 데이터를 입력해 넣을 때 사용하는 문장

INSERT 문

기본형태

● 테이블명 다음 컬럼 순서 , 타입이 VALUES 다음 괄호 안의 값 순서와 타입이 일치해야 함

Page 8: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

02

구문

INSERT INTO [ 스키마 .] 테이블명 VALUES ( 값 1, 값 2, …);

INSERT 문

컬럼명 기술 생략

● 테이블명 다음에 컬럼을 명시하지 않았으므로 테이블에 있는 모든 컬럼에 값을 넣는다는 의미

● VALUES 다음 값은 테이블에 있는 모든 컬럼 순서에 맞춰 넣어야 한다

● 컬럼 순서는 테이블 생성 시 명시한 컬럼 순서

Page 9: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

02

구문

INSERT INTO [ 스키마 .] 테이블명 ( 컬럼 1, 컬럼 2, …)SELECT 문 ;

INSERT 문

INSERT ~ SELECT 형태

● VALUES 절과 함께 값을 일일이 명시하는 대신 SELECT 문을 사용

● 테이블명 다음 컬럼 순서와 SELECT 다음의 컬럼 순서 , 타입이 맞아야 함

● 테이블명 다음 컬럼 리스트를 생략할 경우 이 테이블의 모든 컬럼에 값을 넣는다는 의미

Page 10: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

03

구문

UPDATE [ 스키마 .] 테이블명 SET 컬럼 1 = 변경값 1, 컬럼 2 = 변경값 2,….WHERE 조건 ;

테이블에 있는 기존 데이터를 수정하는 문장

UPDATE 문

● SET : 변경하고자 하는 컬럼과 그 값을 명시 , 여러 컬럼을 갱신할 때는 콤마로 분리

● WHERE : 데이터를 갱신하는 조건 , 이 조건에 맞는 데이터만 변경됨 . WHERE 조건을 생략하면 테이블에 있는 모든 데이터가 변경된다 .

Page 11: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

04

구문

MERGE INTO [ 스키마 .] 테이블명 USING ( update 나 insert 될 데이터 원천 ) ON ( update 될 조건 )

WHEN MATCHED THEN SET 컬럼 1 = 값 1, 컬럼 2 = 값 2, …WHERE update 조건 DELETE WHERE update_delete 조건

WHEN NOT MATCHED THEN INSERT ( 컬럼 1, 컬럼 2, …) VALUES ( 값 1, 값 2,…) WHERE insert 조건 ;

조건을 비교해 조건에 맞는 데이터가 없으면 INSERT, 있으면 UPDATE 를 수행하는 문장

MERGE 문

Page 12: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

04

MERGE 문

● MERGE INTO : update 나 insert 할 대상 테이블을 명시

● USING : 보통 다른 테이블이나 서브쿼리 형태로 변경할 데이터가 온다 .

● ON : 변경 대상 테이블과 USING 절에 명시한 테이블이나 서브쿼리와의 조인조건 , 이 조건에 맞는 데이터만 UPDATE 된다 .

● WHEN MATCHED THEN SET ~ : update 할 컬럼과 값 명시

● WHERE update 조건 : 추가적으로 update 될 조건을 명시 , 생략 가능

● DELETE WHERE update_delete 조건 : UPDATE 될 값을 평가해서 조건에 맞는 데이터를 삭제

● WHEN NOT MATCHED THEN ~ : ON 절에 명시한 조건에 일치하지 않을 경우 , INSERT 할 컬럼과 값 명시

Page 13: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

05

구문

① 일반 구문DELETE [FROM] [ 스키마 .] 테이블명 WHERE delete 조건 ; ② 특정 파티션만 삭제할 경우의 구문DELETE [FROM] [ 스키마 .] 테이블명 PARTITION ( 파티션명 )WHERE delete 조건 ;

테이블에 있는 데이터를 삭제하는 문장

DELETE 문

Page 14: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

06

변경한 데이터를 데이터베이스에 최종적으로 반영

COMMIT, ROLLBACK, TRUNCATE

COMMIT

ROLLBACK

변경한 데이터를 변경 전 상태로 되돌림

구문

COMMIT [WORK] [TO SAVEPOINT 세이브포인트명 ] ;

구문

ROLLBACK [WORK] [TO SAVEPOINT 세이브포인트명 ] ;

Page 15: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

06

DELETE 처럼 테이블 데이터를 삭제

COMMIT, ROLLBACK, TRUNCATE

TRUNCATE

구문

TRUNCATE TABLE [ 스키마명 .] 테이블명 ;

실행 시 영구적으로 데이터가 삭제되는 DDL 문으로 WHERE 조건은 붙을 수 없다 .

Page 16: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

07

CONNECT_BY_ISCYCLE, CONNECT_BY_ISLEAF, LEVEL

계층형 쿼리에서 사용하는 의사컬럼

테이블의 컬럼처럼 동작하지만 실제로 테이블에 저장되지는 않는 컬럼

의사컬럼

NEXTVAL, CURRVAL

시퀀스에서 사용하는 의사컬럼

ROWNUM,ROWID

ROWNM 은 쿼리에서 반환되는 각 로우에 대한 순서값

ROWID 는 테이블에 저장된 각 로우가 저장된 주소값

Page 17: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

08

수식연산자 : +, -, *, /

연산자

문자연산자 : ||

논리연산자 : >, <, >=, <=, =, <>, !=, ^=

집합연산자 : UNION, UNION ALL, INTERSECT, MINUS

계층형 쿼리 연산자 : PRIOR, CONNECT_BY_ROOT

Page 18: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

09

한 개 이상의 값과 연산자 그리고 SQL 함수 등이 결합된 식

표현식

CASE 표현식

구문

CASE WHEN 조건 1 THEN 값 1 WHEN 조건 2 THEN 값 2 … ELSE 기타값END

Page 19: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

10

조건 혹은 조건식 (Condition) 은 한 개 이상의 표현식과 논리 연산자가 결합된 식

조건식

비교 조건식

논리 연산자나 ANY, SOME, ALL 키워드로 비교하는 조건식

TRUE, FALSE, UNKNOWN 3 가지 타입을 반환

논리 조건식

AND, OR, NOT 을 사용하는 조건식

NULL 조건식

특정 값이 NULL 인지 여부를 체크하는 조건식

IS NULL, IS NOT NULL

Page 20: 오라클 SQL과 PL/SQL을 다루는 기술 - 3장.SQL 문장

10

조건식

BETWEEN AND 조건식

범위에 해당되는 값을 찾을 때 사용

IN 조건식

조건절에 명시한 값이 포함된 건을 반환 , ANY 와 비슷

EXISTS 조건식

IN 과 비슷하지만 후행 조건절로 값의 리스트가 아닌 서브쿼리만 올 수 있다

또한 서브쿼리 내에서 조인조건이 있어야 한다