혼자 공부하는 SQL

혼공학습단 혼공 SQL - Chap3

쩡선영 2023. 7. 24. 00:11

벌써 3주차네요... 열심히 달려보겠습니다ㅎ힛


✏️ 데이터 형식

테이블을 만들 때는 데이터 형식을 설정해야 합니다. 

숫자형, 문자형, 날짜형이 있는데 이 데이터 형을 잘 이해하고 지정해야 됩니다!

 

정수형

정수형은 소숫점이 없는 숫자입니다.

데이터 형식 바이트 수 숫자 범위
TINYINT 1 -128 ~ 127
SMALLINT 2 -32,768 ~ 32,767
INT 4 약 -21억 ~ + 21억
BIGINT 8 약 -900경 ~ +900경

이렇게 총 4가지의 정수형이 있습니다

Error Code : 1264. Out of range value for colum 'tinyint_col' at row 1

만약 입력값의 범위가 벗어나면 Out of range 라는 오류가 발생합니다.

 

CREATE TABLE member(
	mem_name	TINYINT NOT NULL,
	height		TINYINT UNSIGNED
);

이렇게 mem_name과 height를 TINYINT로 설정하였습니다.

NOT NULL은 비어있으면 안된다는 뜻이고

UNSIGNED는 범위를 0부터 시작하겠다는 뜻이 됩니다

 

문자형

정수형은 글자를 저장하기 위해 사용하며, 입력할 최대 글자의 개수를 지정해야 합니다.

데이터 형식 바이트 수
CHAR (개수) 1~253
VARCHAR(개수) 1~16538

CHAR고정길이의 문자입니다.

예를 들어 CHAR(10)으로 지정하고 '가나다' 3글자만 저장해도 10자리를 모두 확보하고 있기에, 나머지 7자리는 낭비하게 됩니다.

반면에,  VARCHAR가변길이 문자 입니다.

위와같은 상황이 발생했을때 7자리를 낭비하지 않고, 3글자로 변하게 됩니다

CREATE TABLE member(
	mem_name	VARCHAR(10) NOT NULL,
	phone		 CHAR(3)
);

이렇게 VARCHAR과 CHAR을 선언 할 수 있습니다!

 

대량의 데이터 형식

문자형인 CHAR은 최대 255자까지, VARCHAR은 최대 16383자 까지 지정 가능하기에 더 많은 데이터를 넣게 된다면 오류가 발생합니다.

데이터 형식 바이트 수
TEXT 형식 TEXT 1~65535
LONGTEXT 1~4294967295
BLOB 형식 BLOB 1~65535
LONGBLOB 1~4294967295

이런 큰 데이터를 저장할 수 있는 데이터 형식이 있습니다.

 

실수형

실수형은 소수점이 잇는 숫자를 저장할 때 사용합니다

데이터 형식 바이트 수 설명
FLOAT 4 소수점 아래 7자리까지 표현
DOUBLE 8 소수점 아래 15자리까지 표현

FLOAT와 DOUBLE은 거의 비슷하나, 소수점 아래 어디까지 정밀하게 표현하는지에 차이가 있습니다.

 

날짜형

날짜형은 날짜 및 시간을 저장할 때 사용합니다

데이터 형식 바이트 수 설명
DATE 3 날짜만 저정, YYYY-MM-DD 형식으로 사용
TIME 3 시간만 저정, HH:MM:SS 형식으로 사용
DATETIME 8 날짜 및 시간을 저장, YYYY-MM-DD HH:MM:SS 형식으로 사용

 

✏️ 변수의 사용

SQL도 다른 프로그래밍 언어와 같이 변수를 지정하고 사용할 수 있는대요!

SET @변수이름 = 변수의 값 ; -- 변수의 선언 및 값 대입

SET @변수이름 ; -- 변수의 값 출력

 

이렇게 사용할 수 있습니다

 

✏️ 데이터 형 변환

문자형을 정수형으로 바꾸거나, 정수형을 문자형으로 바꾸는 것을 데이터의 형변환 이라고 부릅니다.

명시적인 형변환은직접 함수를 사용해서 변환하는 것이고, 지시 없이 자연스럽게 변환되는 것은 암시적인 변환이라고 합니다

 

명시적인 형변환

데이터 형식을 변환하는 함수는 CAST(), CONVERT()가 있습니다.

 

CAST( 값 AS 데이터_형식 [ (길이) ] )

CONVERT ( 값, 데이터_형식 [ (길이) ] )

 

이런 형식으로 변환을 할 수 있습니다. CAST와 CONVERT는 작성하는 형식만 다를 뿐 기능은 동일합니다.

CAST()나 CONVERT의 데이터 형식은 

CHAR, SIGNED(부호가 있는 정수), UNSIGEND(부호가 없는 정수), DATE, TIME, DATETOME등이 올 수 있습니다.

 

SELECT CAST(AVG(price) AS SIGNED) '평균 가격' FROM buy;
--또는
SELECT CONVERT(AVG(price, SIGNED) '평균 가격' FROM buy;

이렇게 price의 평균 값을 SIGNED로 바꾼 것입니다.

암시적인 형변환

암시적인 변환은 CAST()나 CONVERT() 함수를 사용하지 않고도 자연스럽게 현변환이 되는 것입니다.

SELECT '100' + '200';

 

이렇게 하게 됐을때 문자가 숫자로 변환(암시적인 형변환)이 되어 100200이 출력되지 않고, 300이 출력되게 됩니다.

 

✏️ 내부 조인

조인이란 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어내는 것 입니다.

내부조인은 조인 중 가장 많이 쓰이고 기본적인 조인입니다.

일대다 관계

조인을 알아보기 위해서는 테이블이 일대다 관계로 연결되어야 합니다.

일대다 관계란 한 쪽 테이블에는 하나의값만 존재하지만, 연결된 다른 테이블에는 여러개의 값이 존재할 수 있는 관계를 뜻합니다. 

 

내부 조인의 기본

SELECT <열 목록>

FROM <첫 번째 테이블>

     INNER JOIN <두 번째 테이블>

     ON  <조인될 조건>

[WHERE 검색 조건];

 

내부조인은 위와 같은 형식으로 구성되어있습니다.

 

SELECT *
FROM buy
INNER JOIN member
ON buy.mem_id = member.mem_id
WHERE buy.mem_id = 'GRL';

 

  1.  buy 테이블의 mem_id(buy.mem_id)인 'GRL'을 추출합니다.
  2. 'GRL'과 동일한 값을 회원 테이블의 mem_id(member.mem_id) 열에서 검색합니다.
  3. 'GRL'이라는 아이디를 찾으면 구매 테이블과 회원 테이블의 두 행을 결합(JOIN) 합니다

이런 식으로 테이블 두 개가 합쳐지게 됩니다.

 

✏️ 외부 조인

내부 조인은 두 테이블에 모두 데이터가 있어야만 결과가 나오지만, 외부 조인은 한쪽에만 데이터가 있어도 결과가 나옵니다

 

외부 조인의 기본

SELECT <열 목록>

FROM <첫 번째 테이블>

     <LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>

     ON  <조인될 조건>

[WHERE 검색 조건];

 

이런 식으로 사용 가능합니다!


 

⭐ 기본미션

p. 195의 확인 문제 4번 풀고 인증하기

 

족장님... 죄송해요... 저의 한계에요.. 너무 힘들어요...ㅎ흐흐흐흐흐햐하핳

JOIN 들어가니까 참 어렵네유... 의지박약인 저... 어쩝니꽈...

다음주엔 꼭 열심히 하ㄹ게요 진짜진짜X10000

'혼자 공부하는 SQL' 카테고리의 다른 글

혼공학습단 혼공 SQL - Chap2  (0) 2023.07.16
혼공학습단 혼공 SQL - Chap.1  (0) 2023.07.09