가쟤의 해변일기 🐳

풀스택과정 DB - SELECT 구문 | Alias | null값 치환 | LIMIT | LIKE 본문

풀스택과정

풀스택과정 DB - SELECT 구문 | Alias | null값 치환 | LIMIT | LIKE

바닷가쟤 2025. 5. 19. 14:51
💡 2025 05 16 수업

1. SELECT 구문의 정렬
2. Alias 지정 (별칭)
3. null 값 치환 ifnull() 함수 ⭐
4. limit 사용법과 서버 실행 순서
5. like 연산자와 와일드카드
6. 논리 연산자, 비교 연산자

 

외래키 : 다른 Table의 PK키 → 관계 형성

  • Projection : 컬럼명을 지정해서 데이터를 가져오는 쿼리문
  • Selection : 원하는 행만 가져오는 쿼리문

논리 연산자 우선순위 NOT > AND > OR 1 - AND | 2 - !=, <> | 3 - OR

ORDER BY절 정렬은 오름차순(DEFAULT ASC) | 내림차순(DESC) ORDER BY sal; <- 오름차순 정렬 = ORDER BY sal ASC;

ORDER BY sal DESC; <- 내림차순 정렬

MySQL에서는 null이 가장 작은 값, Oracle에서는 null이 가장 큰 값

SELECT ename, job, sal, comm
FROM emp
WHERE comm != null
ORDER BY comm DESC;

-- 시맨틱 에러! : null은 비교할 수 없는 값임 -> 비교 연산자를 못 쓴다...⭐⭐⭐

 

중복을 제거할 때 사용하는 키워드

  1. SELECT절 뒤에 바로 나온다
  2. 정렬이 안 된다. 별도로 정렬을 해야 한다.
  3. 중복값을 제거하는 연산은 서버 내부에서 연산하는데 많은 시간이 걸린다. 만약에 불가피하게 사용해야 하는 경우라면 distinct를 대체하는 방법을 생각하거나 대상이 되는 테이블의 크기를 최소화 시켜놓은 후 distinct를 사용하는 방법을 고민해야 한다. 가장 대표적인 방법으로 EXIST를 활용하는 방법이 있다.

null값은 연산이 안 된다. -> 0으로 치환하고 진행해야 한다.

ifnull(comm, 0) | nvl() comm이 null이 아니면 comm 값 자체가 반환 comm이 null이면 0이 반환

 

null값은 연산 적용(+, -, /, *) 안되고 비교(=, !=, <, >)를 할 수 없다. ifnull() | is NULL, is not NULL 사용해야 한다.

MySQL에서는 null값을 가장 작은 값으로 취급되고, 오라클은 가장 큰 값으로 취급된다.

 

LIMIT 출력하는 행의 갯수를 제한 LIMIT 0, 5 : 시작은 0(처음)부터 5(개) 번째(index)가 절대 아님 !!

DB는 프로그램이 아니기 때문에 인덱싱 개념이 없고 5는 5개(개수)이다. ⭐⭐⭐

LIMIT 5 (0이 생략, 상위 5개만 출력)

SELECT문 실행 순서(서버) FROM -> WHERE -> SELECT -> ORDER BY -> LIMIT

 

!!! LIMIT절을 사용할 때 한 가지 주의해야 할 점이 있다. LIMIT절의 offset이 클 경우 성능에 큰 문

제를 일으킬 수 있다.

아래의 경우를 보자

 

SELECT * FROM 테이블 ORDER BY sal LIMIT 20000000, 10; --> 10 rows (2.57 sec)

--해결책--

SELECT * FROM table WHERE sal < 3450 ORDER BY sal DESC LIMIT 10;

728x90