본문 바로가기

파이썬으로 퀀트 프로그램 만들기 project/MySQL

(11)
MySQL - 윈도우 함수 윈도우 함수 사용방법 [윈도우 함수] over ([partition by [열 리스트]] order by [정렬용 열 리스트]) 여기서 partition by는 생략 가능합니다 #윈도우 함수로 사용할 수 있는 함수 -윈도우 전용 함수 rank, dense_rank, row_number 등 rank: 같은 순위인 행이 여러개 있으면 후순위로 건너뜀 예) 1위가 3개인 경우: 1위, 1위, 1위, 4위, ··· dense_rank: 같은 순위인 행이 여러개 있어도 후순위를 건너뛰지 않음 예) 1위가 3개인 경우: 1위, 1위, 1위, 2위, ··· row_number: 순위와 상관없이 연속 번호를 부여 예) 1위가 3개인 경우: 1위, 2위, 3위, 4위, ··· 윈도우 전용 함수는 원칙적으로 select ..
MySQL - 테이블 결합, inner join, outer join 테이블 결합 작업에는 'join'이 사용됩니다. join의 종류를 다음과 같이 시각화할 수 있습니다. #inner join 두 테이블에서 공통되는 열을 기준으로 합칩니다. 사용 예시 select * from nameoftalbe_1 as t1 inner join nameoftable_2 as t2 on t1.col_1 = t2.col_1; → nameoftable_1 을 t1, nameoftable_2 을 t2로 가져옵니다. 두 테이블에서 t1의 col_1과 t2의 col_1을 기준으로 합칩니다. 그런데 만약 여기서 * 대신에 col_1을 쓰면 오류가 발생합니다. 두 테이블 모두다 col_1을 갖고 있기때문에 발생하는 오류입니다. 명시적으로 어디 테이블의 col_1인지 알려줘야합니다. 예를 들어 sele..
MySQL - case #case case 식은 경우에 따라 값을 구분할 수 있습니다. 사용 방법 case when [조건식1] then [식1] when [조건식2] then [식2] when [조건식3] then [식3] ··· else [식n] end else는 위에서 만족하는 조건이 없을때의 반환값입니다. 생략할 수 있지만 명시적으로 작성하는것이 바람직합니다. 사용 예시 select col_1, col_2, case when col_2 >= 6000 then 'high' when col_2 >= 3000 and col_2 < 6000 then 'middle' when col_2 < 3000 then 'low' else null end as col2_classify from nameoftable;
MySQL - like 술어, 문자열 일치, between 술어, isnull, in 술어 #like 문자열을 검색할때 등호(=)를 사용할 수 있습니다. 그러나 이것은 완전히 일치하는 경우에만 참이 됩니다. 반면에 like술어는 문자열 중 부분 일치를 검색할 때 사용할 수 있습니다. #일치의 종류 전방일치 - 검색 조건이 되는 문자열이 검색 대상 문자열의 가장 앞에 위치하고 있는 행을 선택 중간일치 - 검색 조건이 되는 문자열이 검색 대상 문자열의 어딘가에 포함되어 있으면 행을 검색하며 위치는 어디는 상관없음 후방일치 - 검색조건이 되는 무자열이 검색 대상 문자열의 가장 뒤에 위치하고 있는 행을 검색 전방일치 예시 select * from nameoftable where col_1 like 'ddd%'; → 'nameoftable'에서 'col_1'열에서 'ddd'로 시작되는 모든 문자열 데이..
MySQL - 날짜함수, extract #날짜함수 현재 날짜와 시간, 일시를 다루는 함수의 경우 from 구문이 없이 사용 가능합니다. current_date 현재 날짜 current_time 현재 시간 current_timestamp 현재 날짜와 시간 사용 예시 select current_date, current_time, current_timestamp; 결과 #extract 현재 날짜에서 년, 월, 일을 따로 추출하고 싶으면 extract구문을 사용하면 됩니다. 사용 예시 select current_date, extract(year from current_date) as year, extract(month from current_date) as month, extract(day from current_date) as day; 결과
MySQL - error code: 1175, safe update 모드 해제 방법 error code: 1175가 발생하는 이유는 SQL editor의 기본 모드가 safe update모드로 되어 있기 때문입니다. 이것은 update나 delete구문의 제한없는 사용을 방지하는 모드입니다. 이로인해 error code: 1175가 발생할 수 있습니다. 이것을 해제하기 위해서는 다음의 과정을 거쳐야합니다.
MySQL - 산술함수 #산술함수 →숫자형 데이터 처리에 사용되는 함수 함수 정의 사용 방법 abs 절댓값 abs([열 이름]) mod 정수를 n으로 나눈 나머지 mod([열 이름], [n]) round 소소를 n번째 자리까지 반올림 round([열 이름], [n]) ceil 소수를 1번째 자리에서 올림 ceil([열 이름]) floor 소수를 1번째 자리에서 내림 floor([열 이름]) 실제 사용 예시 select round(col_3,2) as c3 from nameoftable; #문자열 함수 →문자열 데이터 처리에 사용되는 함수 함수 정의 사용 방법 concat 여러 열의 문자열을 합침 concat([열 이름1], [열 이름2]) lower 모든 알파벳을 소문자로 변환 lower([열 이름]) upper 모든 알파벳을..
MySQL 기초 - 뷰 와 서브쿼리 매번 테이블을 확인할 때마다 코드를 치면 상당히 불편할 것입니다. 자주 사용하는 코드를 쿼리 단위로 저장하여 필요할 때마다 불러오는 방식이 '뷰'입니다. #view 생성 create view [뷰 이름([뷰의 열 이름1], [뷰의 열 이름2], ···)] as [쿼리]; create view nameofview (col_1, counting) as select col_1, count(*) from nameoftable group by col_1; #view 확인 저장된 view확인하기 select * from nameofview #view 삭제 drop view nameofview; #서브쿼리 서브쿼리란 쿼리 내의 쿼리이며, 일회용 뷰를 의미합니다. 즉, 뷰를 정의하는 구문을 그대로 다른 구 안에 삽입하..