목록DB (4)
모르면 배우면 된다
ROWNUM을 업무에서 쓰다가 개념 정리해봄. EX) SELECT * FROM TABLE WHERE ROWNUM = 1; 1. ROWNUM은 언제 할당되는가? SELECT 문에서 WHERE 절로 인해 ROW가 하나하나 필터링될 때마다 NUMBER가 한 개씩 붙는다. 즉 WHERE 절에 의해 첫 번쨰 행이 반환되면 1, 두 번째 행이 반환되면 2가 붙는다. SQL 실행 순서에 따라, ORDER BY는 SELECT 마지막에 실행되기 때문에, ROWNUM을 붙인 다음에 ORDER BY를 실행한다. 같은 쿼리 안에서 ROWNUM과 ORDER BY를 쓰는 것은 통상적으로 적절하지 않다. 왜냐하면, 보통 정렬한 후에 ROWNUM을 붙이고 싶기 때문에. 2. 그렇다면 어떻게 사용하는 것이 적절한가? SELECT RO..
ALIAS SELECT에서 사용. 열의 별칭을 지정. HAVING, WHERE 절에서 ALIAS 사용 불가. ALIAS는 맨 마지막에 붙여지므로, 조건 구문들이 ALIAS를 인식할 수 없음 SELECT AGE AS PP_AGE FROM PEOPLE WHERE PP_AGE > 100; -> UNKNOWN 에러 뜸 SELECT AGE AS PP_AGE FROM PEOPLE WHRER AGE >10; -> 정상 PEOPLE 회원명단 ID NAME 1 ANN 2 EMILY 3 JOSH PARTY 파티 참석자 ID NAME 1 EMILY 2 BILL 3 MJ INNER JOIN 테이블 A와 테이블 B가 모두가 가진 공통 데이터를 뽑아냄. A∩B 공통 데이터의 모든 열을 SELECT 하기 때문에, 중복된 열이 나타..

여러 테이블에서 가져온 데이터를 한 ROW로 묶으려면 어떻게 해야 할까? 오늘 분석한 쿼리를 정리해보자. 물론 각색한 버전이라 정확한 예시는 아님. 해당 쿼리 미션 : 센터별 업무 처리 건수를 조회해오기. 업무 현황은 처리 / 미처리로 나뉜다. 문제 1) 처리 / 미처리는 각각 참조하는 테이블이 다르며 조건도 다르다. 2) 특정 날짜에 처리 / 미처리된 건수를 센터별로 조회해와야 한다. 즉 '센터' 컬럼을 기준으로 SUM이 필요함. 3) '센터' 컬럼 기준으로 그룹화해 처리/ 미처리를 한번에 보여줘야 한다. 센터는 총 n00개... 이 쿼리는 이런 식으로 문제를 해결했다. 1) 처리 / 미처리 각각 SELECT문을 만든다. 이때, WHERE 절에 검색 날짜 조건을 넣고, '센터'를 기준으로 GROUP B..
@@수정필요 select 1 from table 1이나 'X'로 처리를 해주는데 이유는 진짜 값을 가져오려는 게 아니라, 있는지 없는지만 체크해오려고 하는 거기 때문에 상수값을 넣어준다 교집합, 차집합을 나타낼 때 써주면 좋다. 한 로우씩 체크를 함 select * from 무한도전; select * from 런닝맨; SELECT * FROM 런닝맨 A WHERE EXISTS(select 1 from 무한도전 B WHERE A.NAME= B.NAME) 1. 먼저 FROM 런닝맨이 실행 2. WHERE EXISTS 가 실행되면서 한 로우씩 체크. 무한도전 테이블과 런닝맨 테이블에 같은 NAME이 있으면 TRUE 반환하여, 해당 로우가 나타남. 만약 NAME이 같지 않으면, FALSE 반환하면서 해당 ROW..