All About

혼자 공부하는 SQL_3주차 정리 및 미션 본문

혼공학습단/혼공 SQL(11기)

혼자 공부하는 SQL_3주차 정리 및 미션

ColorNScent 2024. 1. 21. 22:47

혼자 공부하는 SQL 3주차

※ 순서

Chp 4. 정리

미션

 

Chp 4. SQL 고급 문법

■ MySQL의 데이터 형식

  • 데이터 형식
    • 정수형: 소수점이 없는 숫자
      • TINYINT: 1바이트, -128~127
      • SMALLINT: 2바이트, -32,768~32767
      • INT: 4바이트, 약 -21억~21억
      • BIGINT: 8바이트, 약 -900경~900경
      • UNSIGNED: 정수형에 붙이면 범위가 0부터 지정됨
    • 문자형: 글자 저장, 입력할 최대 글자의 개수 지정
      • CHAR(개수): 1~255
      • VARCHAR(개수): 1~16383
    • 대량의 데이터 형식: 큰 데이터 저장
      • TEXT 형식: 소설, 영화 대본 같은 글
        • TEXT
        • LONGTEXT
      • BLOB 형식: 이미지, 동영상 등 이진 데이터
        • BLOB
        • LONGBLOB
    • 실수형: 소수점 있는 숫자
      • 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 @변수이름;
    • LIMIT에는 변수 사용 X
      • PREPARE & EXECUTE
        • PREPARE는 실행 X, SQL문만 준비
          • LIMIT ?: 물음표(?) = '현재는 모르지만 나중에 채워짐'
        • EXECUTE에서 실행
          • USING @변수이름: USING으로 물음표(?)에 @변수이름의 값을 대입하는 것
  • 데이터 형 변환
    • 함수를 이용한 명시적인 변환
      • CAST(): CAST(값 AS 데이터_형식 [(길이)])
      • CONVERT(): CONVERT(값, 데이터_형식 [(길이)])
        • 둘은 형식만 다를 뿐 동일한 기능
        • 가능한 데이터 형식: CHAR, SIGNED, UNSIGNED, DATE, TIME, DATETIME 등
          • SIGNED: 부호 있는 정수
          • UNSIGNED: 부호 없는 정수
        • CONCAT(): 문자를 이어주는 역할의 함수
    • 암시적인 변환
      • 함수를 사용하지 않고도 자연스럽게 형이 변환되는 것
        • ex) 숫자와 문자 연산: CONCAT() 사용 시 숫자가 문자로 변함 / 더하기만 사용 시 문자가 숫자로 변한 후 연산

 

■ 두 테이블을 묶는 조인

-조인: 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것

  • 내부 조인
    • 두 테이블 연결 시 가장 많이 사용되는 것, 조인 = 내부 조인 
    • 일대다 관계의 이해
      • 한쪽 테이블에는 하나의 값만, 다른 쪽 테이블에는 여러 개의 값이 존재할 수 있는 관계
    • 내부 조인의 기본
      • 두 테이블 조인 시, 두 테이블에 모두 지정한 열의 데이터 있어야함(두 테이블에 모두 있는 내용만 출력됨)
    • 내부 조인의 형식
      •  SELECT <열 목록>  FROM <첫 번째 테이블>  INNER JOIN <두 번째 테이블>  ON <조인될 조건>  [WHERE 검색 조건]
    • 내부 조인의 간결한 표현
      • 별칭: FROM 절 뒤에 나오는 테이블의 이름 뒤에 위치
  • 외부 조인
    • 외부 조인의 기본
      • 두 테이블 조인 시, 1개의 테이블에만 데이터가 있어도 결과 나옴
    • 외부 조인의 형식
      • SELECT < 열 목록> FROM <첫 번째 테이블(LEFT 테이블)> <LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)> ON <조인될 조건> [WHERE 검색 조건];
      • LEFT(RIGHT) OUTER JOIN: 왼쪽(오른쪽) 테이블의 내용은 모두 출력되어야 한다
      • FULL OUTER JOIN: 왼쪽 외부 조인과 오른쪽 외부 조인이 합쳐진 것
  • 기타 조인
    • 자주 사용되지는 않지만 가끔 유용하게 사용되는 조인
    • 상호 조인: 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시키는 기능
    • 자체 조인: 자신이 자신과 조인된다는 의미, 1개의 테이블 사용
      • 자체 조인의 형식
        • SELECT <열 목록> FROM <테이블> 별칭A INNER JOIN <테이블> 별칭B ON <조인될 조건> [WHERE 검색 조건]

 

SQL 프로그래밍

  • IF 문
    • 조건식
    • 참일 때 수행
    • IF 문의 기본 형식(아래 코드 블럭 참고)
      • 두 문장 이상이 처리되어야 할 경우: BEGIN~END로 묶기
    • IF ~ ELSE문
      • 참과 거짓일 때 각각 다른 부분이 수행
//IF문 형식
IF <조건식> THEN
	SQL 문장들
END IF;

//
  • CASE 문
    • CASE 문의 기본 형식(아래 코드 블럭 참고)
      • 다중 분기
//CASE문 형식
CASE
	WHEN 조건1 THEN
    	SQL문장들1
    WHEN 조건2 THEN
    	SQL문장들2
    WHEN 조건3 THEN
    	SQL문장들3
    ELSE
    	SQL문장들4
END CASE;
  • WHILE 문
    • 조건식이 참인 동안 계속 반복
    • WHILE 문의 기본 형식(아래 코드 블럭 참고)
    • WHILE 문의 응용
      • ITERATE [레이블]: 지정한 레이블로 가서 계속 진행
      • LEAVE [레이블]: 지정한 레이블 빠져나감(WHILE 문 종료)
//WHILE문 형식
WHILE <조건식> DO
	SQL문장들
END WHILE;
  • 동적 SQL
    • PREPARE&EXECUTE
      • PREPARE: SQL문 실행하지 않고 미리 준비만
      • EXECUTE: 준비한 SQL문 실행
        • 실행 후: DEALLOCATE PREPARE로 문장 해제해주는 것 바람직

 

 

▶ 3주차 미션

    ▷ 기본 미션

Q. p.195 확인 문제 4번

A. 

SELECT DISTINCT M.mem_id, B.prod_name, M.mem_name, M.addr

    FROM member M

    LEFT OUTER JOIN by B

    ON M.mem_id = B.mem_id

    WHERE B.prod_name IS NULL

    ORDER BY M.mem_id;