SQLD/SQL 기본과 활용
-
CROSS JOINSQLD/SQL 기본과 활용 2020. 8. 27. 19:06
1. CROSS JOIN - 일반 집합 연산자의 PRODUCT 개념으로 테이블 간 조인 조건이 없는 경우 생길 수 있는 모든 데이터의 조합을 출력한다. - 두개의 테이블에 대한 CROSS PRODUCT의 결과는 M*N 건의 데이터 조합이 발생한다. ex) (EMP 6건 x DEPT 4건 = 총 24건의 데이터 출력) - WHERE 절에서 조인 조건을 추가할 경우 INNER JOIN과 같은 결과를 얻는다. (사용 의미가 없다) - 좌측 테이블 기준으로 곱연산을 한다. (좌측 테이블 데이터 기준으로 출력) - 보통 튜닝과 리포트 작성, 데이터 웨어하우스의 차원(Dimension)을 fact칼럼과 조인하기전에 모든 차원의 cross product를 먼저 구할때 유용하게 사용된다. SQL> SELECT A.EN..
-
다중 테이블 조인(ON 조건절, WHERE 절)SQLD/SQL 기본과 활용 2020. 8. 27. 18:48
# EMP 테이블에는 ENAME, DEPTNO, CNAME DEPT 테이블에는 DEPTNO, DNAME, CNAME COMP 테이블에는 CNAME, CDIAL, CLOC 컬럼만이 있다고 가정한다. # ON 조건절 다중 테이블 조인 SQL> SELECT A.ENAME, A.DEPTNO, B.DNAME, C.CNAME, C.CDIAL FROM EMP A JOIN DEPT B ON B.DEPTNO = A.DEPTNO JOIN COMP C ON C.CNAME = B.CNAME; # WHERE 절 다중 테이블 조인 SQL> SELECT A.ENAME, A.DEPTNO, B.DNAME, C.CNAME, C.CDIAL FROM EMP A, DEPT B, COMP C WHERE B.DEPTNO = A.DEPTNO AN..
-
표준 조인(INNER JOIN, NATURAL JOIN,FROM 조건절, USING 조건절, ON 조건절)SQLD/SQL 기본과 활용 2020. 8. 27. 18:25
1. INNER JOIN (FROM 조건절) - 조인 조건을 만족하는 행들만 반환 - 공통된 컬럼은 각 테이블별로 두번씩 출력 - SELECT 절에 * 사용시 테이블 순서대로 칼럼 출력 2. NATURAL JOIN (FROM 조건절) - 두 테이블 간에 동일한 이름을 갖는 모든 칼럼들에 대해 EQUI JOIN - 공통된 컬럼은 ALIAS나 접두사를 붙일수 없음. ex) DEPTNO가 A,B 모두 공통적으로 가지고 있는 칼럼이라면 SELECT 절에서 A.DEPTNO 불가 - 공통된 컬럼은 하나만 출력 - SELECT 절에 * 사용시 공통된 컬럼이 제일 먼저 출력 (첫번째 칼럼으로 출력) - SQL Server 에서 지원하지 않음. (Oracle은 지원) 3. USING 조건절 - USING 조건절은 원하는..
-
SQL JOIN(EQUI JOIN, NON-EQUI JOIN, OUTER JOIN)SQLD/SQL 기본과 활용 2020. 8. 24. 16:04
# JOIN의 기준이 되는 테이블은 JOIN 조건을 기술할때 나열되는 두 테이블중 뒤에 위치하는 테이블이다 SQL> SELECT A.PLAYER_NAME, A.TEAM_ID B.TEAM_NAME FROM PLAYER A, TEAM B WHERE B.TEAM_ID = A.TEAM_ID; # A.TEAM_ID를 기준으로 B테이블과 비교하며 조인 # 실행결과 PLAYER_NAME TEAM_ID TEAM_NAME ----------------------------------------------- 고종수 K07 포항 문창수 K06 대구 이청용 K01 서울 1. EQUI JOIN - 보통 'PK-FK' 관계로 이루어져, 조인조건이 '='로 성립하는 조인 (조인 칼럼이 1:1 맵핑이 가능한 경우) SQL> SELE..
-
SQL) GROUP BY 절, HAVING 절, ORDER BY절, SELECT 문장 실행 순서SQLD/SQL 기본과 활용 2020. 8. 20. 17:13
# 실행 순서 : FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY (옵티마이저가 SYNTAX, SEMANTIC 에러를 점검하는 논리적 순서) (물리적 순서는 실행계획에 의해 정해짐) 1. GROUP BY절 # GROUP BY 절은 FROM, WHERE절 뒤에 위치하며, 데이터들을 소그룹에 대한 항목별로 통계 정보를 얻을 때 추가로 사용된다. /* SELECT [DISTINCT] COL1 [ALIAS] FROM TAB1 [WHERE condition1] [GROUP BY exp1] [HAVING condition2] [ORDER BY exp2 [ASC | DESC]]; */ # 집계함수는 WHERE 절에 올 수 없다 # 실행순서 : FROM -> WH..
-
SQL) 집계함수SQLD/SQL 기본과 활용 2020. 8. 20. 17:02
# 집계함수는 하나의 결과를 리턴 COUNT(*) NULL 값을 포함한 행의 수 출력 (PK 때문에 전체칼럼이 NULL인 행은 존재 할 수 없으므로) COUNT(exp1) 표현식중 NULL 값을 제외한 행의 수 출력 SUM([DISTINCT | ALL] exp1) 표현식의 NULL 값을 제외한 합계 출력 AVG([DISTINCT | ALL] exp1) 표현식의 NULL 값을 제외한 평균 출력 MAX([DISTINCT | ALL] exp1) 표현식의 최댓값 출력 (문자, 날짜 데이터 타입도 사용가능) MIN([DISTINCT | ALL] exp1) 표현식의 최소값을 출력 (문자, 날짜 데이터 타입도 사용가능) STDDEV([DISTINCT | ALL] exp1) 표현식의 표준 편차 출력 VARIANCE/V..
-
SQL의 LIKE, IN, BETWEEN 연산자 및 연산자 우선순위SQLD/SQL 기본과 활용 2020. 8. 20. 16:31
1. 연산자 우선순위 : ( ), NOT, AND, OR ex) SELECT ENAME FROM EMP WHERE E_ID = '1' OR E_ID = '2' AND SAL >= '500' AND HEIGHT >= 170; => AND가 먼저 묶이고 OR이 묶임. E_ID = '2' 와 SAL>=500 이 하나로 묶이는 듯. 나중에 확인 해볼 것. 참고) NOT 연산자는 , !=, ^= 로 대체가능 2. LIKE 'str'[Wildcard] # Wildcard : % : 0개 이상의 문자 _ : 1개 단일 문자 # 예시 1 SQL> SELECT E_NAME FROM EMP WHERE E_NAME LIKE '김%' # 실행결과 E_NAME ------ 김희선 김흥국 김지선 김소영 김수현 김칫국 .... 총..
-
SQLD) NULL 과 공집합SQLD/SQL 기본과 활용 2020. 8. 19. 17:32
# NULL 의 특성 - NULL 은 아직 정의 되지 않은 값. 0은 숫자이며, 공백은 문자. - 테이블 생성시 NOT NULL 또는 PRIMARY KEY로 정의되지 않은 모든 데이터 유형은 NULL 값을 가질 수 있다. - NULL값을 포함 하는 연산의 경우 결과 값도 NULL. - NULL값을 비교연산(=, !=)시 FALSE 리턴. (NULL값의 비교연산은 IS NULL 이나 IS NOT NULL 로 가능) - NULL은 집계함수에서 연산에 사용되지않는다. (자원 사용 효율에 좋음, Skip한다고 생각하면됨) # NVL(exp1, exp2) / ISNULL(exp1, exp2) * Oracle * SQL Server - exp1의 결과값이 NULL이면 exp2를 출력 (exp1과 exp2의 데이터 ..