SQL Day 2_기본 함수
Day 1 복습
- DBMS 중 MySQL은 어떤 유형이고 왜 그 유형이 많이 쓰일까?
- SQL이란?
- DBMS 구조는?
- DB 조작 정의어의 종류는?
- 테이블 조작어 종류는?
- 트랜잭션 제어어 종류는?
- 데이터 제어어 종류는?
- 테이블 명명시 주의사항은?
- PRIMARY KEY의 특징은?
- PRIMARY KEY 설정 방법은?
1. 오늘 배운 내용
컬럼 별칭 정하기(as), 출력할 row 개수 정하기(limit), 오름차순/내림차순(order by str asc, desc), 숫자형함수, 문자형함수, 날짜형함수를 배웠다.
/*2019년 개봉 영화 중 상영횟수가 가장 많은 순서로 출력하여
그와 관객수, 매출액, 상영극장수를 비교해본다.*/
select ranks, movie_name,showing_count, screen_num, audience_num, sale_amt
from box_office
where release_date like '2019%'
order by screen_num desc, ranks asc; #오름차순 asc 내림차순 desc
#위 조회 수량 중 top100만 본다,
select ranks, movie_name, screen_num, audience_num, sale_amt
from box_office
where release_date like '2019%'
order by screen_num desc, ranks asc
limit 100;
2. 이해하기 어려웠던 부분
A) 숫자형 함수 중 로그
숫자형 함수 | 반환값 |
---|---|
EXP(x) | 자연로그의 밑 e의 x승 |
LN(x) | 밑이 e(자연상수)인 x의 로그 |
LOG(b, x) | 밑이 b(생략하면 자연상수가 자동으로 들어간다)인 x의 로그, b 생략 시 밑은 e |
LOG10() | 밑이 10인 x의 로그 |
LOG2() | 밑이 2인 x의 로그 |
B) 문자형 함수 RPAD, LPAD 활용
프로그래밍에서 데이터 값의 자릿수를 맞추어야 할 때 유용한 문자열 함수 RPAD, LPAD이다.
RPAD, LPAD 함수 | 반환값 |
---|---|
LPAD/RPAD(str, len, padstr) | str 문자열을 len 길이만큼 반환하는데, 자리가 남으면 왼쪽/오른쪽을 padstr 문자로 채움 |
select lpad('Kim', 8, '_'); #output: _____Kim
select rpad('Kim', 8, '_'); #output: Kim_____
3. 기억해야할 부분
1) 구별하여,
A) 인덱스
RPAD, LPAD 함수 | 반환값 |
---|---|
INSTR(str, substr) | str 문자열에서 substr 문자(열)를 찾아 시작위치 반환 파이썬과 다르게 0부터가 아니다. |
LOCATE(substr, str, pos) POSITION(substr IN str) | str 문자열에서 substr 문자(열)를 찾아 시작 위치 반환, pos 입력 시 해당 위치부터 검색(POS는 시작점) |
2) 잘 쓸 거 같아,
A) 숫자형함수
숫자형 함수 | 반환값 | 사용 예시 |
---|---|---|
SIGN() | 매개변수가 0보다 크면 1, 0이면 0, 0보다 작으면 -1 | SIGN(-3) → -1 SIGN(3) → 1 |
B) 문자형 함수
- CONCAT(), CONCAT-WS() 자료끼리 연결해서 반환
- LTRIM(),RTRIM() 공백 제거
- TRIM()
- SPACE() 공백 설정
- LEFT(),RIGHT(),MID() 슬라이싱
- RPLACE() 찾아서 바꾸기
CONCAT('자료A', '(' , '자료B', ')'); #자료A(자료B)
CONCAT_WS('-', '자료A', '자료B'); #자료A-자료B sep과 비슷하다.
SPACE(N) #N개의 공백문자 반환
LTRIM(str), RTRIM(str) #왼, 오 각각 공백 제거 후 반환
select TRIM(BOTH | LEADING | TRAILING 'remstr' FROM str);
#BOTH, LEADING(=LTRIM), TRAILING(=RTRIM) 중 하나를 골라 사용한다.
#remstr을 생략하면 공백 제거와 같다.
LEFT(str, len), RIGHT(str, len), MID(str, pos, len)
#슬라이싱
REPLACE(str, from_str, to_str) #from_str에서 to_str로 교체
C) 날짜형 함수
- CURDATE() + CURTIME() = NOW()
- DATE(now()) #연월일 반환
- TIME(now()) #시분초 반환
- NOW()와 SYSDATE() 차이
- date에서 연,월,분기,몇주차인지 반환 가능
- time에서 시간, 분, 초 반환 가능
- date에서 더하거나 뺀 연월일 반환 가능
- date1와 date2를 뺀 일수 반환 가능
날짜형 함수 | 반환값 |
---|---|
DAYNAME(date) | date의 요일 반환 |
DAYOFWEEK(date) | 요일을 숫자로 반환 1(일요일) ~7(토요일) |
LAST_DAY(date) | 속한 월의 마지막연월일 반환 |
ADDDATE(date, INTERVAL expr unit) SUBDATE(date, INTERVAL expr unit) | date에 expr unit을 더한/뺀 날짜 반환, expr unit 들어갈 수 있는 형식 expr unit 들어갈 수 있는 형식 |
DATE_FORMAT(date, format) | date를 format에 명시된 형태로 변환해 반환 |
YEARWEEK(date, mode) | date가 속한 연도와 주차 반환 mode에 들어갈 형식 |
4. 예제(추후보강)
Author And Source
이 문제에 관하여(SQL Day 2_기본 함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sungrok7/SQL-Day-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)