SQL 27

[코딩테스트] Level3

이제 중급자 코스...> FROM A(NULL값이있는테이블) RIGHT JOIN B(NULL값이 없는 테이블) LEFT JOIN => FROM A(NULL값이 없는 테이블) LEFT JOIN B(NULL값이 있는 테이블) 문제2. 관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다. ..

SQL 2023.09.07

[코딩테스트] Level2

※ 도전을 두려워하지 말고 부딪혀보자! 틀려도 너무 연연해하지 않기. LEVEL1 복습 1. IF(조건, 참,거짓) 2. DATEDIFF(마지막날짜, 시작날짜) = 마지막날짜 - 시작날짜 일 수 구해줌 3. CASE WHEN 조건문 THEN 참일경우 결과값 ELSE 거짓일경우결과값 END AS 결과를 저장할 변수명 4. date_format(날짜변수, '%Y-%m-%d') 시간빼고 날짜 출력해줌. 5. WHERE date_format(날짜변수, '%Y-%m')='xxxx-xx'; 문제1. 동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요. ⭐⭐⭐⭐⭐문제2. 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를..

SQL 2023.09.06

[참고] MySQL INDEX

🐕‍🦺 인덱스 데이터베이스의 동작 속도를 높혀준다. 일부 스타트업은 백앤드 개발자가 DB를 관리하는 경우가 있다. 🐕‍🦺 인덱스 종류 클러스터형 인덱스 테이블에 기본키를 지정할 때 기본키 값에 따라서 해당 테이블을 잘 검색할 수 있도록 클러스터형 인덱스가 자동으로 구성된다. 이때 PRIMARY KEY값에 맞춰서 데이터 저장 순서를 재구성한다. 예를 들어서 영어사전을 보면 알파벳 순서대로 정렬하듯이, 이렇게 하면 데이터를 찾는 속도가 빨라진다. 즉 클러스터형 인덱스는 기본키에 따라서 최대 하나가 테이블당 만들어진다. ☞ 추가/ 삭제 불가능 보조인덱스 직접 테이블마다 우리가 추가/ 삭제할 수 있다. 이 보조 인덱스는 물리적인 데이터의 저장 위치를 바꾸는 것은 아니다. 일반 책의 목차 같은 것이고, 이를 통해..

SQL 2023.08.30

[문제풀이] 파이널 테스트

🐶 파이널테스트 문제1. 메인 카테고리, 서브 카테고리에 대해, 평균할인가격과 평균할인율을 출력해보기(이중그룹핑) 문제2. 판매자별, 베스트상품 갯수, 평균할인가격, 평균할인율을 베스트상품 갯수가 높은 순으로 출력해보기 ⭐ 문제3. 각 메인 카테고리에서 베스트 상품 갯수가 20개 이상인 판매자의 판매자별 평균할인가격, 평균할 인율, 베스트 상품 갯수 출력해보기 → 오답 ⭐ 문제4. 'items' 테이블에서 'dis_price'가 50000 이상인 상품들 중, 각 'main_category'별 평균 'dis_price'와 'discount_percent' 출력해보기

SQL 2023.08.29

SUBQUERY

🐶 서브쿼리 SQL구문 안에 별도로 SQL구문이 포함되어 있는 쿼리 보통 SQL구문 안에서 ()안에 또 다른 SQL구문을 추가하는 경우를 서브쿼리라고 한다. 많이 사용되진 않지만, 대용량 데이터에서는 쿼리문을 여러 번 돌리는 경우가 되기 때문에 성능 상의 이슈로 그렇게 많이 사용되지는 않는다. 다만, SQL문을 전문적으로 쓰는 사람들은 가끔 쓴다. 자주 사용하지 않아도 이게 서브쿼리인지는 알 필요가 있다. 사용하는 이유??? 테이블과 테이블 간 검색시 검색 범위 (테이블 중 필요한 부분만 먼저 가져오도록)를 좁히는 기능에 주로 사용되거나 또는 어떤 테이블 내에서 검색을 하기보다는 테이블 중에 필요한 부분만 먼저 추출하고 그 안에서 내가 원하는 데이터를 추출할 때, 이럴 때 쓰이는 것 기본적으로 테이블과 ..

SQL 2023.08.28

HAVING

환경 구축 bestproducts 데이터베이스 생성 후, bestproducts_items.sql bestproducts_ranking.sql 으로 테이블 만들기 🐕 HAVING 환경설정 해당 데이터는 G마켓에 대한 각각의 카테고리 또 서브 카테고리 별로 상품들이 들어가 있는데, 가격, 순위 이런 정보들을 크롤링해서 자동으로 이를 MYSQL DB로 만든 것이다. HAVING절은 GROUP BY 안에서만 쓸 수 있다. 간단하게는 GROUP BY 를 쓴 SQL구문에서 그 안에 집계함수를 기반으로 한 조건 비교를 할 때 에는 GROUP BY뒤에 HAVING 절을 써서 조건 비교를 할 수 있음. SELECT provider FROM items GROUP BY provider HAVING COUNT(*) >=10..

SQL 2023.08.28

[🎉중급🎉] 외래키

🐶 외래키 외래키는 일종의 제약사항이다. 외래키를 설정해두면 데이터를 넣거나 삭제할때 제약사항이 따르게 된다. 해당 제약에 맞춰서 넣고 삭제한다. 꼭 써야하지는 않지만, 외래키를 통해서 제약사항을 두면 데이터의 정확성, 신뢰성 이런 것들이 올라간다. 기본키와 함께 여러 테이블에 데이터를 넣을때 외래키를 통해서 연결하는 경우가 있어서 외래키를 기본적으로 알고 있어야 한다. 이해하기 위해서는 이렇게 하면 SQLDB라는 데이터베이스가 만들어진다. 설명 : 이 쿼리를 보면 SQLDB가 이미 있다면 삭제하고 다시 만들어달라. 그리고 userTb1이 이미 있다면 삭제하고 다시 테이블을 만들어달라. 그 다음 또 테이블을 생성하고 데이터를 테이블에 넣는 SQL쿼리 구문이다. 이렇게 하면 테이블에 buy테이블과 user..

SQL 2023.08.28

[실전] GROUP BY, AS, ORDER BY

🐕‍🦺 실습문제(GROUP BY) 그룹화를 하는 이유: 그룹화를 해서 각 그룹별로 집계를 하기 위함. ※ GROUP BY는 거의 맨 끝에 쓴다. SELECT 컬럼 FROM 테이블명 GROUP BY 컬럼; # 테이블의 컬럼 값을 그룹핑 하여라. SELECT COUNT(*) FROM 테이블명 GROUP BY 컬럼; # 그룹이 몇 개인지 출력해줌. SELECT COUNT(*) FROM 테이블명 WHERE 조건문 GROUP BY 컬럼; # 조건에 맞는 데이터를 컬럼별로 그룹화하라. 문제1. 영화 테이블에서 매겨진 등급 종류들을 모두 출력하시오 (GROUP BY사용) 문제2. film에 매겨진 등급 종류에 따른 영화 개수를 모두 출력하라. 문제3. 영화테이블에서 영화가 pg또는 g등급의 영화 수를 각 등급별로 출..

SQL 2023.08.28

[실전] LIMIT, COUNT, DISTINCT, 집계함수

🐕‍🦺 WORKBENCH에서 데이터 불러오기 sakila데이터베이스를 어떻게 워크벤치를 통해서 내 DB에 넣는가? 스키마 처리 > DATA를 처리 sakila-schema를 먼저 선택해서 정상적으로 실행을 하면 이와 같이 녹색으로 화면이 뜰 것이. sakila-data도 위와 똑같은 방식으로 한다. 🐕‍🦺 실습문제(LIMIT, COUNT(), DISTINCT) 현업에서는 이미 있는 데이터에서 내가 원하는 데이터를 끄집어내는 역할을 많이 할 것이다. SQL코딩테스트쪽에서도 결국은 SELECT를 잘 조합하여서 원하는 데이터를 뽑아내는 쿼리문제이다. SELECT구문은 추가적인 여러가지 SQL구문이 있다. 그리고 내가 원하는 데이터를 뽑아내려면 그런 여러가지 SQL구문을 조합해야 한다. 그런 조합하는 역량이 필..

SQL 2023.08.25