MySQL 엔진 종류
·
SQL 정리
MySQL은 여러 가지 스토리지 엔진(Storage Engine) 을 지원하며, 이는 데이터가 디스크에 저장되고 처리되는 방식을 결정한다. 각각의 엔진은 성능, 트랜잭션 지원, 데이터 무결성, 잠금 메커니즘 등에서 차이가 있다.  InnoDB(기본엔진)특징: 트랜잭션 지원 (ACID 준수)외래 키(Foreign Key) 제약 조건 지원자동 복구 기능다중 버전 동시성 제어(MVCC)로 높은 동시 처리 성능사용 사례:대규모 애플리케이션, 데이터 무결성이 중요한 경우 (ex: 은행, 쇼핑몰)기본 설정CREATE TABLE example ( id INT PRIMARY KEY, name VARCHAR(50)) ENGINE=InnoDB;  MyISAM (이전 기본 엔진) 특징:트랜잭션 미지원 (비-ACID)외래..
ubuntu서버에 있는 MySQL데이터 dump후 로컬에 저장하기
·
SQL 정리
ubuntu 서버에 있는 데이터를 가져와서 로컬서버로 실행시키고 싶을때 사용하는 명령어이다. (MySQL WorkBench에서 파일을 받는 방법이 아닌 ubuntu에서 dump 한 방법을 이용하여 로컬로 받는 방법입니다.)  (해당 방법은 보안을 고려하지 않은 경우로 사용하는 방법이니 보안을 고려하는 분들은 해당 방법을 사용하는것에 대해 지양합니다.) 보통 MySQL 서버에 접속해서 쿼리를 이용해 dump 파일을 추출할 경우 --secure--file경로에만 저장이 가능하게 한다. 그러기에 해당 에러가 나오지 않는 다른 경로를 우회해야 하는데 ubuntu 최상단 경로에 dump하여 로컬로 보내는 방법이다. 해당 필자는 /tmp 경로로 저장하였다. mysqldump -u -p > /tmp/.xml 그..
3개 이상 쿼리를 조회할때
·
SQL 정리
문제 설명다음은 어느 자동차 대여 회사에서 대여 중인 자동차들의 정보를 담은 CAR_RENTAL_COMPANY_CAR 테이블과 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 자동차 종류 별 대여 기간 종류 별 할인 정책 정보를 담은 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블 입니다.CAR_RENTAL_COMPANY_CAR 테이블은 아래와 같은 구조로 되어있으며, CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS 는 각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다.Column nameTypeNullableCAR_IDINTEGERFALSECAR_TYPEVARCHAR(255)F..
COALESCE
·
SQL 정리
COALESCE 함수는 SQL에서 매우 유용한 함수로, 여러 값 중에서 NULL이 아닌 첫 번째 값을 반환하는 데 사용됩니다. 기본적으로 COALESCE는 여러 인수를 받아, 가장 먼저 NULL이 아닌 값을 찾을 때까지 인수들을 순차적으로 검사합니다.기본 구문 COALESCE(expression1, expression2, ..., expressionN)expression1, expression2, ..., expressionN: 검사할 값들입니다. 이들 중 첫 번째로 NULL이 아닌 값을 반환합니다.예제단일 값 처리:이 쿼리는 'Hello'를 반환합니다. 왜냐하면 NULL이 아닌 첫 번째 값이 'Hello'이기 때문입니다.SELECT COALESCE(NULL, NULL, 'Hello', 'World') ..
시간대를 나누는 쿼리
·
SQL 정리
문제 설명ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다.NAMETYPENULLABLEANIMAL_IDVARCHAR(N)FALSEANIMAL_TYPEVARCHAR(N)FALSEDATETIMEDATETIMEFALSENAMEVARCHAR(N)TRUESEX_UPON_OUTCOMEVARCHAR(N)FALSE보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했..
오프라인/온라인 판매 데이터 통합하기(IFNULL, UNION)
·
SQL 정리
문제 설명다음은 어느 의류 쇼핑몰의 온라인 상품 판매 정보를 담은 ONLINE_SALE 테이블과 오프라인 상품 판매 정보를 담은 OFFLINE_SALE 테이블 입니다. ONLINE_SALE 테이블은 아래와 같은 구조로 되어있으며 ONLINE_SALE_ID, USER_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE는 각각 온라인 상품 판매 ID, 회원 ID, 상품 ID, 판매량, 판매일을 나타냅니다.Column nameTypeNullableONLINE_SALE_IDINTEGERFALSEUSER_IDINTEGERFALSEPRODUCT_IDINTEGERFALSESALES_AMOUNTINTEGERFALSESALES_DATEDATEFALSE동일한 날짜, 회원 ID, 상품 ID 조합에 대해..
저자 별 카테고리 별 매출액 집계하기
·
SQL 정리
문제 설명다음은 어느 한 서점에서 판매중인 도서들의 도서 정보(BOOK), 저자 정보(AUTHOR) 테이블입니다.BOOK 테이블은 각 도서의 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다.Column nameTypeNullableDescriptionBOOK_IDINTEGERFALSE도서 IDCATEGORYVARCHAR(N)FALSE카테고리 (경제, 인문, 소설, 생활, 기술)AUTHOR_IDINTEGERFALSE저자 IDPRICEINTEGERFALSE판매가 (원)PUBLISHED_DATEDATEFALSE출판일AUTHOR 테이블은 도서의 저자의 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다.Column nameTypeNullableDescriptionAUTHOR_IDINTEGERFALSE저자..
연속 서브쿼리
·
SQL 정리
문제 설명다음은 고객의 정보를 담은 MEMBER_PROFILE테이블과 식당의 리뷰 정보를 담은 REST_REVIEW 테이블입니다. MEMBER_PROFILE 테이블은 다음과 같으며 MEMBER_ID, MEMBER_NAME, TLNO, GENDER, DATE_OF_BIRTH는 회원 ID, 회원 이름, 회원 연락처, 성별, 생년월일을 의미합니다.Column nameTypeNullableMEMBER_IDVARCHAR(100)FALSEMEMBER_NAMEVARCHAR(50)FALSETLNOVARCHAR(50)TRUEGENDERVARCHAR(1)TRUEDATE_OF_BIRTHDATETRUEREST_REVIEW 테이블은 다음과 같으며 REVIEW_ID, REST_ID, MEMBER_ID, REVIEW_SCORE, ..
WITH절 문제 예시
·
SQL 정리
문제 예시 다음은 중고거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 중고거래 게시판 첨부파일 정보를 담은 USED_GOODS_FILE 테이블입니다. USED_GOODS_BOARD 테이블은 다음과 같으며 BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS은 게시글 ID, 작성자 ID, 게시글 제목, 게시글 내용, 가격, 작성일, 거래상태, 조회수를 의미합니다. Column nameTypeNullableBOARD_IDVARCHAR(5)FALSEWRITER_IDVARCHAR(50)FALSETITLEVARCHAR(100)FALSECONTENTSVARCHAR(1000)FALSEPRICENUMBERFALSECREATED..
DATEDIFF
·
SQL 정리
SQL에서 DATEDIFF 함수는 두 날짜 사이의 차이를 계산하여 반환하는 함수이다. 주로 두 날짜 간의 일수 차이를 구할 때 사용된다.  구조DATEDIFF(date1, date2)​ 설명:date1과 date2는 비교할 두 날짜이다DATEDIFF(date1, date2)는 date1과 date2 사이의 일수를 반환한다  반환 값은 date1이 date2보다 크면 양수, 작으면 음수이다.예제: SELECT DATEDIFF('2024-08-01', '2024-07-01') AS DaysDifference;​  이 쿼리는 2024년 7월 1일과 2024년 8월 1일 사이의 일수 차이를 계산합니다. 결과는 31입니다.DATEDIFF(datepart, startdate, enddate)datepart는 날짜 ..