코딩테스트를 위한 MySQL 기본 문법 정리
프로그래머스 풀며 업데이트 중 ..
1. NULL 처리하기
- NULL이 아닌 데이터 찾기
WHERE 컬럼명 IS NOT NULL
- NULL 값 치환하기 - IFNULL
SELECT IFNULL(컬럼명, '대체값')
2. DATA 날짜 관련
- datetime → date로 형변환하기
SELECT
ANIMAL_ID,
NAME,
DATE_FORMAT(DATETIME, '%Y-%m-%d') AS 날짜
- 날짜에서 각 값 추출하기
YEAR(컬럼명)
MONTH(컬럼명)
MySQL이 Oracle보다 이런 면에선 확실히 편한 듯
- 날짜에도 min, max를 적용할 수 있음 !
max(날짜컬럼명) # 젤 최근
중간 점검.
Q. 생일이 3월인 여성 회원 목록 출력하기
A. 조건이 3개인거지
- 생일이 3월. MONTH(DATE_OF_BIRTH) = 3
- 성별이 여성. GENDER = 'W'
- 전화번호가 NOT NULL. TLNO I NOT NULL
(프로그래머스 문제 중 발췌)
3. 쿼리 결과 중 특정 행만 가져오기 - LIMIT
- 결과 중 첨부터 1개만 가져오기
SELECT *
FROM 테이블명 LIMIT 1;
- 결과 중 100번째부터 10개만 가져오기
SELECT *
FROM 테이블명 LIMIT 100, 10;
- 조건절 줘서 검색결과 1개만 가져오기
SELECT *
FROM 테이블명
WHERE 조건절 LIMIT 1;
4. 카운트 관련
- count(*) - null 값까지 카운트
- count(특정열) - null 값 카운트 X
- 중복 값 제외한 행의 개수 구하기
SELECT COUNT(DISTINCT 컬럼명)
- 값 치환해서 구하기 (Null 값을 0으로 ..)
SELECT COUNT(IFNULL(컬럼명, 0))
- GROUP BY랑 사용하기
SELECT 컬럼명, COUNT(*)
FROM 테이블명
GROUP BY 컬럼명
5. 중복 제거
DISTINCT - 정렬은 안 해줌
GROUP BY - 정렬도 해줌
SELCT DISTINCT 컬럼명
6. 문자열 요리조리
- 문자열 합치기 - CONCAT
SELECT CONCAT(’안녕하세요’, ‘감사해요’) AS HELLO
컬럼 값 합치고 싶을 때 씁니당
- 문자열 자르기
SUBSTR(’문자열, ‘시작지점’, ‘길이’) : 문자열을 시작지점부터 길이만큼 추출 (길이 입력 안 하면 끝까지)
SUBSTRING(’문자열, ‘시작지점’, ‘길이’) : 위와 동일
LEFT(문자열, 길이) : 왼쪽부터 자르기
RIGHT(문자열, 길이) : 오른쪽부터 자르기
SUBSTR(STR, 1, 4) # STR의 1번째 글자부터 4개 자르기
SUBSTR(STR, -3, 3) # STR의 뒤에서 3번째 글자부터 3개 자르기
SELECT SUBSTR("test@test.com", 1, 3) as email1
, SUBSTR("test@test.com", 1, 4) as email2
, SUBSTR("test@test.com", 2, 3) as eamil3 ;
# 결과
# email1: tes (시작위치 1부터 시작하여 3번째 순서에서 자르기)
# email2: test (시작위치 1부터 시작하여 4번째 순서에서 자르기
# email3: est (시작위치 2부터 시작하여 3번째 순서에서 자르기
- 구분자 기준으로 문자열 자르기
SUBSTRING_INDEX(문자열, 구분자, 구분자 인덱스)
SELECT SUBSTRING_INDEX(STR, '/', 1) AS STR
FROM TEST_TABLE
결과: 127.0.0.1:8080/file1/img1/img01.jpg → 127.0.0.1:8000
'/' 기준으로 1번째 인덱스 값.
7. 이 문자열 포함돼있니? - LIKE, REGEXP
해당하는 문자열을 포함하니? 특정 문자 포함되어 있니?
# 특정 문자로 시작하는 데이터 검색
SELECT 필드명 FROM 테이블명 WHERE 필드명 LIKE ‘특정 문자열%’
# 특정 문자로 끝나는 데이터 검색
SELECT 필드명 FROM 테이블명 WHERE 필드명 LIKE ‘%특정 문자열’
# **특정 문자를 포함하는** 데이터 검색
SELECT 필드명 FROM 테이블명 WHERE 필드명 LIKE ‘%특정 문자열%’
특정 문자가 여러 개라면 OR을 사용해 연결해주면 된다.
WHERE 필드명 LIKE ‘%특정 문자열1%’ OR 필드명 LIKE ‘%특정 문자열2%’
그런데 아무렴 복잡하지. 이럴 땐 REGEXP 연산자를 사용한다.
특정 문자가 여러 개여도 간단히 표현할 수 있다.
WHERE 필드명 REGEXP ‘특정 문자열1|특정 문자열2’
'SQL' 카테고리의 다른 글
[프로그래머스] 주문량이 많은 아이스크림들 조회하기 - MySQL (1) | 2023.10.29 |
---|