SQLD, ECLIPS, JAVA,PYTHON, NODE....

[SQLD] 자격시험 - 학습 보강사항 1 본문

SQL

[SQLD] 자격시험 - 학습 보강사항 1

D_Aiden 2023. 12. 30. 14:51
728x90
반응형
SMALL

시험접수: 2024.1.19

SQLD 자격증은
SQL Server와 Oracle SQL 2가지를 모두 비교해서 학습해야 됨.
(기초를 배웠으니, 자격증 취득을 위해 활용편 학습 필요)

코딩 작성순서
SQL Sever, Oracle SQL 모두 동일 습관 필요. (명령 프롬프트로 배운 만큼, 실무 코딩은 다시 연습)

  1. FROM 절
  2. WHERE 절  --> WHERE  AND AND; 형태
  3. GROUP BY 절
  4. HAVING 절
  5. ORDER BY 절
  6. SELECT 절

 

SELECT 문장, 실행 순서

FROM(발췌 대상 테이블을 참조한다) - WHERE(조건을 확인. 즉, 발췌 대상 데이터가 아닌 것을 제거한다) - GROUP BY(행등릉 소그룹화 한다) - HAVING(그룹핑 된 값의 조건에 맞는 것 만을 출력한다) - SELECT(데이터 값을 출력/계산 한다) - ORDER BY(데이터를 정렬한다)

 

NULL에 대해

  • ISNULL (표현식1,표현식2) --> 표현식1의 결과값이 NULL이면, 표현식2의 값을 출력
  • NULLIF(표현식1, 표현식2) --> 표현식1이 표현식2와 같으면 NULL, 같지 않으면 표현식2를 리턴.
  • COALESCE(표현식1,표현식2) : 임의의 개수 표현식에서 NULL이 아닌, 첫번째 값(최초의 값)을 표현.
    ㄴ coalesce는 스펠링 헤깔릴 수 있음.
  • NULL은 그 어떤 부등호를 코딩해도 최종 결과값은 NULL(알수 없으므로).
    ㄴ 단, AVG 결과은 NULL은 제외.

MIN함수



ORDERBY 절

  • SQL 문장으로 조회된 데이터들을 다양한 목적에 맞게 특정 컬럼 기준으로 정렬할 때 사용.
  • DBMS마다 NULL값에 대한 정렬 순서가 다를 수 있으므로 주의해야 됨.
  • GROUP BY절을 사용하는 경우, ORDER BY절에는 집계함수도 사용가능( ex. AVG, SUM 등등)
  • ORDER BY절에서 컬럼명 대신 Alias(함수이며, sum/AVG 형태) 명이나, 컬럼순서를 나타내는 정수 사용도 가능하며, 혼용해서 사용 가능함.

정렬 관련

  • 기본 정렬순서는 오름차순(ASC)이 기본값.
  • 숫자형 데이터 타입은 오른차순(ASC)로 정렬했을때 가장 작은 값부터 출력. (내림차순(DESC): 가장 값부터 출력)
  • 날짜형 데이터 타입(DATE)은 오름차순(ASC) 정렬의 경우 날짜가 가장 빠른 값이 먼저 출력.
    ex. '01-JAN-2024'는 01-SEP-2024'보다 먼저 출력됨.

  • OracleNull값을 가장 으로 간주함.
    - 오름차순(ASC)으로 정렬 했을 경우에는 가장 마지막,
    - 내림차순(DESC)로 정렬했을 경우 가장 먼저 위치 함.
  • SQL ServerNULL값을 가장 작은 값으로 간주함.
    - 오름차순(ASC)로 정렬 했을 경우 가장 먼저,
    - 내림차순(DESC)로 정렬했을 경우 가장 나중에 위치함.

 

 

WITH TIES 함수

  • 동일한 값이라도 컬럼이 다른 경우 출력.
  • 형태: SELCT 함수 WITH TIES 표현식1, 표현식2  FROM 절 
  • 예시: SELECT TOP(3) WITH TIES 팀명, 승리건수 FROM 팀별 성적
              ORDER BY 승리건수 DESC;
    결과: 동일한 승리건수가 포함된 팀명까지 TOP3가 DESC(내림차순, 큰 순서대로) 출력됨

 

JOIN 에 대해 (Alias)

  • 개념: 테이블끼리의 연결고리를 만들어 같은 결과값을 추출하기 위함.
  • 사용: 조회하려는 테이블 개수 - 1 개가 JOIN 테이블 갯수 여야 됨.
  • JOIN은 PK와 FK값의 연관성에 의해 성립 됨.
  • DBMS의 옵티마이져(테이블의 분포도 구분, 대용량 테이블에서 INDEX로 구별)는 FROM절에 나열된 테이블들을 임의로 2개만 묶어서 처리 한 후, 나머지 테이블을 JOIN시켜 처리 함. 
  •  EQUI JOIN(다른 테이블에 같은 컬럼이 있는 경우, 같은 데이터로 추출하는 함수)은 JOIN에 관해 테이블간의 컬럼 값들이 정확하게 일치하는 경우 사용되는 방법.
     - 연산자는   =  만 사용 가능
                             ex. WHERE 테이블1.컬럼명 = 테이블2.컬럼명
  • 대부분 NON EQUI JOIN을 수행할 수 있지만, 때론 설계상의 이유로 수행이 불가능한 경우도 있음
    - 연산자는  = 을 제외한, BETWEEN  AND 혹은 부등호( >  < % * - )만 사용
    설명: 테이블1 기준, 조회 할 값 비교 시, 테이블2에서 조회 할 컬럼을 추출.
  • Alias(알리아스): JOIN을 사용해서 테이블1, 테이블2의 컬럼을 조인할 때 사용.

 

순수 관계 연산자

  • SELECT: 관계형 데이터만 추출하는 연산자, 특정 테이블만 조회하는 연산자(수평 연산자)
  • PROJECT: 테이블에서 컬럼만 조회하는 연산자(수직 연산자)
  • JOIN: 공통 테이블을 하나의 테이블로 합쳐서 릴레이션을 만드는 연산자
  • DIVISION: B테이블에 모든 튜플과 관련된 A 테이블의 컬럼들을 추출하는 연산자
  • UPDATE는 순수 관계형 연산자에 해당되지 않음
     

DIVISION 연산

 

  • LEFT OUTER JOIN: 기준 테이블에 조인되는 값은 모두 나오지만, 맵핑이 안되면 NULL로 조회됨

LEFT OUTER JOIN

카티시안곱: 테이블X테이블은 테이블 총 계수.

HAVING 절엔 조건값이 나옴.
ex. HAVING count(*) > 3;

 

비등가조인
INERT JOIN 테이블1  ON (컬럼1 BETWEEN 컬럼2 AND 컬럼3)

 

아래의 3가지 코딩은 결과 값이 모두 같음

--1번
SELECT team.region_name, team. team_name, team.stadium_id, statuam.stadium_id
FROM team
INNER JOIN stadium ON (team.stadium_id = stadium.stadium_id)

--2번
SELECT T.region_name, T.team_name, T.stadium_id, S.stadium_id
FROM team T. stadium S
WHERE T.stadium_id = S.stadium_id

--3번
SELECT team.region_name, team.team_name, team.stadium_id, stadium.stadium_id
FROM team, stadium
WHERE team.stadium_id = stadium.stadium_ID

 

728x90
반응형
LIST

'SQL' 카테고리의 다른 글

[SQLD] 자격시험 - 학습 보강사항 3  (0) 2024.01.03
[SQLD] 자격시험 - 학습 보강사항 2  (2) 2024.01.02
[Oracle] SQL, PLSQL - DB 백업, 저장(입력) 방식  (2) 2023.12.06
[Oracle] SQL, PLSQL 차이  (4) 2023.11.29
SQL, Access 차이  (0) 2023.11.21