04-1. MySQL의 데이터 형식
- 정수형
데이터 형식 | 바이트 수 | 숫자 범위 |
TINYINT | 1 | -128 ~ 127 |
SMALLINT | 2 | -32,768 ~ 32,767 |
INT | 4 | 약 -21억 ~ +21억 |
BIGINT | 8 | 약 -900경 ~ +900경 |
- UNSIGNED 예약어 사용 시 0부터 범위가 지정 ex) UNSIGNED TINYINT : 0 ~ 255
2. 문자형
데이터 형식 | 바이트 수 |
CHAR(개수) | 1~255 |
VARCHAR(개수) | 1~16383 |
- CHAR : 고정길이 문자형
- VARCHAR : 가변길이 문자형
3. 실수형
데이터 형식 | 바이트 수 | 설명 |
FLOAT | 4 | 소수점 아래 7자리까지 표현 |
DOUBLE | 8 | 소수점 아래 15자리까지 표현 |
4. 날짜형
데이터 형식 | 바이트 수 | 설명 |
DATE | 3 | 날짜만 저장, YYYY-MM-DD 형식으로 사용 |
TIME | 3 | 시간만 저장, HH:MM:SS 형식으로 사용 |
DATETIME | 8 | 날짜 및 시간 저장, YYYY-MM-DD HH:MM:SS 형식으로 사용 |
- 날짜와 시간 입력할 때는 문자와 같이 작은따옴표로 묶어줘야 한다.
- DATE_FORMAT(컬럼명, 바꿀포맷형식) + AS 로 원래 컬럼명으로 표시
04-2. 두 테이블을 묶는 JOIN
JOIN = 두 개의 테이블을 묶어서 하나의 결과 ex) 인터넷 마켓 데이터베이스의 회원 테이블과 구매 테이블
두 테이블의 JOIN을 위해서는 테이블이 일대다 (one to many) 관계 연결
1) INNER JOIN = JOIN
SELECT <열 목록>
FROM <첫 번째 테이블>
(INNER) JOIN <두 번째 테이블>
ON <조인 조건>
[WHERE 검색 조건]
SELECT * = 두 테이블의 모든 컬럼을 출력 (중복 포함)
table.column = 원하는 테이블의 column 출력
table (AS) alias → alias.column : 별칭 사용
2) OUTER JOIN
필요한 내용이 한 쪽 테이블에만 있어도 결과 추출 가능
SELECT <열 목록>
FROM <첫 번째 테이블(LEFT 테이블)>
<LEFT || RIGHT || FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>
ON <조인 조건>
[WHERE 검색 조건]
3) CROSS JOIN
한 쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 JOIN → 결과의 전체 행 개수 = 두 테이블의 각 행의 개수의 곱
SELECT *
FROM <첫 번째 테이블 (LEFT TABLE)>
CROSS JOIN <두 번째 테이블 (RIGHT TABLE)>
4) SELF JOIN
자기 자신과 JOIN → 다른 별칭을 사용해서 서로 다른 것 처럼 사용
SELECT <열 목록>
FROM <테이블> 별칭A
JOIN <테이블> 별칭B
ON <조인 조건>
[WHERE 검색 조건]
기본 : 회원으로 가입만 하고, 한 번도 구매한 적이 없는 회원의 목록
SELECT DISTINCT M.mem_id, B.prod_name, M.mem_name, M.addr
FROM member M
LEFT OUTER JOIN buy B ON M.mem_id = B.mem_id
WHERE B.prod_name IS NULL
ORDER BY M.mem_id;
WHERE B.prod_name IS NULL → buy 테이블의 prod_name 값이 NULL 인 경우 필터링 (구매한 적 X)
추가 : 한 번이라도 구매한 이력이 있는 회원들 출력
SELECT DISTINCT M.mem_id, M.mem_name, M.addr
FROM buy B
JOIN member M
ON B.mem_id = M.mem_id
ORDER BY M.mem_id;
SELECT DISTINCT → 중복된 결과 1개만 출력
JOIN member ON buy.mem_id = member.mem_id → buy 테이블과 member 테이블 동시에 존재 (구매 이력 O)
'SQL > HG' 카테고리의 다른 글
[혼공S] 4주차 - 테이블과 뷰 (0) | 2025.07.27 |
---|---|
[혼공S] 2주차 - SQL 기본 문법 (0) | 2025.07.14 |
[혼공S] 1주차 - DB와 SQL (0) | 2025.07.06 |