요즘 시험도 끝나고 😁
방학은 다가오는 🌴🍉
딱 학생들이 가장 한가한 기간입니당 🛏️
그리고 장마라서 밖에 나가기도 귀찮고 ☔
딱 프로그래밍 공부하기 좋은 날 인 것 같아요 !
🖥️🖱️
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 [좀 더 알아보기] 손코딩 실행하고 결과화면 인증하기 |