본문 바로가기

Database

[DB] 계층형 쿼리 계층형 쿼리란테이블에 계층형 데이터가 존재하는 경우 이것을 조회하기 위한 쿼리를 말합니다. 계층형 데이터란, 동일 테이블에 계층적으로상위데이터와 하위데이터가 포함된 데이터입니다. 하드웨어를 예로 들면,중앙처리장치, 기억장치, 입출력장치의 상위데이터는 하드웨어입니다.입출력장치를 나눠서 입력장치, 출력장치의 상위데이터가 입출력장치입니다. CREATE TABLE JAN03_DEVICE(D_NAME VARCHAR2(10 CHAR) PRIMARY KEY,D_PRIOR VARCHAR2(10 CHAR)); INSERT INTO JAN03_DEVICE VALUES('하드웨어', NULL);INSERT INTO JAN03_DEVICE VALUES('중앙처리장치', '하드웨어');INSERT INTO JAN03_DEVIC.. 더보기
[DB] JOIN 연산의 종류 JOIN에도 여러가지 종류가 있는데요.먼저 CROSS JOIN부터 살펴보겠습니다.CROSS JOIN은 별도의 조건 없이 두 테이블 간의 가능한 모든 결과를 조회(모든 경우의 수)합니다. SELECT * FROM TB1, TB2;SELECT * FROM TB1 CROSS JOIN TB2; 두 SELECT문의 출력값이 같은데요.필요없는 데이터도 출력되기 때문에 잘 쓰이지는 않습니다. 다음으로 살펴볼 INNER JOIN은 조건에 해당하는 값만 나옵니다. SELECT * FROM TB1 INNER JOIN TB2 ON TB1.NAME = TB2.NAME; SELECT * FROM TB1 A, TB2 B WHERE A.NAME = B.NAME;SELECT * FROM TB1 JOIN TB2 USING (NAME).. 더보기
[DB] View 메뉴 데이터의 갯수를 나눠서 페이지별로 보여주고 싶을 때는 어떻게 할까요? SELECT COUNT(*) FROM RESTAURANT_MENU;  RESTAURANT_MENU  테이블에는 고유번호인 R_NO가 있고 (PRIMARY KEY)SEQUENCE로 처리한 상태입니다.R_NO로 처리하려고 보니까SEQUENCE는 INSERT에 실패해도 올라간다는 단점이 있습니다.메뉴 데이터는 삭제가 될 수도 있기 때문에R_NO가 정확히 1,2,3,4, ... 가 아닙니다.그럼 어떤 방법이 있을까요..? ROWNUM(가상필드)이라는 것을 사용하면 됩니다.SELECT할 때마다 자동으로 부여되는 숫자값을 ROWNUM이라고 하는데요.ROWNUM은 3가지 특징이 있습니다.* (전체조회)랑은 같이 사용할 수 없습니다.ORDER .. 더보기
[DB] Join Join은 참가하다 합치다 라는 뜻을 가진 단어입니다.그렇다면 테이블 여러개를 'JOIN' 시킨다는 어떤 의미일까요?테이블 여러개를 붙여서 RAM에 잠깐 넣어놓는 형태를 말합니다. SELECT * FROM HONGKONG, CEO; 지금처럼 2개의 테이블을 붙여서 JOIN 형태로 사용이 가능하지만,테이블들이 합쳐지면서 나타낼 수 있는 모든 값들을 나타내기 때문에진짜 데이터들을 뽑아와야 합니다.이때는 조건식을 사용해야 하는데요. SELECT * FROM HONGKONG, CEO WHERE H_NO = C_NO; 다음과 같이 조건을 붙여서가상의 데이터를 제거할 수 있습니다. 더보기
[DB] 서브쿼리 서브쿼리 (SubQuery)는 select문 안에 다시 select문을 사용하는 기술입니다.하나의 SQL문 안에 다른 SQL문이 중첩된 질의문을 의미하는데요.다른 테이블에서 가져온 데이터로 현재 테이블에 있는 정보를찾거나 가공할 때 사용합니다.보통 데이터가 대량일 때 데이터를 모두 합쳐서 연산하는 JOIN보다필요한 데이터만 찾아서 공급해주는 Subquery가 성능이 더 좋습니다.쿼리는 주질의(main query, 외부질의)와 부속질의(subquery, 내부질의)로 구성됩니다. 예제를 하나 살펴보겠습니다. select s_name, s_pricefrom dec26_snackwhere s_price (select avg(s_price)from dec26_snack); 평균가보다 가격이 낮은 과자의 이름과 .. 더보기
[DB] 집합연산자 집합연산자는 합집합, 교집합, 차집합 등의 집합 기능을수행하는 연산자입니다.먼저 합집합부터 살펴보겠습니다.                   UNION : 중복되는 값을 제외하고 출력 SELECT 1 ID, '수학' SUBJECT, 90 SCORE FROM DUALUNIONSELECT 1 ID, '수학' SUBJECT, 90 SCORE FROM DUALUNIONSELECT 1 ID, '수학' SUBJECT, 90 SCORE FROM DUAL; 이렇게 중복되는 값을 조회하면한 번만 나오게됩니다.  UNION ALL : 중복되더라도 모두 출력 SELECT 1 ID, '수학' SUBJECT, 90 SCORE FROM DUALUNION ALLSELECT 1 ID, '수학' SUBJECT, 90 SCORE FROM.. 더보기