본문 바로가기

SQL

[SQL] 오라클의 if then else 표현 decode, case when 문장 Oracle DBMS에서 SQL문을 만들때 프로그램에서처럼 if then else 문을 사용할 수 있습니다. 두가지 방법이 있는데, decode 와 case when 문장입니다. decode(컬럼, 값1, 리턴1, 값2, 리턴2, 리턴3); -- decode 문 안에서 decode 문 중첩해서 사용 가능. -- 해석: "컬럼=값1" 인 경우 리턴1, "컬럼=값2" 인 경우 리턴2, 나머지는 리턴3 decode 문은 equal(=) 조건에 해당하는 형태로 사용합니다. 좀더 if then else 문처럼 다양한 표현식을 쓰고자 하는 경우에는 case when 문이 더 적합합니다. 1) case 컬럼/식 when 값1 then 리턴1 when 값2 then 리턴2 else 리턴3 end 2) case when.. 더보기
Oracle 에서 connect by 구문으로 테스트데이터(샘플테이블) 만들기 오라클에서 특정 기능을 테스트하거나 성능측정 등을 하기 위해서 데이터를 갑자기 크게 많이 만들고 싶은 경우가 있습니다. 이때 주로 많이들 사용하는 방법이 자기복제 입니다. 테이블을 먼저 만들고, 데이터를 몇개 집어넣고, SQL> Insert into TTT1 select * from TTT1; 과 같은 자기복제 구문을 n 번 실행시키는 거죠... 그러면 테이블이 매우 빠르게 커지죠~ 물론 테이블에 데이터 중복이 너무 많다는 단점이 있습니다. 같은 데이터가 계속 반복되니까... 그래서 이번에는 connect by 문과 level 키워드를 사용해서 데이터를 만들어 보겠습니다. 먼저, 아래와 같이 간단히 connect by level 문장이 수행되는 것을 확인해봅니다. level 더보기
Oracle Connect by 구문, Start with 구문 예제 다른 DB를 써보면 오라클이 얼마나 기능이 많은 지를 다시 한번 느끼게 될 때가 있습니다. 유용하게 사용해오던 Connect by 구문도 다른 DB에서 사용하려고 하면 없어서 고생하는 경우가 있네요. connect by 구문은 계층적인 관계를 이용해서 데이터를 조회할 때 사용하는 구문입니다. 조회할 때 사용하기 때문에 당연히 select SQL 쿼리에서 사용합니다. scott 유저에 있는 EMP 테이블 데이터를 가지고 체크해보겠습니다. EMP 테이블에서 보면 EMPNO 와 MGR 값에 계층적인 관계(Hierarchical Relation)가 있는 것을 확인할 수 있습니다. EMPNO 가 7839 번인 KING 은 'PRESIDENT' 회장님이기 때문에 MGR 가 없네요. 나머지 사원들은 모두 MGR 가 .. 더보기