SQLD 정리(16)
-
SQL - JOIN 조인
서로 다른 테이블을 결합할 때 조인을 사용한다. 조인을 하는 방법 1. 두 테이블에서 동일한 컬럼을 찾는다. 2. 레코드를 식별할 수 있는 컬럼으로 결정한다. 위에 두개의 테이블이 있다. 회원별 전화번호를 출력하려고 한다. 따라서 회원정보가 있는 테이블과 전화번호가 있는 테이블을 결합하여 출력을 하면 된다. 두 테이블의 공통 칼럼은 회원코드이다. 회원코드를 이용해서 조인을 하면 다음과 같다. SELECT A.이름, B.전화번호 FORM C_INFO A JOIN PHONE B ON A.회원번호 = B.회원코드; 위와 같이 조인은 다른 테이블과 결합하여 정보를 가져올 때 사용된다. 이제 조인의 종류에 대해 알아보자 조인의 종류 * 교집합 - INNER JOIN( 두 테이블에서 일치하는 데이터만 출력) SEL..
2023.03.13 -
SQL - 집계함수, SELECT문 연산 순서, 행 수 제한, ROWID
집계함수 COUNT(*), COUNT(컬럼명) >>> COUNT(*)은 NULL을 포함, COUNT(컬럼명)은 NULL 제외 SUM( [DISTICT | ALL] 컬럼명 ) >>> 합계 AVG( [DISTICT | ALL] 컬럼명 ) >>> 평균 MAX( [DISTICT | ALL] 컬럼명 ) >>> 최댓값 MIN( [DISTICT | ALL] 컬럼명 ) >>> 최소값 STDDEV( [DISTICT | ALL] 컬럼명 ) >>> 표준편차 VARIAN( [DISTICT | ALL] 컬럼명 ) >>> 분산 참고) NULL에 대한 연산 결과는 모두 NULL이다. 통계적 집계함수를 연산할때 NULL은 제외하고 계산한다. ex) NULL * 10 = NULL SELECT문 연산 순서 SELECT 컬럼명 FROM ..
2023.03.13 -
SQL - Group By
위에 테이블에서 성별에 따른 회원수를 count하려고 한다. 이때 group by를 사용해서 count 할 수 있다. SELECT 성별, COUNT(회원코드) FROM MEMEBER_INFO GROUP BY 성별 위의 테이블에서 성별로 GROUP BY해서 출력을 하면 오라클인 경우 다음과 같이 출력이 된다. 출력된 결과를 보면 성별이 NULL인것도 COUNT를 해줬다. 반대로 SQL서버에서는 NULL을 COUNT 안해주고 성별 F, M에 대해서만 COUNT를 해준다. 만약에 SQL 서버에서 NULL을 포함해서 COUNT를 하고 싶다면 NULL을 NVL을 통해서 NULL값을 대체 해주면 된다. SELECT NVL(성별, 'N') AS gender, COUNT(회원코드) cnt FROM MEMEBER_INF..
2023.03.13 -
SQL - NULL 관련 함수
NVL NVL(COL1, 대체값) >>> COL1의 값이 NULL이면 대체값으로 출력 ex) NVL( COLUMN, 'NULL값을 대체한닷') >>> COLUMN이 NULL이면 'NULL값을 대체한닷' 출력 NVL2 NVL2(COL1, 결과1, 결과2) >>> COL1이 NULL이 아니면 COL1이고 NULL이면 결과2 ex) NVL2( COLUMN, 'NULL 아님', 'NULL이닷') >>> COLUMN이 NULL이면 'NULL이닷' 출력 아니면 'NULL 아님' NULLIF NULLIF(v1, v2) >>> v1 == v2이면 null이고 v1 != v2 이면 v1 출력한다. COALESCE COALESCE(v1, v2, v3, ....) >>> NULL이 아닌 최초의 값을 반환 ex) COALES..
2023.03.12 -
SQL - WHERE 절에 들어가는 연산자
IN(값1, 값2, 값3,...) >>> IN 안에 있는 값이 하나라도 일치하면 TRUE 아니면 FALSE EX) SELECT '출력됨' FROM DUAL WHERE 3 IN(1,2,3) >>> '출력됨' NOT IN(값1, 값2, 값3,...) >>> NOT IN 안에 있는 값이 하나라도 일치하면 FALSE 아니면 TRUE EX) SELECT '출력됨' FROM DUAL WHERE 5 NOT IN(1,2,3) >>> '출력됨' IS NULL >>> NULL 이면 TRUE 아니면 FALSE EX) SELECT '출력됨' FROM DUAL WHERE '이것은 NULL이 아니다' IS NULL >>> 출력되지 않음 IS NOT NULL >>> NULL이 아니면 TRUE 아니면 FALSE EX) SELECT ..
2023.03.10 -
SQL - DECODE, CASE WHEN
DECODE - IF문과 같다 - DECODE( 값1, 값2, 참일때 출력값, 거짓일때 출력값) >>> 값1과 값2가 같으면 참일때 출력값 아니면 거짓일때 출력값이 출력 EX) DECODE(SCORE, 100, '만점', '만점 아님') ==> 점수가 100점이면 '만점' 아니면 '만점 아님' 출력됨 CASE WHEN - IF문과 같다. - CASE WHEN 조건 THEN 조건이 참일 때 결과 ELSE 거짓일때 결과 END - 여러개의 조건에 따른 결과도 나타낼 수 있다. CASE WHEN 조건1 THEN 결과1 WHEN 조건2 THEN 결과2 WHEN 조건3 THEN 결과3 ..... ELSE 결과 END EX) CASE WHEN SCORE > 80 THEN 'GOOD' WHEN SCORE > 60 T..
2023.03.10