본문 바로가기

데이터분석/SQL9

MySQL CREATE, INSERT, ALTER 문법 모음 MySQL의 여러가지 CREATE, INSERT, ALTER 문법을 소개하는 문서이다. 1. 테이블 생성CREATE TABLE DB명.테이블명( [컬럼1] [데이터 타입], -- ex) INT [컬럼2] [데이터 타입], -- ex) VARCHAR(30) [컬럼3] [데이터 타입], -- ex) DATE PRIMARY KEY ([컬럼1])); 참고로 primary key를 2 설정하는 것도 가능하다.CREATE TABLE DB명.테이블명( [컬럼1] [데이터 타입], -- ex) INT [컬럼2] [데이터 타입], -- ex) VARCHAR(30) [컬럼3] [데이터 타입], -- ex) DATE PRIMARY KEY ([컬럼1], [컬럼2])); 2. 기존 테이블에 새로운 컬럼 추.. 2024. 11. 7.
쿼리 최적화 데이터 베이스에서 성능 최적화는 디스크 I/O과 관련이 많다. 즉, 성능개선을 한다고 하는 것은 디스크 I/O를 줄이는 것이 핵심이다.  인덱스를 쓰면 조회는 빨라지지만 데이터 수정, 삭제, 생성은 느려진다는 말이 있다. 그럼에도 불구하고, 인덱스를 쓰는 것이 좋다. 일반적으로 웹서비스의 경우엔 CRUD에서 R(Read)과 CUD(Create, Update, Delete)의 비율이 8:2에서 9:1이기 때문이다. API 호출을 할때, get 요청을 하면 이게 전부 R 작업에 해당하는데, 보통 get 요청이 가장 많다.  인덱스는 데이터베이스 테이블에 대한 검색 성능 속도를 높여주는 자료구조이다. 즉, 인덱스는 책에 있는 목차라고 생각하면 된다. 목차에서 원하는 주제를 찾고 페이지 번호를 찾아가듯이, 인덱.. 2024. 11. 7.
파이썬 퀀트투자(4): 한국거래소 데이터 Mysql에 적재 지난 번에 한국거래소의 업종 분류 형황 데이터를 크롤링하는 방법과 한국거래소의 개별종목 지표 데이터를 크롤링하는 방법에 대해서 알아보았습니다. 이제 이 두개의 데이터를 하나로 합친 후, Mysql에 적재할 것입니다. 먼저 두 데이터에 공통으로 존재하지 않는 종목, 즉 하나의 데이터에만 존재하는 종목을 살펴보겠습니다.(앞 글에서 사용한 코드를 그대로 이어서 사용했습니다. 전체 코드는 이 글을 참고해주세요.) 두 데이터를 set 형태로 변경한 후, symmetric_difference() 메서드를 사용하면, 하나의 데이터에만 존재하는 종목을 찾을 수 있습니다. diff = list(set(krx_sector['종목명']).symmetric_difference(set(krx_ind['종목명'])))print(.. 2024. 10. 10.
[해커랭크] SQL 심화 응용 팁들 1. SELECT 서비스쿼리에서 where 조건으로 필터링https://www.hackerrank.com/challenges/the-company/problem?isFullScreen=true select a.company_code, a.founder,(select count(distinct lead_manager_code) from lead_manager where company_code = a.company_code),(select count(distinct senior_manager_code) from senior_manager where company_code = a.company_code),(select count(distinct manager_code) from manager where com.. 2024. 9. 24.
MySQL 다운로드 및 설치하는 방법 해당 글은 MySQL 다운로드 및 설치하는 방법에 대해 설명된 글입니다. MySQL을 사용하기 위해서는 MySQL Community Server와 MySQL Workbench 2가지를 설치해야 합니다. 이 2가지의 다운로드 및 설치 방법에 대해서 알아보겠습니다. 1. MySQL community Server 설치 mysql community server를 검색한 뒤, 해당 사이트에서 아래와 같이 최신버전, OS를 선택하고, MSI Installer의 Download를 클릭한다. 그런 다음, No thanks, just start my download를 클릭하면, 파일 한개가 다운로드된다. 그 파일을 열어서 다음 순서를 따라 한다. 1. Next 2. 'I accept the terms in the Lic.. 2024. 3. 10.
[BigQuery] 신규사용자가 첫 접속날짜에 남긴 이벤트만 필터링 이글에서는 user_pseudo_id 또는 user_id를 활용해서 신규사용자가 처음 접속한 당일에 발생시킨 이벤트들만 필터링하는 방법에 대해서 알아볼 것이다. user_id를 수집하고 있지 않은 경우, 사용자를 식별할 수 있는 user_pesuo_id를 사용해야 한다.(user_id 관련 글) 이를 사용하여 사용자가 가장 처음 사이트를 접속한 날짜를 필터링하는 방법을 알아보자. SELECT user_pseudo_id, event_date FROM `프로젝트ID.events_*` WHERE event_name = 'first_visit' 위와 같이 쿼리를 작성하면, user_pseudo_id를 기준으로 'first_visit' 이벤트를 발생시킨 날짜만 필터링되어서 출력된다.('first_visit'는 유.. 2024. 2. 25.
[BigQuery] event_date 날짜 형식 변경 방법 BigQuery의 event_date 날짜 형식을 보면, 20240225 이런식으로 되어있는 걸 볼 수 있다. 이러한 날짜 형식을 변경하고 싶을 때 사용할 수 있는 문법을 정리해봤다. 1. PARSE_DATE(format_string, date_string) 이 함수는 텍스트 형식의 날짜형태를 날짜 형식으로 바꾸는 함수이다. format_string 부분에는 원본 데이터의 날짜형태를 그대로 입력해주어야한다. 예를 들어 event_date의 형태가 20240225이었기 때문에 아래와 같이 %Y%m%d 형태로 작성해주는 것이다. 다른 예시로 event_date의 형태가 24/02/25 였다면, format_string 부분에 %y/%m/%d 형태로 작성해야한다. PARSE_DATE('%Y%m%d',event.. 2024. 2. 25.
파이썬에서 MySQL 쿼리로 DB 데이터 끌어오는 방법 파이썬과 MySQL을 연동하여 DB 데이터를 끌어오는 방법에 대해서 간단하게 알아보겠습니다. 꼭 필요한 코드만 담았습니다. 또한, 끌어온 데이터로 시각화하는 방법까지 공유드리겠습니다 :) 파이썬에 MySQL 연동하는 전체 코드 import pymysql plt.rcParams['font.family'] = 'Malgun Gothic' conn = pymysql.connect(host='localhost', user='root', password='0000', db='main_db', charset='utf8') cursor = conn.cursor() sql = """ select * from user limit 5 """ cursor.excute(sql) data = cursor.fetchall() c.. 2023. 12. 17.
MySQL 내장 함수 53가지 정리 (숫자, 문자, 날짜, 논리, 집계) MySQL을 사용할 때, 사용할 수 있는 내장 함수 53가지를 준비했다. 함수 종류가 많아서 하니씩 다 찾아보기 힘든 분들을 위해 카테고리 별로 나눠서 표로 정리했다. 숫자, 문자, 날짜, 논리, 집계 5가지 카테고리로 분류된다. 내용은 예시 SQL문, 실행 결과, 데이터를 가져왔을 때 사용하는 예문으로 구성된다. 각 함수에 대한 설명은 예시에 설명해 놓았다. 숫자 관련 함수 1. ABS(number) -- 예시: 음수의 절대값 계산 SELECT ABS(-15); -- 결과: 15 -- 활용: 테이블의 특정 열에 있는 모든 값의 절대값 계산 SELECT ABS(column_name) FROM table_name; 2. CEILING(number) -- 예시: 소수점 이하를 올림 SELECT CEILING.. 2023. 11. 23.