[혼자 공부하는 SQL] Chapter 04

혜원·2024년 1월 26일
0

혼자 공부하는 SQL

목록 보기
3/4

기본 미션: p. 195의 확인 문제 4번 풀고 인증하기

선택 미션: p. 183 [좀 더 알아보기] 손코딩 실행하고 결과화면 인증하기


데이터 형식

정수형

데이터 형식바이트 수숫자 범위
TINYINT1-128 ~ 127
SMALLINT2-32,768 ~ 32,767
INT4약 -21억 ~ +21억
BIGINT8약 -900경 ~ +900경

이런 데이터 형식을 사용해서 낭비되지 않도록 회원테이블을 만들었다

UNSIGNED는 값의 범위가 0부터 시작되는 예약어로
만약 TINYINT를 TINYINT UNSIGNED로 표현한다면 0 ~ 255로 표현되는 것이다.


문자형

데이터 형식바이트 수
CHAR(개수)1~255
VARCHAR(개수)1~16383

CHAR는 고정길이 문자형이라고 부른다. 즉, 자릿수가 고정되어 있음
VARCHAR는 가변길이 문자형으로 VARCHAR(10)에 '가나다' 3글자를 저장할 경우 3자리만 사용함

  • VARCHAR가 CHAR보다 공간을 효율적으로 운영할 수 있지만 내부적으로 성능면에서는 CHAR로 설정하는 것이 조금 더 좋음

대량의 데이터 형식

문자형인 CHAR는 최대 255자까지, VARCHAR는 최대 16383자까지 설정이 가능함
이것보다 더 큰 데이터를 저장하기위해 TEXT형식과 BLOB형식이 있음

데이터 형식바이트수
TEXT형식TEXT1~65535
LONGTEXT1~4294967295
BLOB형식BLOB1~65535
LONGBLOB1~4294967295
  • TEXT로 지정하면 65535자까지, LONGTEXT로 지정하면 약 42억자까지 저장됨
  • BLOB은 글자가 아닌 이미지, 동영상 등의 데이터

실수형

데이터 형식바이트 수설명
FLOAT4소수점 아래 7자리까지 표현
DOUBLE8소수점 아래 15자리까지 표현

소수점 아래를 어디까지 정밀하게 표현하는지의 차이인데, 과학 기술용 데이터가 아닌 이상 FLOAT이면 충분함


날짜형

데이터 형식바이트 수설명
DATE3날짜만 저장. YYYY-MM-DD 형식으로 사용
TIME3시간만 저장. HH:MM:SS 형식으로 사용
DATETIME8날짜 및 시간을 저장. YYYY-MM-DD HH:MM:SS 형식으로 사용


변수의 사용

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

LIMIT에는 변수를 사용할 수 없기 때문에 오류 발생

prepare과 execute를 사용해서 해결함

  • prepare은 실행하지 않고 execute에서 실행하는 방식

데이터 형 변환

함수를 이용한 명시적인 변환

  • 데이터 형식을 변환하는 함수는 CAST(), CONVERT()임
  • 형식만 다를 뿐 동일한 기능을 함
CAST (AS 데이터_형식 [ (길이) ] )
CONVERT (, 데이터_형식 [ (길이) ] )

평균 가격을 그냥 출력해 보면 실행 되는 화면

정수로 표현하기 위해 cast함수 사용


암시적인 변환

  • CAST()나 CONVERT() 함수를 사용하지 않아도 자연스럽게 형이 변환되는 것

숫자 100과 문자 200을 더하면 뒤의 문자가 숫자 200으로 자동 변환되어 300이 출력됨



내부 조인

내부 조인의 기본

내부 조인의 형식

SELECT <열 목록>
FROM <첫 번째 테이블>
	INNER JOIN <두 번째 테이블>
    ON <조인될 조건>
[WHERE 검색 조건]

GRL이라는 아이디를 가진 사람이 있는 두개의 테이블을 조인했다.


외부 조인

외부 조인의 기본

외부 조인의 형식

SELECT <열 목록>
FROM <첫 번째 테이블(LEFT 테이블)>
	<LEFT : RIGHT : FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>
    ON <조인될 조건>
[WHERE 검색 조건]

  • LEFT OUTER JOIN문 = 왼쪽 테이블의 내용은 모두 출력되어야 한다의 의미를 가짐

기타 조인

상호 조인

  • 한쪽 테이블의 모든 행과 다른쪽 테이블의 모든 행을 조인시키는 기능
  • 상호 조인의 결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 개수가 됨
  • ON 구문을 사용할 수 없음
  • 결과의 내용은 의미가 없음

회원 테이블과 구매 테이블의 상호조인 결과이다.


자체 조인

  • 자신과 자신이 조인한다는 의미

자체 조인의 형식

SELECT <열 목록>
FROM <테이블> 별칭 A
	INNER JOIN <테이블> 별칭 B
    ON <조인될 조건>
[WHERE 검색 조건]

경리부장의 직속상관 연락처를 알고 싶다면 이런 sql을 사용하면 된다.


IF문

IF문의 기본 형식

  • 조건식이 참이라면 SQL문장들을 실행하고 아니라면 그냥 넘어감
IF <조건식> THEN
	SQL문장들
END IF

조건식으로 100이 100과 같은지 비교함. 당연히 참일테니 다음행이 실행되어 call로 ifProc1()을 호출함


IF ~ ELSE 문

  • 조건에 따라 다른 부분을 수행함

  • DECLARE 예약어를 사용해서 myNUM 변수를 선언함

CASE문

CASE문의 기본 형식

  • 시험점수 point 변수에 88을 입력, 학점을 저장한 credit변수 준비

WHILE문

WHILE문의 기본 형식

  • 조건식이 참인 동안에 SQL문장들을 계속 실행함
WHILE <조건식> DO
	SQL 문장들
END WHILE;

1부터 100까지의 값을 모두 더하는 기능

i가 100이하인 동안에 계속 반복하여 hap에 누적됨


동적 SQL

PREPARE와 EXECUTE

  • PREPARE 문에서는 SELECT * FROM member WHERE mem_id = "BLK"를 바로 실행하지 않고 myQuery에 입력만 시켜 놓음
  • 실행이 필요한 시점에 EXECUTE myQuery문으로 실행함

0개의 댓글