[Oracle] CASE WHEN THEN


SELECT 로 가져오는 값에 대해서 조건을 걸어 값을 변환할 필요가 있는 경우 사용.


형식은 아래와 같다.


SELECT CASE

WHEN COLUMN1 > 90 THEN 'A'

WHEN COLUMN1 BETWEEN 80 AND 90 THEN 'B'

WHEN COLUMN1 BETWEEN 70 AND 80 THEN 'C'

ELSE 'D'

END SCORE

FROM ALLSCORE;


반드시 마지막에 END를 반드시 넣어줘야 한다.


IF ~ ELSE 와 같다고 생각하면 된다.


그럼 과거에 설명했던 DECODE를 CASE WHEN THEN으로 변경해보자.




SELECT NAME,

CASE SCORE

WHEN THEN 'E'

WHEN 2 THEN 'D'

WHEN 3 THEN 'C'

WHEN 4 THEN 'B'

WHEN 5 THEN 'A'

ELSE 'E'

END

FROM EXAMSCORE;


이렇게 점수별로 등급을 준다면 동일하겠다.




'IT Info > Oracle' 카테고리의 다른 글

[Oracle] Replace 함수 사용법  (0) 2019.12.11
[Oracle] 리스너(Listener)  (0) 2019.12.05
[Oracle] Decode  (0) 2019.12.02
[Oracle] Trigger  (0) 2019.12.02
[Oracle] 데이터 중복 제거 distinct, group by  (0) 2019.11.26

[Oracle] Decode


쉽게 말해 if else 구문을 select 절에서 사용할 수 있는 함수


SELECT DECODE(Column1, Value1, Result1, Value2, Result2, Result3) AS Result

FROM Table_Name;


Table의 Column1이 Value1과 같으면 Result1, Value2와 같으면 Result2, Value1, Value2 와 같지 않으면 Result3를 표시


Ex)

SELECT NAME, DECODE(SCORE, '1', 'E', '2', 'D', '3', 'C', '4', 'B', '5', 'A') AS SCORE

FROM EXAMSCORE; 



'IT Info > Oracle' 카테고리의 다른 글

[Oracle] 리스너(Listener)  (0) 2019.12.05
[Oracle] CASE WHEN THEN  (0) 2019.12.05
[Oracle] Trigger  (0) 2019.12.02
[Oracle] 데이터 중복 제거 distinct, group by  (0) 2019.11.26
[Oracle] MERGE INTO  (0) 2019.11.20

[Oracle] Trigger


테이블에 어떤 이벤트가 발생 시, 기록을 남길 수 있는 명령어.


commit, rollback을 수행할 수 없다.


CREATE OR REPLACE TRIGGER Trigger_Name 


timming[ BEFORE | AFTER ] event [ INSERT | UPDATE | DELETE ]


ON Table_Name


Begin

실행명령;

End;





'IT Info > Oracle' 카테고리의 다른 글

[Oracle] CASE WHEN THEN  (0) 2019.12.05
[Oracle] Decode  (0) 2019.12.02
[Oracle] 데이터 중복 제거 distinct, group by  (0) 2019.11.26
[Oracle] MERGE INTO  (0) 2019.11.20
[Oracle] INSERT, UPDATE, DELETE  (0) 2019.11.20


[Oracle] 데이터 중복 제거 distinct, group by


데이터 중복에 대해서 제거하는 방법으로 2가지가 존재한다.



DISTINCT


SELECT DISTINCT COLUMN1, COLUMN2

FROM TABLE_NAME


장점 : 사용법이 간편함

단점 : TEMP TABLESPACE에 임시로 저장하고 작업하는 방식으로 시스템에 부하를 줄 수 있음



GROUP BY 


SELECT A.COLUMN1, A.COLUMN2

FROM TABLE_NAME A

GROUP BY A.COLUMN1, A.COLUMN2


장점 : DISTINCT에 비해 속도가 빠르고 시스템 부하를 덜 줌

단점 : 사용법이 조금 복잡함.



중복 데이터가 어떤 것이지 찾고자 하는 경우


SELECT COUNT(*), A.COLUMN1

WHERE TABLE_NAME A

GROUP BY A.COLUMN1

HAVING COUNT(*) > 1




'IT Info > Oracle' 카테고리의 다른 글

[Oracle] Decode  (0) 2019.12.02
[Oracle] Trigger  (0) 2019.12.02
[Oracle] MERGE INTO  (0) 2019.11.20
[Oracle] INSERT, UPDATE, DELETE  (0) 2019.11.20
[Oracle] View Table  (0) 2019.11.16

[Oracle] MERGE INTO


이미 존재하면 데이터를 UPDATE 하고, 없는 경우는 INSERT를 해야하는 경우가 발생한다. 특히 Migration 작업을 할 때..

그런 경우 MERGE INTO를 사용하면 편하다.


MERGE INTO Table_Name A

USING Table || View || SubQuery B

ON ( A = B ) -- Key값으로 반드시 조인

WHEN MATCHED THEN INSERT || UPDATE || DELETE

WHEN NOT MATCHED THEN INSERT || UPDATE || DELETE






'IT Info > Oracle' 카테고리의 다른 글

[Oracle] Trigger  (0) 2019.12.02
[Oracle] 데이터 중복 제거 distinct, group by  (0) 2019.11.26
[Oracle] INSERT, UPDATE, DELETE  (0) 2019.11.20
[Oracle] View Table  (0) 2019.11.16
[Oracle] ORA-00904 : invalid identifier  (0) 2019.11.14

[Oracle] INSERT, UPDATE, DELETE


INSERT : TABLE ROW 추가


INSERT INTO Table_name(column1, column2,...) VALUES(value1, value2,...);


Ex)

INSERT INTO USERINFO(NAME, ADDRESS) VALUES('홍길동', '제주도 한라산');



UPDATE : TABLE ROW 수정


UPDATE Table_name SET column1 = value1, column2 = value2 WHERE 조건;


Ex)

UPDATE USERINFO SET ADDRESS = '강원도 설악산' WHERE NAME = '홍길동';



DELETE : TABLE ROW 삭제


DELETE FROM Table_name WHERE 조건;


Ex)

DELETE FROM USERINFO WHERE NAME = '홍길동' AND ADDRESS = '강원도 설악산';



'IT Info > Oracle' 카테고리의 다른 글

[Oracle] 데이터 중복 제거 distinct, group by  (0) 2019.11.26
[Oracle] MERGE INTO  (0) 2019.11.20
[Oracle] View Table  (0) 2019.11.16
[Oracle] ORA-00904 : invalid identifier  (0) 2019.11.14
[Oracle] Delete 데이터 복구  (0) 2019.11.13

[Oracle] View Table


View 


물리적인 테이블에 근거한 논리적인 가상  테이블? 말이 어렵다..


업무적으로 봤을 때, 다른 계정에서 직접 물리적인 테이블을 조회하면 보안상에 문제(테이블을 그대로 제공하면 테이블의 모든 데이터를 볼 수 있기 때문


에)가 발생할 수 있으므로, 필요한 정보만을 제공할 수 있도록 가상의 테이블을 사용한다고 보면 된다.(개인적인 의견입니다....)


View 테이블을 제공하게 되면 제공하고자 하는 정보만 타시스템에서 볼 수 있기 때문에, 타시스템에서 정보가 더 필요하다고 하면 View에 제공할 컬럼을 


추가해줘야되니, 처음 협의할 때, 필요한 정보를 명확하게 받아두는 것이 번거롭지 않다.



View Table 생성


CREATE OR REPLACE VIEW View_Name AS

[SELECT 문];


**REPLACE : 이미 생성된 VIEW에 수정사항이 발생하는 경우, REPLACE를 사용하면 같은 이름의 VIEW 테이블을 업데이트 한다.



예를 들자면 아래와 같다.


CREATE OR REPLACE VIEW INSA_VIEW AS

SELECT A.NAME, A.TELNO, B.HOMEADRESS

FROM USERINFO A, ADDRESSINFO B

WHERE A.USER_ID = B.USERLINK_ID;




생성하게 되면, 아래와 같이 SELECT 문으로 조회하면 조회가 된다.


SELECT * FROM INSA_VIEW;



단, 다른 계정에서 조회를 하기 위해서는 권한을 부여해주어야 한다.


GRANT SELECT ON VIEW TO USER명;



'IT Info > Oracle' 카테고리의 다른 글

[Oracle] MERGE INTO  (0) 2019.11.20
[Oracle] INSERT, UPDATE, DELETE  (0) 2019.11.20
[Oracle] ORA-00904 : invalid identifier  (0) 2019.11.14
[Oracle] Delete 데이터 복구  (0) 2019.11.13
[Oracle] Single Quotation(홀따옴표) ' Insert  (0) 2019.11.12

[Oracle] ORA-00904 : invalid identifier


어떻게 보면 아주 간단한 에러이지만, 가장 자주 볼 수 있는 에러(꼼꼼한 성격이 못된다면....)


부적합한 식별자를 입력하여 Error가 발생했다는 의미로, 컬럼 명 또는 테이블 명을 제대로 입력하였는지 확인이 필요하다.



+ Recent posts