[SQLD] SQL 기본 문제 풀이-2

·2023년 5월 21일
1

SQLD

목록 보기
11/18
post-thumbnail
post-custom-banner

논리 연산자 우선순위

NOT > AND > OR

NULL

  • 오라클에서 ''의 데이터를 입력하면 NULL로 입력된다.
  • SQL Server에서 ''의 데이터를 입력하면 ''로 입력된다.

NULL의 연산

  • NULL값과의 연산(+,-,* 등)등은 NULL 값을 리턴

  • NULL값과의 비교 연산(=, !=, > 등)은 FALSE를 리턴

  • NULL은 연산 대상에서 제외한다.

  • NULL값을 조건절에 사용한 경우에는 IS NULL, IS NOT NULL 를 사용해야 한다

    WHERE column = NULL 이나 WHERE column != NULL 사용 X

ISNULL(C1, C2) -> C1의 값이 NULL이면 C2를 반환

내장함수

  • 함수의 입력 행수에 따라 단일행 함수, 다중행 함수로 구분
  • 단일행 함수는 SELECT, WHERE, ORDER BY, UPDATESET절 사용이 가능
  • 1:M 조인이라 하더라고 M쪽에서 출력된 행이 하나씩 단일행 함수의 입력값으로 사용되므로 사용할 수 있다.
  • 다중행 함수도 단일행 함수와 동일하게 단일값만 반환

단일행 NULL 관련 함수

함수(오라클/SQL Server)설명
NVL(표현식1, 표현식2)/ISNULL(표현식1, 표현식2)표현식1의 결과값이 NULL이면 표현식2의 값을 출력. 단, 표현식1과 표현식2의 결과 데이터 타입이 같아야 함.
NULLIF(표현식1, 표현식2)표현식1이 표현식2와 같으면 NULL을, 같지 않으면 표현식1을 리턴
COALESCE(표현식1, 표현식2, ...)임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다. 모든 표현식이 NULL이라면 NULL을 반환

60쪽, 41번 문제

줄바꿈도 하나의 문자로 인식되어 A<줄바꿈>A의 문자열 길이는 3이다.

SELECT LENGTH(C1) FROM TAB1;의 값음 3, 5인 것!

REPLACE 절

REPLACE(A, B, C)는 A에 B값을 C로 치환하라는 의미이며, C의 값이 존재하지 않으면 B의 값을 삭제하라는 것이다.

문제풀이

SELECT(LENGTH(C1) - LENGTH(REPLACE(C1, CHR(10))) +1) CC FROM TAB1
SELECT((3, 5) - LENGTH('AA', 'BBB')) +1) CC FROM TAB1
SELECT((3, 5) - (2, 3)) +1) CC FROM TAB1
SELECT((1, 2)) +1) CC FROM TAB1
SELECT((1, 2)) +1) CC FROM TAB1
SELECT((2, 3)) CC FROM TAB1

SELECT SUM(CC) FROM (2, 3) CC

정답은 2+3 = 5

1/24/60 -> 1분, 1/24/(60/10) -> 10분

CASE 표현

SEARCHED CASE EXPRESSION

CASE WHEN 조건식 THEN 조건식=참 -> 적용할 값 ELSE 조건식=거짓 -> 적용할 값 END

☝️ SELECT loc, CASE WHEN loc = 'new york' THEN 'east' ELSE 'etc' END as AREA FROM dept;

SIMPLE CASE EXPRESSION

CASE 컬럼명 WHEN 조건식 THEN 조건식=참 -> 적용할 값 ELSE 조건식=거짓 -> 적용할 값 END

☝️ SELECT loc, CASE loc WHEN 'new york' THEN 'east' ELSE 'etc' END as AREA FROM dept;

SQL Server TOP(N)

TOP(N) 질의문에서 N에 해당하는 값이 동일한 경우 함께 출력되도록 하는 WITH TIES 옵션을 ORDER BY절과 함께 사용해야 한다.

SELECT TOP(3) WITH TIES 팀명, 승리건수
FROM 팀별 성적
ORDER BY 승리건수 DESC;

profile
🧑‍💻백엔드 개발자, 조금씩 꾸준하게
post-custom-banner

0개의 댓글