일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- Drop
- 일기
- 도전
- ROWNUM
- 30일글쓰기
- SQL
- 30일챌린지
- 테이블삭제
- ERD
- INSERT
- 보울룸
- 홈트
- 환생
- 전생
- rename
- data
- 직장생활
- constraint
- SQLD
- 직장인일기
- where절
- 회사싫어
- 넷플릭스
- null
- 데이터모델링
- 회사생활
- 인덱스
- 빅데이터
- Update
- 책리뷰
- Today
- Total
목록전체 글 (132)
최보름달
CROSS JOIN 테이블 간 JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합을 찾을 수 있다. 양쪽 테이블 집합의 M * N 건의 데이터 조합이 발생한다. SELECT ENAME, DNAME FROM EMP CROSS JOIN DEPT ORDER BY ENAME ; CROSS JOIN은 WHERE 절에서 JOIN 조건을 추가할 수 있다. 하지만 INNER JOIN과 같은 결과가 나오게 된다(..) SELECT ENAME, DNAME FROM EMP CROSS JOIN DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO ; 정상적인 데이터 모델이라면 CROSS JOIN이 필요한 경우는 많지 않다. kdata 한국데이터진흥원에서 출간한 SQL 전문가 가이드 2013 Edition을..
USING 조건절 FROM절의 USING 조건절을 이용하면 같은 이름을 가진 컬럼들 중에서 원하는 컬럼에 대해서만 EQUI JOIN을 할 수 있다. sql server에서는 지원하지 않는다. SELECT * FROM DEPT JOIN DEPT_TEMP USING (DEPTNO) ; USING 조건절에서도 테이블 이름이나 ALIAS, 접두사를 붙일 수 없다. ON 조건절 컬럼명이 다르더라도 JOIN 조건을 사용할 수 있다. SELECT E.EMPNO, E.ENAME, E.DEPTNO, D.DNAME FROM EMP E JOIN DEPT D ON (E.DEPTNO = D.DEPTNO) ; -- 괄호는 없어도 됨. (옵셔널) WHERE 절과 혼용해서 사용할 수도 있다. SELECT E.EMPNO, E.ENAM..
INNER JOIN INNER JOIN은 OUTER(외부) JOIN과 대비해서 내부JOIN 이라고 하며 JOIN 조건에서 동일한 값이 있는 행만 반환한다. INNER JOIN 표시는 WHERE 절에서 사용하던 JOIN 조건을 FROM 절에서 정의하겠다는 표시이므로 USING 이나 ON을 필수적으로 같이 써야한다. SELECT EMP.DEPTNO, EMPNO, ENAME, DNAME FROM EMP INNER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO; -- INNER 는 JOIN의 디폴트 옵션이라서 생략할 수 있다. SELECT EMP.DEPTNO, EMPNO, ENAME, DNAME FROM EMP JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO; NATUR..
ANSI/ISO SQL에서 표시하는 FROM절의 JOIN 형태는 다음과 같다. INNER JOIN NATURAL JOIN USING 조건절 ON 조건절 CROSS JOIN OUTER JOIN ANSI/ISO SQL에서 규정한 JOIN문법은 WHERE절을 사용하던 기존 조인 방식과 차이가 있다. 표준은 FROM 절에서 명시적으로 조인을 명시하는 방식이다 INNER JOIN WHERE 절에서부터 사용하던 JOININNER JOIN의 디폴트 옵션이다. JOIN 조건에서 동일한 값이 있는 행만 방환한다. 디폴트 옵션이라 생략 가능하지만 CROSS JOIN, OUTER JOIN 과는 같이 사용할 수 없다. NATURAL JOIN INNER JOIN의 하위 개념으로 두 테이블 같 동일한 이름을 같은 모든 컬럼에 대..

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 포지션; -- 이렇게 조회해야..