본문 바로가기

Database

[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.. 더보기
[DB] 패턴 연산자 패턴 연산자는 문자열을 포함하는 검색을 할 때 사용하는데like '패턴' 의 형태입니다.이 때 패턴에는 '%'를 넣는데 뭐가 들어갈지 모른다는 뜻입니다.%가 들어가는 경우는 총 3가지가 있을 수 있는데요. like   '%ㅋ'    : ㅋ로 끝나는 것like   'ㅋ%'    : ㅋ로 시작하는 것like  '%ㅋ%'  : ㅋ가 포함 그럼 like 대신 ( ='ㅋ%') 는 안될까요?    => 등호를 써서 식을 표현하면 패턴으로 인식하는 것이 아니라'ㅋ%' 문자 그대로 인식해버립니다. 예시로 하나 만들어보겠습니다. 크라운 과자거나, 몽쉘~인거 이름, 제조사, 가격 조회SELECT SNACK_NAME||SNACK_COMPANY||SNACK_PRICE FROM DEC26_SNACKWHERE SNACK_COMP.. 더보기