자격증/SQLD

SQLD 노랭이 2과목 개념 정리 (SQL 기본)

ByeongJun 2023. 6. 9. 11:21
반응형

노랭이 P.40~ (관계형 데이터베이스 / DDL / DML / TCL / WHERE / GROUP BY, HAVING / ORDER BY)

SQL 명령어

 

절차적 데이터 조작어(procedural DML)

사용자가 어떤 데이터를 원하고 해당 데이터를 얻으러면 어떻게 처리해야 하는지를 설명

> 어떻게 (HOW) 데이터를 접근해야 하는지 명세

  ex) PL/SQL(오라클), T-SQL(SQL Server 등)

 

비절차적 데이터 조작어(nonprocedural DML)

사용자가 어떤 데이터를 원하는지만 설명 (어떻게는 DBMS에 맡김)

 > 사용자가 무슨(WHAT) 데이터를 원하는 지만 명세

 

 

PRIMARY KEY

-- CREATE 문으로 PRIMARY KEY 설정 --
CREATE TABLE 테이블이름
       ( ...
       ,CONSTRAINT 제약조건이름 PRIMARY KEY (필드이름)
       );


-- ALTER 문으로 PRIMARY KEY 설정 --
--방법1-- 
ALTER TABLE 테이블이름
      ADD (필드이름) 필드타입 PRIMARY KEY

--방법2--
ALTER TABLE 테이블이름
      ADD CONSTRAINT 제약조건이름 PRIMARY KEY (필드이름)

 

39번
-- ③ 서비스 종료일시가 00시 00분 00초 ~ 23시 59분 59초 사이에 만료되는 데이터 찾는 조건--
WHERE '201501' = TO_CHAR(SVC_END_DATE, 'YYYYMM')
  AND JOIN_YMD = '20141201'
  AND JOIN_HH = '00'
  
-- ④ 가입일은 동일하나 2015년 01월 01일 00시 00분 00초에 종료되는 SQL 찾는 조건 --
WHRER TO_DATE('201501', 'YYYYMM') = SVC_END_DATE
  AND JOIN_YMD || JOIN_HH = '2014120100'

 

 

49번
NVL (표현식1, 표현식2)
   : 표현식1의 결과값이 NULL이면 표현식 2의 값을 출력한다.

NULLIF (표현식1, 표현식2)
   : 표현식1 = 표현식2 일 경우 NULL, 같지 않으면 표현식1을 리턴한다.

COALESCE (표현식1, 표현식2)
   : 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다.

 

 

52번

출처 : 어쩌다DBA

광고매체 ID별 최초로 게시한 광고명과 광고시작일자를 출력하기 위한 SQL을 작성해야 하는데,

  • GROUP BY에 찾고자 하는 광고매체 ID가 들어와야 한다.
  • 1번 풀이   (3,4번은 FROM절에서 애초 광고매체 ID를 찾고 있지 않기 때문에 탈락)
    • INLINE VIEW 밖에 있는 C 테이블을 참고하고 있는데 FROM절에서는 바깥에 있는 테이블 참조 불가
      이를 통해 알 수 있는 것은 FROM절도 확인할 것 (WHERE절에서 많이 사용)

 

 

53번

  • COUNT를 사용했는데 AVG 집계함수를 또 사용할 경우 오류 발생
  • SELECT에선 '메뉴ID, 사용유형코드' 제거하고 GROUP BY에서 위와 같이 명시한 다음 중첩함수 사용은 문제 없음
    (오라클에서는 실행 가능하나 SQL Server에서는 실행이 안된다고 하니 참고)

참고1

[참고]

  • HAVING 조건절에는 GROUP BY 함수와 관련하여 어떤 함수를 쓰더라도 상관 없다.
  • 집계함수 외 SELECT 있는 것들은 GROUP BY절에도 셋팅되어 있어야 함
  • '참고1' 이미지처럼 SELECT절, GROUP BY절에는 있는데 HAVING절에 다른 값을 셋팅하면 오류 발생

 

 

55번

GROUP BY HAVING한 결과에 대해 정렬 연산 (이미지 클릭 시 확대)

 

 

JOIN

두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력

  • 일반적으로 PK와 FK값의 연관성에 의해 성립
  • DBMS 옵티마이저는 FROM절에 나열된 테이블이 아무리 많아도 항상 2개의 테이블씩 짝을 지어 JOIN 수행
  • EQUI JOIN은 테이블 간의 컬럼 값들이 정확하게 일치하는 경우에 사용
                            '=' 연산자에 의해서만 수행되며, 그 외 비교 연산자를 사용하는 경우 모두 Non EQUI Join
  • 대부분 Non EQUI Join을 수행할 수 있지만, 때로는 설계상의 이유로 수행이 불가능한 경우 有

 

 

 

 

SQLD 노랭이 2과목 개념 정리 (SQL 활용)

SQLD 노랭이 2과목 개념 정리 (SQL 기본) SQL 명령어 절차적 데이터 조작어(procedural DML) 사용자가 어떤 데이터를 원하고 해당 데이터를 얻으러면 어떻게 처리해야 하는지를 설명 > 어떻게 (HOW) 데이터

3mmmeee.tistory.com

반응형