정수형 1. 종류 TINYINT(1바이트) : -128~127 범위의 숫자를 표현할 수 있다. SMALLINT(2바이트) : -32768~32767 INT(4바이트) : 약-21억 ~ 21억 BIGINT(8바이트) : 약 -900경 ~ 900경 CREATE table numbers( tinyint_col TINYINT, -- -128~127 범위의 숫자를 표현할 수 있다. smallint_col SMALLINT, -- -32768~32767 int_col INT, -- 약-21억 ~ 21억 bigint_col BIGINT -- 약 -900경 ~ 900경 ); -- 입력가능한 최대 숫자 크기 INSERT INTO numbers VALUES(127,32767,2147483647,9000000000000000..
전체 글

[문제] https://school.programmers.co.kr/learn/courses/30/lessons/157342 [풀이] 1. CAR_ID와 각 행별 대여기간을 구한 인라인 뷰 테이블을 만든다. (from 절에서 서브쿼리) 2. 이후 group by로 car_id별로 묶은 후 평균 대여일을 구하는데 3. 그 결과에서 having으로 7일 이상인 데이터만 필터한다. 4. select문에서 그 평균 값을 ROUND로 반올림 해주고 5. 정렬해준다. select CAR_ID, ROUND(AVG(dif),1) as AVERAGE_DURATION from (select CAR_ID, (datediff(END_DATE,START_DATE)+1) as dif from CAR_RENTAL_COMPANY_R..

DB , Table 생성하기 데이터베이스 개체 : 테이블 인덱스, 뷰, 스토어 프로시저 - 개체 생성시 : create ~~ - 개체 삭제시 :drop ✔️ DB 생성, 테이블 생성 DROP DATABASE IF EXISTS market_db; -- 만약 market_db가 존재하면 우선 삭제한다. CREATE DATABASE market_db; -- market_db라는 데이터베이스 생성 USE market_db; -- db명 더블클릭 한 것과 같음. ✔️ 테이블 생성 CREATE TABLE member -- member 테이블 생성 ( mem_id CHAR(8) NOT NULL PRIMARY KEY, -- 사용자 아이디(PK) mem_name VARCHAR(10) NOT NULL, -- 이름 mem_..

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/131123 FOOD_TYPE 별 좋아요 수가 젤 많은 행 한건만 출력해야 함. - FOOD_TYPE별로 그룹화 한 후, having에 max 조건을 걸어 좋아요수가 젤 많은 음식점 한건만 출력하려 했음. - 문제 : 단순히 젤 첫번째 FOOD_TYPE 행만 나오고, max 요건은 따지지 않음. - 이유 : having은 group by에서 집계한 결과물에서 단순히 filter하는 역할이다. 때문에 max()를 이용해 새로운 연산을 할 수 없다. : having 뒤에는 조건이 나와야 하는데 이건 단순히 max함수를 실행해서 값을 조회한 것이기 때문에, 이건 조건문이 아니다! 만일 having ..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/131124 1차 시도 // 1. 멤버와 리뷰 테이블을 id 기준으로 조인 하는데 이때, 유형별로 그룹바이로 묶어 리뷰를 카운팅하고, 최대 리뷰쓴 사람 1명의 id만 추출 // 2. 이후 REST_REVIEW 테이블에서 추출된 id값과 같은 데이터를 조회 // 3. name,text,date조회 후 정렬 select MEMBER_NAME, REVIEW_TEXT, DATE_FORMAT(REVIEW_DATE, "%Y-%m-%d") AS REVIEW_DATE from REST_REVIEW , (select P.MEMBER_NAME, R.MEMBER_ID from MEMBER_PROFILE P join ..

✅ JOIN 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것 두 테이블의 조인을 위해서는 기본키(PRIMARY KEY, PK)와 외래키(FOREIGN KEY, FK) 관계로 맺어져야 한다. (때문에 on 조인 조건에는 기본기 = 외래키 연결짓는 로직이 들어가야 되는 것임!) ✅ 종류 1. INNER JOIN(내부 조인) : 두 테이블을 조인할 때, 두 테이블에 모두 데이터가 있어야만 결과가 나온다. 2. OUTER JOIN(외부 조인) : 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다. 3. CROSS JOIN(상호 조인) : 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 기능이다. 4. SELF JOIN(자체 조인) : 자신이 자신과 조인한다는 의..

✅ Group by 데이터를 컬럼별로 그룹화 해주는 역할 주로 집계 함수와 같이 사용되곤 한다 NULL 값을 가진 행을 제외하고 수행한다. [형태] SELECT FROM WHERE GROUP BY HAVING [예제] 회원별로 묶어준 후, 구매한 개수 합치기 select mem_id,count(mem_id) from buy group by mem_id; [예제] 프로그래머스 - 고양이와 개는 몇 마리 있을까 : ANIMAL_INS 테이블에서 ANIMAL_TYPE 컬럼을 기준으로 유형을 분류하는데, 이때 고양이와 개의 수를 카운팅한다. select ANIMAL_TYPE, count(ANIMAL_TYPE) as count from ANIMAL_INS group by ANIMAL_TYPE [예제] 프로그래머스..

✔️ ST_Astext 공간 데이터를 텍스트 형태로 표현해주는 것 예를들면, 011111000021354 이런 geometry 데이터를 우리가 보는 geom 정보(POLYGON)로 바꿔줌 ST_Astext(geom) * from table -- 011111000021354 -- return : MULTILINESTRING M ((209238.497 / 533566.9 / 43.007, 209259.89 / 533566.9 / 43.105)) SELECT ST_AsText('0103000000010000000500000000000400000'); -- POLYGON((0 0,0 1,1 1,1 0,0 0)) ✔️ st_makePoint x,y,z 좌표를 이용해 포인트 생성 ST_GeomFromText and..

- 서브쿼리는 메인쿼리(외부쿼리)의 칼럼을 모두 사용할 수 있음 - 메인쿼리(외부쿼리)는 서브쿼리의 칼럼을 사용할 수 없음 - 서브쿼리는 소괄호로 감싸서 사용 서브쿼리에서는 ORDER BY 절을 사용하지 못하고, 메인쿼리 마지막 문장에 사용 가능 스칼라 서브쿼리(Scalar Sub Query): 하나의 컬럼처럼 사용 (표현 용도) FROM (SELECT ...) -- 인라인 뷰(Inline View): 하나의 테이블처럼 사용 (테이블 대체 용도) WHERE col = (SELECT ...) -- 일반 서브쿼리: 하나의 변수(상수)처럼 사용 (서브쿼리의 결과에 따라 달라지는 조건절)Copy 1. 중첩 서브쿼리( Nested Subquery ) (일반 서브쿼리) where문에서 사용하는 서브쿼리. 예제1) ..