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보다 작으면 -1SIGN(-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. 예제(추후보강)

좋은 웹페이지 즐겨찾기