일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 개발 프로젝트
- 자바스크립트 코딩테스트
- 프로그래머스코테
- 프론트엔드부트캠프
- 깃
- 국비지원취업
- 부트캠프
- 패캠
- FE
- 프로그래머스 JS 코테
- pokeapi
- 패스트캠퍼스
- 프로그래머스
- 영상처리
- 프로젝트
- 코딩테스트
- 딥러닝
- 깃허브
- 자바스크립트
- js코테
- 개인프로젝트
- 국비지원
- 패캠부트캠프
- 패스트캠퍼스부트캠프
- 미니 프로젝트
- Java
- 개발블로그
- JS
- 프론트엔드
- 프론트엔드개발자
- Today
- Total
가쟤의 해변일기 🐳
풀스택과정 DB - SELECT 구문 | Alias | null값 치환 | LIMIT | LIKE 본문
💡 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은 비교할 수 없는 값임 -> 비교 연산자를 못 쓴다...⭐⭐⭐
중복을 제거할 때 사용하는 키워드
- SELECT절 뒤에 바로 나온다
- 정렬이 안 된다. 별도로 정렬을 해야 한다.
- 중복값을 제거하는 연산은 서버 내부에서 연산하는데 많은 시간이 걸린다. 만약에 불가피하게 사용해야 하는 경우라면 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;