[패스트캠퍼스] SQL 강의 2주차

Jongwook Yoon·2022년 9월 4일
0

강의수강

목록 보기
2/5

[내일배움카드취업]

Day 4

Where (비교)
연산자 종류
비교: =, !=, >, >=, <, <=
ex. select number
from mypokemon
where name='pikachu'
또는 where speed > ?

논리:
And: Where speed <= AND type= ?
OR: where type='bug' OR type= ?
NOT: where speed <= AND NOT(type=?)

기타 주요 연산자:
BETWEEN: WHERE speed BETWEEN A AND B
IN: Where type IN ('b', 'n') => OR로 보면 된다.
LIKE: 컬럼이름 LIKE 검색할 문자열
%: 0개 이상의 문자
: 1개
__ : 2개
% : 1개 이상의 문자
%e : e, ee, eevee, apple, pineapple (e로 끝나는 문자열)
e% : e로 시작 %e%: e가 포함된
-e : e로 끝나고 앞에 1개의 문자
%e : e로 끝나고 앞에 1개 이상 문자열
%_e
% : e를 포함하고 앞뒤로 1개 이상 문자
Select name Fromo mypoketmon where name like '%chu'
a가 포함, a로 끝나지 않는 -> '%a%' a를 포함하지만 뒤에 1개 이상 문자열이 와야한다는 의미
%a%
와 의미가 같음.

NULL: IS NULL or IS NOT NULL 만 = or != 사용 못함.

Day 5
ORDER BY: 컬럼이름(복수개 입력가능) ASC (기본조건) 반대는 DESC (내림차순)
ex. ORDER BY attack DESC, defense 첫 컬럼부터 차례대로 정렬조건에 맞게 진행 첫 정렬에서 값이 같은 애들만 두번째 조건에서 정렬이 일어남.
번호로도 컬럼 지정가능 ex. ORDER BY 3 DESC, 4;

RANK: RANK () OVER (ORDER BY 컬럼이름) ->쿼리 안에서만 유효 테이블엔 영향 X, SELECT 절에 위치
ex. SELECT 컬럼이름,---, RANK() OVER (ORDER BY 컬럼이름 DESC) $정렬을 해주는게 아닌 랭크만
RANK () OVER (ORDER BY attack DESC) AS attack_rank -> attack_rank라는 새로운 컬럼에 랭크 순서가 보여짐
유사한 함수: DENSE_RANK, ROW_NUMBER => RANK와 사용하는 형식 동일 $DENSE_RANK와 RANK는 공동 순위가 있을 때 같은 공동 순위를 입력함 그러나 row_number는 건너뜀 ex 1,2,2,3 => 1,2,3,4

문자열 데이터 처리
LOCATE: LOCATE("A", "ABC") => A가 몇변째야? 여러개면 가장 빠른 순번, 없다면 0을 반환 "ABC"대신 컬럼이름을 넣어도 가능 / SELECT문이랑 같이 씀
SUBSTRING: SUBSTRINg("ABC", n) n번째 문제부터 반환, 이것도 컬럼이름 사용 가능 / SELECT문이랑 같이 씀 / 만약 n이 문자열보다 크면 NULL 반환
RIGHT, LEFT: 오른쪽or 왼쪽에서 n번쨰까지
UPPER, LOWER: 소->대문자 / 대->소문자
LENGTH: 문자열 길이 반환
CONCAT: 문자열 합치기
REPLACE: REPLACE("ABC", "A", "Z") => A를 Z로 바꿔

숫자형 데이터 처리
ABS(숫자) -> 절댓값 반환
CEILING, FLOOR: 숫자를 정수로 올림/내림 반환
ROUND, TRUNCATE: (숫자, 자릿수): 소숫점 자릿수까지 반올림/버림해서 반환
POWER: (숫자A, 숫자B) => A^B
MOD: A/B 의 나머지

날짜형 데이터 처리
NOW(날짜와 시간), CURRENT_DATE, CURRENT_TIME
YEAR, MONTH, MONTHNAME ex. YEAR(NOW())
DAYNAME, DAYOFMONTH, DAYOFWEEK(날짜의 요일: 일요일은 1), WEEK(해당 연도에 몇번째 주)
HOUR, MINUTE, SECOND
DATA_FORMAT(날짜/시간,형식): 날짜/시간을 다른 형식으로 바꿔서 ('1996-11-06 15:34:58','%Y년 %m월 %d일 %H시 %i분 %s초')
DATEDIFF, TIMEDIFF 날짜, 시간 차이

DAY 6
GROUP BY:
SELECT 컬럼이름, -- , 그룹함수
FROM 테이블 이름
WHERE 조건식
GROUP BY 컬럼 이름
HAVING 조건식

그룹함수:
1) COUNT(컬럼이름) 2)SUM(컬럼 이름) 3)AVG(컬럼이름) 4)MIN 5)MAX

0개의 댓글