본문 바로가기

카테고리 없음

혼공단 12기 혼공MySQL 3주차

 

요즘 시험도 끝나고 😁

방학은 다가오는 🌴🍉

딱 학생들이 가장 한가한 기간입니당 🛏️

그리고 장마라서 밖에 나가기도 귀찮고 ☔

딱 프로그래밍 공부하기 좋은 날 인 것 같아요 !

🖥️🖱️

Chapter 04

SQL 고급 문법

 

04-1 MySQL의 데이터 형식

 

데이터를 저장하기 위해선

데이터에 맞는 데이터 형식이 중요합니다

 

< 데이터 형식 >

 

( 정수형 )

데이터 형식 바이트 수
TINYINT 1
SMALLINT 2
INT 4
BIGINT 8
CREATE TABLE hongong4(
	tinyint_col TINYINT,
	smalint_col SMALLINT,
    int_col INT,
	bigInt_col BIGINT );

#입력값의 범위를 벗어나면 Out of range라는 오류가 뜰 수 있다

 

( 문자형 )

 

CHAR로 '안녕'을 저장하면 2글자여서 2자리만 확보해도 되지만 10자리를 모두 확보해 낭비 (고정길이 문자형)

하지만 VARCHAR는 '안녕'을 저장하면 2자리만 확보 (가변길이 문자형).

( 성능(속도)는 CHAR이 빠름 )

 

TEXT도 많은 글자를 저장할 수 있지만LONGTEXT라면 더 많은 글자를 저장해 소설/영화대본에 좋음

 

LONGBLOB는 이미지/동영상 데이터 저장

 

( 실수형 )FLOAT, DOUBLE 소수점정밀하게 표현해야한다면 DOUBLE (3.141592653589794238 ....)그게 아니면 FLOAT (시력 1.0, 0.5)

 

( 날짜형 )DATE, TIME, DATETIMEDATE : 날짜만TIME : 시간만DATETIME : 날짜/시간 둘다 저장

 

 

< 변수 사용 >

#형식 : SET @변수이름 = 변수값; -> 선언과 값 대입
#형식 : SELECT 변수이름; -> 변수 값 출력

#SELECT에 행의 개수를 제한하는 LIMIT을 사용하는데,
#LIMIT에도 변수를 사용하고 싶지만 LIMIT에는 변수를 사용하지 못하는 상황
#--> 해결방법 : PREPARE, EXECUTE

SET @count = 3;
PREPARE mySQL FROM 'SELECT mem_name, height FROM member ORDER BY height LIMIT ?';
EXECUTE mySQL USING @count; #USING으로 ?에 count변수값 대입

 

 

< 데이터 형 변환 >

 

문자 <-> 정수 : 변환

함수 사용해서 변환 : 명시적인 변환

함수 없이 자연스럽게 변환 : 암시적인 변환

 

#명시적인 변환 (함수사용)
#CAST ( 값 AS 데이터_형식 [ (길이) ] )
#CONVERT ( 값, 데이터_혀잇ㄱ [ (길이) ] )
SELECT CAST(AVG(price) AS SIGNED) '평균 가격' FROM buy;
SELECT CONVERT(AVG(price) AS SIGNED) '평균 가격' FROM buy;

#CONCAT() : 문자를 이어주는 함수		#CAST() : 정수->문자 변환 함수

#암시적인 변환
SELECT '100' + '200'; #문자지만 더하기가 있으므로 정수로 변경해 300출력
SELECT CONCAT('100', '200'); #문자를 연결해 100200출력

 

 

 

04-2 두 테이블을 묶는 조인

 

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

 

( 일대 다 관계 )

여러 정보를 주제에 따라 분리해서 저장하는 것

이 분리된 테이블은 서로 관계를 맺고 있음

- 기본키 : ex. 회원 아이디 (회원은 1명)

- 외래키 : ex. 구매 목록 (구매는 회원 1명이어도 여러 개 구매가능)

 

일반적인 조인 -> 내부조인

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

 

 

외부조인 : 내용이 한 쪽 테이블에만 있어도 결과를 추출

#외부조인의 형식
SELECT <열 목록>
FROM <첫 번째 테이블(LEFT 테이블)>
	<LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>
    ON <조인될 조건>
[WHERE 검색 조건]

 

LEFT OUTER JOIN : 왼쪽 내용 모두 출력

RIGHT OUTER JOIN  : 오른쪽 내용 모두 출력

FULL OUTER JOIN : 왼/오의 외부조인이 합쳐진 것

 

 

< 기타조인 >

 상호조인 : 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인

- 특징 : ON 구문 사용 X, 랜덤조인, 테스트를 위한 대용량 데이터 생성에 쓰임

 

대용량 데이터를 만들려면

CREATE TABLE ~ SELECT를 사용

 

자체조인 : 자신이 자신과 조인

하나의 테이블에 같은 데이터가 있지만 2개 이상의 열로 존재할 때 자체조인 할 수 없다

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

 

 

04-3 SQL 프로그래밍

 

< IF 문 >

#IF문의 형식
IF <조건식> THEN
	SQL문장들
ELSE
	SQL문장들
END IF;

#두문장 이상 처리될땐 DEGIN~END로 묶기

 

< CASE 문 >

2가지 이상의 여러 가지 경우일때 처리가 가능함 : 다중 분기

CASE
	WHEN	조건	THEN
    	SQL 문장들1
	WHEN	조건	THEN
    	SQL 문장들2
	WHEN	조건	THEN
    	SQL 문장들3
    ELSE
    	SQL 문장들4
END CASE;

 

< WHILE 문 >

WHUKE <조건식> DO
	SQL 문장들
END WHILE;

 

ITERATE문 : 지정한 레이블로 가서 계속 진행

LEAVE문 : 지정한 레이블로 빠져나감 (WHILE문 종료)

 

 

< 동적 SQL>

 

PREPARE : SQL문 실행하지 않고 미리 준비만 해놓음

 

EXECUTE : 준비된 SQL문 실행실행 후 DEALLOCATE PREPARE로 문장 해제하기


혼공SQL

3주차 숙제

3주차
(7/15 ~ 7/21)
Chapter 04 p. 195의 확인 문제 4번 풀고 인증하기 p. 183 [좀 더 알아보기] 손코딩 실행하고 결과화면 인증하기

195의 확인 문제 4번
183 [좀 더 알아보기] 손코딩