-
[혼자 공부하는 SQL] 4장. SQL 고급 문법DB 2024. 4. 17. 22:56728x90
MySQL의 데이터 형식
정수형
데이터 형식 바이트 수 숫자 범위
TINYINT 1 -128 ~ 127 SMALLINT 2 -32,768 ~ 32,767 INT 4 약 -21억 ~ 21억 BIGINT 8 약 -900경 ~ 900경 UNSIGNED 예약어를 사용하면 값의 범위가 0부터 시작되도록 할 수 있다.
문자형
CHAR : 고정길이 문자형(자릿수 고정)
VARCHAR : 가변길이 문자형(자릿수 유동적)
💡 CHAR(10)에 ‘가나다’를 저장해도 10자리 모두 확보, VARCHAR(10)에 ‘가나다’를 저장하면 3자리만 사용
VARCHAR가 CHAR보다 공간을 효율적으로 운영할 수 있지만, MySQL 내부적으로 성능면에서는 CHAR로 설정하는 것이 더 좋다.
⇒ CHAR는 글자의 개수가 고정된 경우, VARCHAR는 글자의 개수가 변동될 경우에 사용하는 것이 좋다.
💡 데이터가 숫자 형태라도 연산이나 크기에 의미가 없다면 문자형으로 지정하는 것이 좋다. ex) 전화번호
실수형
데이터 형식 바이트 수 설명
FLOAT 4 소수점 아래 7자리까지 표현 DOUBLE 8 소수점 아래 15자리까지 표현 날짜형
데이터 형식 바이트 수 설명
DATE 3 날짜만 저장, YYYY-MM-DD 형식 TIME 3 시간만 저장, HH:MM:SS 형식 DATETIME 8 날짜 및 시간 저장, YYYY-MM-DD HH:MM:SS 변수 사용
SET @변수이름 = 변수의 값; SELECT @변수이름
⇒ 변수는 MySQL 워크 벤치를 종료하면 없어짐, 따라서 임시로 사용한다고 생각하면 된다.
LIMIT에서는 변수 사용이 불가능하다.
💡 PERPARE, EXECUTE를 사용하여 LIMIT에서도 변수를 사용할 수 있다.
SET @count = 3; -- mysql이라는 이름으로 쿼리문 준비 PERPARE mysql FROM 'SELECT mem_name, height FROM member ORDER BY height LIMIT ?'; -- mysql에 저장된 select문 실행할 때 ?에 @count 변수의 값 대입 EXECUTE mysql USING @count;
데이터 형 변환
함수를 이용한 명시적인 변환
CAST (값 AS 데이터_형식[(길이)]) CONVERT (값, 데이터_형식[(길이)])
암시적인 변환
SELECT CONCAT('100', '200') -- 100200 SELECT 100 + '200' -- 300
두 테이블을 묶는 조인
조인(join) : 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것
Inner Join
join이라고 부르면 inner join
일대다 관계의 이해
💡 데이터베이스의 테이블은 하나로 구성되는 것보다는 여러 정보를 주제에 따라 분리해서 저장하는 것이 효율적이다.
일대 다 관계 : 한쪽 테이블에는 하나의 값만 존재해야 하지만, 연결된 다른 테이블에는 여러 개의 값이 존재할 수 있는 관계
Inner Join의 기본
SELECT 열_목록 FROM 첫_번째_테이블 (INNER) JOIN 두_번째_테이블 ON 조인될_조건 [WHERE 검색_조건]
Outer Join
두 테이블 중 한쪽에만 데이터가 있어도 결과를 추출할 수 있다.
Outer Join의 기본
SELECT 열_목록 FROM 첫_번째_테이블(LEFT 테이블) <LEFT | RIGHT | FULL> (OUTER) JOIN 두_번째_테이블(RIGHT 테이블) ON 조인될_조건 [WHERE 검색_조건]
- left outer join
SELECT M.mem_id, M.mem_name, B.prod_name, M.addr FROM memeber M -- M기준으로 outer join LEFT JOIN buy B ON M.mem_id = B.mem_id ORDER BY M.mem_id
- right outer join
SELECT M.mem_id, M.mem_name, B.prod_name, M.addr FROM buy B RIGHT JOIN memeber M -- M기준으로 outer join ON M.mem_id = B.mem_id ORDER BY M.mem_id
- full outer join
왼쪽이든 오른쪽이든 한쪽에 들어있는 내용이면 출력
기타 조인
Cross Join
한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시키는 기능
→ 상호 조인 결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 개수가 된다.
- 특징
- ON 문 사용 불가
- 결과의 내용은 의미가 없음(랜덤 조인이기 때문에)
- 테스트를 위해 대용량의 데이터를 생성할 때 주로 사용
Self Join
자신이 자신과 조인
SELECT 열_목록 **FROM 테이블 A JOIN 테이블 B** ON 조인될_조건 [WHERE 검색_조건]
728x90'DB' 카테고리의 다른 글
[혼자 공부하는 SQL] 6장. 인덱스, 복합 인덱스 (0) 2024.05.07 [혼자 공부하는 SQL] 5장. 테이블과 뷰 (0) 2024.04.27 [혼자 공부하는 SQL] 3장. SQL 기분 문법 (0) 2024.04.04 [혼자 공부하는 SQL] 2장. 실전용 SQL 미리 맛보기 (0) 2024.04.04 [혼자 공부하는 SQL] 1장. 데이터베이스와 SQL (0) 2024.04.04