본문 바로가기
728x90
반응형

DB/SQL28

[Oracle] 오라클 계층형 쿼리(START WITH.. CONNECT BY) 계층형 쿼리란? 계층형 구조는 상하 수직관계의 트리형태의 구조로 이루어진 형태를 말합니다. 예를 들자면 특정회사의 부서, 특정학교의 학과등이 있습니다. 계층형 쿼리는 테이블에 저장된 데이터를 계층형 구조로 반환하는 쿼리를 말합니다. 오라클에서의 계층형 쿼리는 START WITH ... CONNECT BY 절로 생성할 수 있으며 계층형 정보를 표현하기 위한 목적으로 오라클 8부터 지원되었습니다. 수행순서 1. START WITH 절에 시작 조건을 찾습니다. 2. CONNECT BY 절에 연결조건을 찾습니다. 샘플데이터 생성 위와같은 구조를 이루도록 부서 테이블을 생성하도록 하겠습니다. CREATE TABLE DEP ( DEP_CD NUMBER NOT NULL, -- 부서코드 PARENT_CD NUMBER,.. 2021. 3. 16.
오라클 ORDER BY 1 2 3 개념 및 예제 오라클에서 ORDER BY 1, 2, 3 이런 내용을 본 적이 있었을 텐데 뭔 말인고 하면 테이블의 1,2,3번째 컬럼 기준으로 정렬하겠다는 말이다 즉 ORDER BY 1 DESC는 첫번째 열 기준으로 내림차순 정렬이라는 말이다 컬럼 번호를 이용해 정렬하는 방식은 겉보기에는 그럴싸하지만 컬럼 숫자만으로는 어느 컬럼을 지정한 건지 알아보기 어렵고 컬럼을 추가, 삭제하는 등 변경했을 경우 ORDER BY가 꼬일 수 있기 때문에 컬럼명을 기준으로 ORDER BY를 거는 것을 권장한다 마지막으로 예제에 사용한 코드는 아래와 같다 SELECT * FROM SCOTT.EMP ORDER BY 1, 2, 3 -- 1,2,3번째 컬럼 순으로 오름차순 정렬 -- ORDER BY EMPNO, ENAME, JOB과 동일 SE.. 2021. 3. 16.
[Oracle] 오라클 EXISTS, NOT EXISTS 사용법 정리 (IN, JOIN 비교) 오라클에서 EXISTS( ) 함수를 처음 접하면 조금 어려움 느낌이 들 수도 있다. EXISTS를 사용하지 않아도 비슷한 결과를 만들 수 있는 기능이 많기 때문에, EXISTS에 대해 자세히 익히지 않고 넘어가는 경우가 많다. EXISTS(서브 쿼리)는 서브 쿼리의 결과가 "한 건이라도 존재하면" TRUE 없으면 FALSE를 리턴한다. EXISTS는 서브 쿼리에 일치하는 결과가 한 건이라도 있으면 쿼리를 더 이상 수행하지 않는다. 아래의 샘플 테이블을 참고하여 예제 쿼리를 보면 쉽게 이해할 수 있을 것이다. SELECT a.empno , a.ename , a.deptno FROM emp a WHERE a.job = 'MANAGER' AND EXISTS (SELECT 1 FROM dept_history a.. 2021. 3. 16.
ANSI SQL이란? /LEFT OUTER JOIN/ RIGHT OUTER JOIN/FULL OUTER JOIN ANSI SQL DBMS(Oracle, My-SQL, DB2 등등)들에서 각기 다른 SQL를 사용하므로, 미국 표준 협회(American National Standards Institute)에서 이를 표준화하여 표준 SQL문을 정립 시켜 놓은 것이다. ANSI SQL 특징 표준 SQL문이기 때문에 DBMS의 종류에 제약을 받지 않는다. (MySQL, Oracle..) 즉, 특정 벤더에 종속적이지 않아 다른 벤더의 DBMS로 교체하더라도 빠르게 다른 벤더사를 이동할 수 있다. 특정 DBMS의 이탈이 가속되는 것도 ANSI SQL의 영향이 크다고 할 수 있다. 테이블간의 Join 관계가 FROM 에서 명시되기 때문에 WHERE 문에서 조건만 확인하면 된다. 즉, 가독성이 일반 Query문보다 좋다. ANSI.. 2021. 3. 16.
[Oracle] 조인 (JOIN), 아우터 조인(Outer Join) 조인 (JOIN) - JOIN은 각 테이블간에 공통된 걸럼(조건)으로 데이터를 합쳐 표현하는 것이다. - JOIN에는 크게 INNER JOIN, OUTER JOIN이 있다. ▶ 예제 테이블을 통해 이해해보자. TABLE 1) MEM : 회원테이블 (회원번호, 이름, 이메일, 부서번호) TABLE 2) DEPART : 부서테이블 (부서번호, 부서명) ▶ 1. SELECT FROM을 이용한 조인 1.1) 회원 테이블과 부서 테이블의 조인 => DEPART_ID가 공통 컬럼 => MEM테이블의 DEPART_ID와 DEPART테이블의 DEPART_ID를 연결하여 준다. ex) SELECT MEM.MEM_ID, MEM.NAME, MEM.DEPART_ID, DEPART.DEPART_NAME FROM MEM , DE.. 2021. 3. 16.
[ORACLE] 오라클 테이블 컬럼 추가/수정/삭제/이름 변경 하는 방법(ALTER 테이블 ADD/MODIFY/DROP/RENAME) 1. 테이블 컬럼 추가하기(ALTER TABLE ADD) [문법] ALTER TABLE 테이블명 ADD(컬럼명 데이타타입(사이즈)); ( EX ) USER라는 테이블에 USER_NAME이라는 컬럼을 VARCHAR2(13) 타입으로 추가할 때 -> ALTER TABLE USER ADD(USER_NAME VARCHAR2(13)); 2. 테이블 컬럼 수정하기(ALTER TABLE MODIFY) [문법] ALTER TABLE 테이블명 MODIFY(컬럼명 테이타타입(사이즈)); ( EX ) USER라는 테이블에 USER_AGE 라는 컬럼을 NUMBER(3) 타입으로 수정할 때 -> ALTER TABLE USER MODIFY(USER_AGE NUMBER(3)); 3. 테이블 컬럼 삭제하기(ALTER TABLE DR.. 2021. 3. 16.
JOIN이란? -JOIN이란? 두 개 이상의 테이블들을 연결하여 데이터를 검색하는 것을 JOIN 이라고 합니다. JOIN 시 사용되는 JOIN 연산자에 따라서 EQUI JOIN과 NON EQUI JOIN 으로 구별되며, FROM 절의 JOIN 형태에 따라서 INNER JOIN과 OUTER JOIN 으로 구별합니다. -JOIN 조건으로 사용되는 연산자에 따른 분류 JOIN 설명 EQUI JOIN 두 테이블 간의 칼럼 값들이 서로 일치하는 경우 JOIN 조건으로 '=' 연산자를 사용 NON EQUI JOIN 두 테이블 간의 칼럼 값들이 서로 일치하지 않는 경우 JOIN 조건으로 'BETWEEN ~ AND' 등의 범위 비교 연산자를 사용 -FROM 절의 JOIN 형태에 따른 분류 JOIN 설명 INNER JOIN JOIN .. 2021. 3. 16.
[SQL Server] SELECT TOP 1. SELECT ... TOP(N) 상위 N개의 결과만 보고 싶을 때 SELECT ... TOP(N) 구문을 사용한다. -- 가장 키가 큰 3명만 출력해 보자 -- TOP 3으로 해도 되지만, 가급적 TOP(3)으로 사용하자 SELECT TOP(3) Name, BirthYear, Height FROM UserTable ORDER BY Height DESC TOP(N)은 이전 버전의 SQL Server와의 호환성을 위해 TOP N 형식으로 사용해도 되나, 되도록 TOP(N) 형식을 권장한다. TOP(N) 구문은 원하는 상위 N개의 결과를 보는 것도 중요하지만, SQLServer의 부하를 많이 줄이는 방법이라는 점에서 의미가 있다. SQLServer 2005 부터는 TOP(N) 구문이 변수, 수식 및 하위.. 2021. 3. 16.
[ORACLE] CASE WHEN ~ THEN ~ ELSE END 이번엔 JAVA 의 IF ~ ELSE 문과도 같은 CASE WHEN 문에 대해서 알아 봅시다. CASE ~ WHEN ~ THEN ~ ELSE ~ END [형식] CASE 컬럼명 | 표현식 WHEN 조건식1 THEN 결과1 WHEN 조건식2 THEN 결과2 ....... WHEN 조건식n THEN 결과n ELSE 결과 END 조건문과 조건문 사이에는 콤마(,) 를 사용하지 않는다. CASE 문은 반드시 END 로 끝내야 한다. CASE 표현식은 ANSI SQL 형식도 지원한다. 결과 부분은 NULL 을 사용해서는 안된다. case when x = y then a else b end : 조건 x =y 가 true 일 경우 a 이고 그렇지 않으면 b case when x < y then a when x = y.. 2021. 3. 16.
728x90
반응형