SQL

    [SQL] 테이블 생성하기(DROP DATABASES, CREATE DATABASE)

    DROP DATABASE IF EXISTS pokemon; CREATE DATABASE pokemon; USE pokemon; CREATE TABLE mypokemon( number INT, name VARCHAR(20) type VARCHAR(10) height FLOAT weight FLOAT ); INSERT INTO mypokemon(number, name, type, height, weight) VALUES(10,'caterpie', 'bug', 0.3, 2.9) (25, 'pikachu', electric, 0.4, 6) ; 번개표시 누르기 SELECT * FROM mypokemon;

    [SQL] NULL처리 (IFNULL, NVL, ISNULL, COALESCE, NULLIF )

    오늘은 SQL에서의 다양한 Null처리 함수를 살펴보겠습니다 ~~ ✨ DBMS별로 지원하는 함수가 다르니, 필요한 함수를 잘 외워놓는게 중요할것같아요~~ 먼저, IFNULL, NVL, ISNULL은 다 같은 함수입니다! Null값을 다른 대체값으로 반환하는 함수에요~ 단, DBMS별로 사용하는 함수가 다릅니다! -> MySQL , Oracle, MS SQL 별로 각각 어떤 함수인지 볼까요? IFNULL (MySQL) 해당 Column의 값이 NULL을 반환할 때, 다른 값으로 출력할 수 있도록 하는 함수이다. 기본 구조 SELECT IFNULL(Column명, "Null일 경우 대체 값") FROM 테이블명; NVL (Oracle) * NVL 또는 ISNULL(표현식1, 표현식2) : 표현식1 의 결과값..

    [SQL튜닝] 효율이 좋은 쿼리 (대용량 데이터 처리)

    오늘은 대용량 데이터를 추출시 가장 중요한 성능이 좋은 쿼리 메모리를 덜쓰고, 빠르게 데이터를 추출하는 SQL 쿼리에 대해서 알아보겠습니다. SQL 쿼리를 효율적으로 짜는 것은 무엇일까요? 쿼리를 잘짠다? = 빨리 돈다, 메모리를 덜 쓴다 빨리돌고 메모리를 덜 쓰려면? = 필터링을 많이 한다 = join/group by하는 데이터는 최소한으로 한다 그렇습니다. 대용량의 데이터일 수록 데이터를 "작게"만들어야 하는 것이 중요해집니다. 대용량 데이터 SQL 튜닝의 핵심 데이터를 작게 만든다 1. 데이터를 작게 만들기 최대한 데이터를 한번에 잘라낼 수있게 작은 데이터가 join 이되고 group by 가 될 수있도록 2. 두개 이상 테이블 join시, "join 전"에 where/group by 등의 조건을 ..

    [SQL] update, set - 테이블 내 데이터 값 변경하기

    update 문법 UPDATE [table name] SET [컬럼] = 변경할 값 WHERE [컬럼] 조건 update enrollments set year = 2015 where id >=20 and id

    Mysql 에 csv 파일 불러오기

    테이블 만들기 show databases; show tables; create table dataset( InvoiceNo VARCHAR(20) , StockCode VARCHAR(20) , Description VARCHAR(200) , Quantity int , InvoiceDate DATE , UnitPrice float , CustomerID VARCHAR(20) , Country VARCHAR(50) ); LOAD DATA INFILE 'C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\data.csv' INTO TABLE dataset FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 ROWS; Table에 Colume 추..

    [SQL튜닝] SQL 성능 튜닝 기초 (INDEX, Cardinality, 점조건, 선분조건)

    SQL의 성능을 높이기 위해 처리범위를 설정하는 것이 관건이다. Why? 쿼리유형에 따라 성능 및 부하가 많이 차이날수 있기 때문이다. 기본적으로 튜닝을 하려면 통계정보/인덱스/쿼리호출방식/서비스유형 등이 연계되어 있는 부분이라 에 대해서 공부하여 검토해야한다. (단순히 쉽게 특정 조건만 넣거나 힌트제어를 한다고 빨라지는게 아니라서...) 그래도 몇가지 큰 틀은 있으니 함께 살펴보자! 대부분의 SQL 속도 저하는 SELECT와 WHERE 조건절에서 발생하는데, 오늘은 SELECT, WHERE 절에서 성능을 높일 수있는 2가지 조건을 살펴본다 1. 점조건 : IN, = 점조건이 성능개선에 도움이 된다. 그래서 선분조건이더라도 점조건으로 바꿔서 호출하는경우가 많다 2. 선분조건(범위조건) : Between,..

    hackerrank

    hackerRank _ top earner_MAX 내가 쓴 답 SELECT months*salary AS earnings , COUNT(employee_id) AS count FROM EMPLOYEE GROUP BY 1 ORDER BY months*salary DESC LIMIT 1; 선생님 답 SELECT months*salary , COUNT(*) FROM EMPLOYEE WHERE months*salary = (SELECT MAX(months*salary) FROM EMPLOYEE) GROUP BY 1 HackerRank_Weather15 _ ROUND, 서브쿼리 SELECT ROUND(LONG_W,4) FROM STATION WHERE LAT_N = (SELECT MAX(LAT_N) FROM ST..

    실무 SQL 예제 2

    중요! Q19. 20년 7월 일별 고과금 유저 TOP3 SELECT FROM ( SELECT DATE_FORMAT(purchased_at - INTERVAL 9 HOUR, '%Y-%m-%d') AS d_date , customer_id , SUM(price) , DENSE_RANK() OVER(PARTITION BY DATE_FORMAT(purchased_at - INTERVAL 9 HOUR, '%Y-%m-%d') ORDER BY SUM(price) DESC) AS rank_rev FROM fastcampus.tbl_purchase WHERE purchased_at >='2020-07-01' AND purchased_at < '2020-08-01' GROUP BY 1, 2 ) AS t1 WHERE ran..

    실무 SQL 예제

    Q1 SELECT SUM(price) FROM tbl_purchase WHERE purchased_at LIKE '2020-07%' ; SELECT SUM(price) FROM tbl_purchase WHERE purchased_at >= '2020-07-01' AND purchased_at< '2020-08-01'; Q2 2020 07의 MAU? SELECT COUNT(DISTINCT customer_id) FROM tbl_visit WHERE visited_at LIKE '2020-07%'; #Q3 7월의 ACTIVE 유저의 paying rate? SELECT COUNT(DISTINCT customer_id)/(SELECT COUNT(DISTINCT customer_id) FROM tbl_visit ..

    Transaction 과 TCL

    TCL : Transaction Control Language COMMIT ROLLBACK SAVEPOINT -- 트랜잭션 시작하기 START TRANSACTION; -- 트랜잭션 확정하기 COMMIT; -- 트랜잭션 이전으로 돌아가기 ROLLBACK; -- 세이브포인트 만들기 SAVEPOINT 세이브포인트 이름; -- 세이브포인트로 돌아가기 ROLLBACK TO 세이브포인트