SQL 15

[SQL] 인기있는 아이스크림

https://school.programmers.co.kr/learn/courses/30/lessons/133024 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr -- 코드를 입력하세요 SELECT FLAVOR FROM FIRST_HALF ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID ASC FLAVOR를 선택한 다음에, 가격으로 내림차순 정렬하고, ID로 오름차순 정렬하면 끝! 쉬운문제 !

프로그래머스 2024.03.04

[SQL] 과일로 만든 아이스크림 고르기

https://school.programmers.co.kr/learn/courses/30/lessons/133025 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 테이블 2개를 활용해야 하는데 어찌 레벨 1에 있는가 !! 서브쿼리를 이용해서 풀었다 . 정답 코드 SELECT FLAVOR FROM FIRST_HALF WHERE FLAVOR IN (SELECT FLAVOR FROM ICECREAM_INFO WHERE INGREDIENT_TYPE = 'fruit_based') AND TOTAL_ORDER >= 3000 ORDER BY TOTAL_ORDER DE..

프로그래머스 2023.04.06

[SQL] 3월에 태어난 여성 회원 목록 출력하기

https://school.programmers.co.kr/learn/courses/30/lessons/131120 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 코드 SELECT MEMBER_ID, MEMBER_NAME, GENDER, TO_CHAR(DATE_OF_BIRTH,'YYYY-MM-DD') AS DATE_OF_BIRTH FROM MEMBER_PROFILE WHERE TO_CHAR(DATE_OF_BIRTH,'MM') = '03' AND GENDER = 'W' AND TLNO IS NOT NULL ORDER BY MEMBER_ID TO_CHA..

프로그래머스 2023.04.06

[SQL] 즐겨찾기가 가장 많은 식당 정보 출력하기

https://school.programmers.co.kr/learn/courses/30/lessons/131123 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음에 내가 짠 코드 1. GROUP BY 사용해서 음식 종류별로 묶기 2. 음식 종류를 기준으로 내림차순 정렬 -> 별점이 가장 높은걸 뽑아야하는데 . . 한번에 수행 불가 서브쿼리를 무조건 사용했어야했음 !! 근데 결과에 진짜 별점 높은 애들이 많이 뽑혀서 맞게 푼줄 알았다 ㅎ -- 코드를 입력하세요 SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES FRO..

프로그래머스 2023.04.06

[SQLite3] DDL 실습 ( CREATE / RNAME / ADD / DELETE ) / CSV 파일 가져오기

VSCODE에서 SQLITE3 EXTENSION으로 실습하였습니다 ! CSV 파일을 sqlite로 가져오는 방법 1. 폴더에 코드를 실행할 sql 파일 / 만든 테이블을 저장할 sqlite3 파일 / 활용할 csv 파일을 넣어 놓는다 2. 미리 csv 파일을 담을 테이블을 sql 파일에만들어둔다. CREATE TABLE HEROES( id INTEGER PRIMARY KEY AUTOINCREMENT, 이름 TEXT NULL, 직업 TEXT NULL, 능력 TEXT NULL, 국적 TEXT NULL, 소속회사 TEXT NULL, 나이 INTEGER NULL, 가입날짜 DATE NULL ); open Database로 테이블이 제대로 생성됐는지 확인 잘 생성됐다 ! 3. csv 파일 테이블에 불러오기 터미널..

SQL 2023.04.05

데이터베이스 성능 / 인덱스

데이터베이스 성능이란? 클라이언트(사용자) 요청에 대한 응답시간과 시간당 처리 할 수 있는 처리량이다. 1. Current User : 동시사용자 (1) Active User : 서버에 부하를 발생시키는 사용자 (클릭+이동) (2) Inactive User : 서버에 요청을 보내고 있지 않은 사용자 (그냥보기) 2. TPS(Transaction Per Second) : 1초에 몇개의 트랜잭션을 처리했는가 3. Response Time : 요청 한 후부터 응답을 받을 때 까지의 시간 4. Resource : 한정된 값을 가진 시스템 구성 요소 (RAM, Memory) 데이터베이스 성능의 특성 경합부하 구간에서 Response Time이 급격히 증가함. TPS가 꺾이기 시작하는 구간부터가 고부하구간임. 성능..

SQL 2022.10.10

백업 및 복구

로그 선행 기입 기법 (write-ahead logging, WAL) 시스템에서 모든 수정은 적용 이전에 로그에 기록된다. 데이터베이스의 데이터 파일을 로그 레코드로 사용하여 동기화 디스크에 연속해서 쓰기 때문에 무작위로 쓰는 것 보다 성능이 좋다. 데이터베이스 버퍼를 이용해 데이터 파일 변경을 효율적으로 진해애함. 데이터베이스 버퍼 로그 - 버퍼 - 데이터 갱신 대상의 데이터를 포함한 블록이 버퍼 풀에 있는지 확인. 없을 경우 데이터 파일로 부터 해방 블록을 읽어 들임. 버퍼 풀 내에 해당 블록을 갱신함. ( Dirty 발생 ) / Dirty의 내용이 데이터 파일에 적용되는 거임. 갱신 내용이 Commit과 함께 로그에 기록. 갱신 되었지만 데이터 파일에 쓰이지 않은 블록은 Dirty 블록이 된다. 갱..

SQL 2022.10.09

테이블 설계

테이블이란 ? 관계형 데이터베이스에서 데이터를 관리 및 저장하는 장소 데이터의 효율적인 관리 및 적절한 조작이 매우 중요하다. 기본키(PRIMARY KEY)의 중요성 특정 집합에서 특정 행을 유일하게 식별할 수 있는 속성 기본키는 절대 중복되면 안된다. 반드시 기본키를 설정해야함 / 단, 업무상 이유로 기본키가 없는 테이블이 존재하는 곳도 있음 정규형 : 테이블을 정의하는 기본 형태 정규형을 제대로 지키지 않으면 정규화 위반임. 정규형의 목적은 제대로된 데이터 모델링을 설계하기 위함이다. 성능 향상이 아님. 1. 제 1정규형(1NF) 위반 테이블의 셀에 여러개의 값을 포함하지 않는다. ex) 연락처 컬럼에 010-1222-2222,qwer@qwer.com 이렇게 두가지 값이 포함되면 안됨. -> 해소 방..

SQL 2022.10.09

트랜잭션

트랜잭션이란? 데이터베이스 관리 시스템에서 상호작용의 단위 / 어떤 요청이 끝난 상태 데이터베이스 기능 중 가장 큰 기능 임. 쿼리 하나가 실패하면, 데이터베이스 시스템은 전체 트랜잭션 또는 실패한 쿼리를 롤백한다. 트랜잭션의 4대 특징 ACID 1. 원자성(Atomicity) : 무조건 전부 성공하거나, 전부 실패해야함 COMMIT : 처리 확정 ROLLBACK : 문제 발생 시 첫 과정 직전 상태로 복귀 2. 일관성(Consistency) : 데이터 조작 전후에 일관성 유지 필요 3. 고립성(Isolation) : 여러 사용자가 동시에 데이터 조작을 실행할 경우 각 처리가 모순 없이 실행되어야함. 4. 지속성(Durability) : 한번 데이터가 변하면 그 상태를 유지하는 것. 트랜잭션이 Commi..

SQL 2022.10.09

연습문제풀이

PRODUCTS 테이블에서 LIST_PRICE의 가격이 평균 가격보다 큰 행(집합)의 PRODUCT_ID, PRODUCT_NAME, LIST_PRICE 컬럼을 구하는 SELECT문을 작성하고 PRODUCT_NAME으로 정렬하라. SELECT A.PRODUCT_ID, A.PRODUCT_NAME, A.LIST_PRICE FROM PRODUCTS A WHERE A.LIST_PRICE > ( SELECT AVG(K.LIST_PRICE) FROM PRODUCTS k) ORDER BY A.PRODUCT_NAME; 먼저 AVG(LIST_PRICE) 구하는 서브쿼리를 이용하여 풀어야했음. 그리고 메인 쿼리에서 PRODUCT_NAME으로 정렬함. CUSTOMERS 테이블에서 CREDIT_LIMIT의 값이 가장 큰 10건..

SQL 2022.10.05