목록문송한 회사생활/SQL 공부 (66)
최보름달

STANDARD SQL 벤더별로 기능이 다른 것을 표준을 제정하여 기준으로 삼고 있다. ANSI/ISO 표준 SQL 기능은 다음 내용을 포함한다. SRANDARD JOIN 기능 추가 (CROSS, OUTER JOIN 등 새로운 FROM절 JOIN 기능 들) SCALAR SUBQUERY, TOP-N QUERY 등 새로운 SUBQUERY 기능들 ROLLUP, CUBE, GROUPING SETS 등 새로운 리포팅 기능 WINDOW FUNCTION 같은 새로운 분석 기능들 일반 집합 연산자 현재 사용하는 SQL의 많은 기능은 관계형 데이터베이스 이론을 수립한 E.F Codd박사의 논문에 언급이 되어 있다. 당시 논문에 기재된 집합 연산자를 현재 SQL과 비교하면 다음과 같디ㅏ. 일반 집합 연산자 -> 현재 SQ..
JOIN 두 개 이상의 테이블들을 연결, 결합하여 데이터를 출력하는 것 예를들어 선수 테이블과 팀 테이블을 연결해서 데이터를 볼 수 있다. PRIMARY KEY(PK)나 FOREIGN KEY(FK)값의 연관에 의해 JOIN이 성립된다. FROM 절에 A, B, C 테이블이 나열되었더라도 2개 테이블만 먼저 조인 처리되고,2개 테이블이 조인되어 처리된 새로운 데이터 집합과 남은 한 개의 테이블이 다음 차례로 조인 처리된다. EQUI JOIN EQUI(등가) JOIN은 두 테이블 간에 컬럼 ㄱ밧이 서로 정확하게 일치하는 경우 사용되는 방법이다. WHERE절에 = 연산자를 사용해서 표현한다. SELECT 테이블1.컬럼명, 테이블2.컬럼명 FROM 테이블1, 테이블2 WHERE 테이블1.컬럼명1 = 테이블2.컬..
ROWNUM 오라클에서 순위가 높은 N개의 로우를 출력할때 사용하는 명령어. 오라클은 정렬이 완료된 후 데이터를 출력하는게 아니라, 데이터 일부를 추출한 후에 정렬작업이 일어난다. 급여가 높은 3명만 추리고 싶을 때 -- 이렇게 하면 엉뚱한 결과가 나온다. 틀린 쿼리. SELECT ENAME, SAL FROM EMP WHERE ROWNUM < 4 -- 이걸 먼저 수행하고 ORDER BY SAL DESC ; -- 이게 돌아버리기 때문. -- 이렇게 하셔야 합니다. SELECT ENAME, SAL FROM ( SELECT ENAME, SAL FROM EMP ORDER BY SAL DESC ) -- 인라인 뷰를 이용해서 데이터셋을 구성해줘야 한다. WHER ROWNUM < 4 ; TOP() 오라클과 달리 sq..
5. SELECT 1. FROM 2. WHERE 3. GROUP BY 4. HAVING 6. ORDER BY 1. 발췌 대상 테이블에서 (FROM) 2. 대상 데이터가 아닌 것을 제거하고 (WHERE) 3. 행들을 소그룹화 하고 (GROUP BY) 4. 그룹핑된 값의 조건에 맞는 것만 출력해서 (HAVING) 5. 데이터 값을 출력/계산한다 (SELECT) 6. 그리고 정렬한다. (ORDER BY) 주의할 점 GROUP BY 에 오는 컬럼은 SELECT 와 ORDER BY에도 포함되어야 한다. 단, ORDER BY에 집계함수로 쓰이는 경우에는 GROUP BY에 없는 컬럼도 가능하다. -- 이렇게 하면 에러난다. SELECT JOB FROM EMP GROUP BY JOB ORDER BY SAL ; -- 이..
ORDER BY 특징 ORDER BY 는 조회된 데이터를 정렬하는 데 사용하는 명령어. 컬럼명, ALIAS, 컬럼 순서를 나타내는 숫자도 사용 가능하다. 별도 정렬 방식을 지정하지 않으면 오름차순이 기본으로 적용된다. SQL 마지막에 위치한다. 정렬 ASC(Ascending) : 오름차순으로 정렬. (디폴트라 생략 가능) 작은 숫자가 위에 온다. 빠른 날짜가 위에 온다. DESC(Descengind) : 내림차순 정렬. 큰 숫자가 위에 온다. NULL의 정렬 오라클 : 가장 큰 숫자 (DESC 했을 때 NULL이 가장 위에 옴) SQL SERVER : 가장 작은 숫자 ((DESC 했을 때 NULL이 가장 아래에 옴) 사람 이름을 내림차순으로 정렬하는 예시 SELECT PLAYER_NAME 선수명, POS..
GROUP BY 절 특징 FROM절과 WHERE절 뒤에 오며, 데이터들을 작은 그룹으로 분류하여 소그룹에 대한 항목별 통계 정보를 얻을때 사용한다. GROUP BY로 소그룹을 정한 뒤, SELECT절에 집계 함수를 사용한다. NULL 값을 가진 행을 제외하고 수행한다. GROUP BY절에서는 ALIAS명을 사용할 수 없다. WHERE절 수행 후에 GROUP BY 절이 수행된다. -- 포지션 별 평균키 구하기 -- 이렇게 하면 에러난다. SELECT POSITION, AVG(HEIGHT) FROM PLAYER ; -- 이렇게 해도 에러난다. (ALIAS 사용 불가) SELECT POSITION 포지션, AVG(HEIGHT) FROM PLAYER GROUP BY POSITION 포지션; -- 이렇게 조회해야..
집계함수 여러 행들의 그룹이 모여 단 하나의 결과를 돌려주는 함수 집계함수 특징 여러 행이 모여 그룹당 하나의 결과를 돌려줌 GROUP BY 절은 행들을 소그룹화 한다. SELECT절, HAVING절, ORDER BY 절에 사용할 수 있다. 자주 사용되는 집계 함수 COUT(*) NULL 값을 포함한 행의 수를 출력 COUNT(표현식) 표현식의 값이 NULL인 값인 것을 제외한 행의 수를 출력 SUM ([DISTINCT] | [ALL] 표현식) 표현식의 NULL 값을 제외한 합계를 출력 AVG ([DISTINCT] | [ALL] 표현식) 표현식의 NULL 값을 제외한 평균을 출력 MAX ([DISTINCT] | [ALL] 표현식) 표현식의 최대값을 출력 (문자, 날짜, 데이터 타입도 가능) MIN ([D..
NULL 의 특성 아직 정의되지 않은 값으로 0 또는 공백과 다르다. (0은 숫자이고, 공백은 문자다) 테이블을 생성할 때 NOT NULL 또는 PRIMARY KEY로 정의되지 않으면 NULL을 포함할 수 있다. NULL을 포함하는 연산의 결과도 NULL이다 ( 1 + NULL = NULL) 컬럼 A가 1 이고 컬럼 B가 NULL 일때는 연산 결과가 NULL 이지만, 컬럼 A에서 숫자 1과 NULL 이 있는 상태에서 sum(A)를 하면 NULL 을 제외한 1값이 나온다. NULL과 연산하고 싶을 때에는 시스템에서 의미 없는 문자로 바꿔서 연산하는 경우가 많다. 혹은 NVL 함수를 이용할 수도 있다. NULL과 관련된 함수 NVL(표현식1, 표현식2) / ISNULL(표현식1, 표현식2) 표현식 1의 결과..
CSAE 표현은 IF - THEN - ELSE 논리와 유사항 방식으로 사용할 수 있는 함수이다. 오라클에서는 DECODE 함수를 사용할 수도 있다. 예시 SELECT ENAME, -- 직원이름 CASE WHEN SAL > 2000 -- 급여가 2,000 초과면 THEN SAL -- 급여를 표시하고 ELSE 2000 -- 해당하지 않으면 2,000을 표시하라 END REVISED_SALARY -- CASE 행의 이름은 REVISED_SALARY 다 FROM EMP ; 이렇게도 가능하다. SELECT ENAME, -- 직원이름 CASE WHEN SAL >= 3000 THEN 'HEIGH' -- 급여가 3,000 이상이면 높음 WHEN SAL >= 1000 THEN 'MID' -- 1000 이상이면 중급 EL..

대표적인 변환형 함수 예시 -- 날짜를 정해진 문자 형태로 변환시키기 -- 오라클 SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD') 날짜, TO_CHAR(SYSDATE, 'YYYY. MM. DAY') 문자형 FROM DUAL ; -- sql server SELECT CONVERT (VARCHAR(10), GETDATE(), 111) AS CURRENTDATE kdata 한국데이터진흥원에서 출간한 SQL 전문가 가이드 2013 Edition을 요약했습니다.