MySQL요약 노트 (2022년 1월 ~ 2022년 3월까지 공부했던 내용 정리)
혼자 공부하는 SQL책과 한빛미디어에서 제공하는 유튜브 강의로 공부함

UNSIGNED 예약어: 값의 범위가 0부터 시작됨
CHARVARCHAR
TEXT: 글자 데이터(대량의 텍스트)BLOB: 글자가 아닌 이미지, 동영상 등의 데이터(대량의 이진 데이터)
FLOAT 사용(ex. 시력)
SET @변수이름 = 변수의 값; -- 변수의 선언 및 값 대입
SELECT @변수이름; -- 변수의 값 출력LIMIT에는 변수를 사용할 수 없음(문법상 오류)LIMIT에 변수를 사용하기 위해 PREPARE와 EXECUTE 사용PREPARE는 실행하지 않고 SQL 문만 준비해 놓고EXECUTE에서 실행하는 방식CAST(), CONVERT() 형식CAST (값 AS 데이터_형식 [ (길이) ])
CONVERT (값, 데이터_형식 [ (길이) ])SELECT CONCAT(100, '200'); -- output: 100200 (숫자 100이 문자로 자동 변환)
SELECT 100 + '200'; -- output: 300 (문자 '200'이 숫자로 자동 변환)조인: 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것
내부 조인: 두 테이블에 모두 데이터가 있어야만 결과가 나옴
일대다(one to many) 관계: 주로 기본 키(PK)와 외래 키(FK) 관계(PK-FK 관계)
내부 조인 형식(INNER JOIN=JOIN)
SELECT <열 목록>
FROM <첫 번째 테이블> 별칭
INNER JOIN <두 번째 테이블> 별칭 -- 혹은 JOIN <두 번째 테이블>
ON <조인될 조건>
[WHERE 검색 조건];테이블이름.열이름 형식으로 표기FROM 절에 나오는 테이블의 이름 뒤에 별칭(alias)을 줄 수 있음DISTINCT 문 활용SELECT DISTINCT M.mem_id, M.mem_name, M.addr
FROM buy B
INNER JOIN member M
ON B.mem_id = M.mem_id
ORDER BY M.mem_id;외부 조인: 한쪽에만 데이터가 있어도 결과가 나옴
OUTER JOIN)SELECT <열 목록>
FROM <첫 번째 테이블(LEFT 테이블)> 별칭
<LEFT|RIGHT|FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)> 별칭
ON <조인될 조건>
[WHERE 검색 조건];LEFT OUTER JOIN 문: 왼쪽 테이블의 내용은 모두 출력되어야 한다(왼쪽에 있는 테이블을 기준으로 외부 조인)RIGHT OUTER JOIN 문: 오른쪽 테이블의 내용은 모두 출력되어야 한다(오른쪽에 있는 테이블을 기준으로 외부 조인)FULL OUTER JOIN 문: 왼쪽 외부 조인과 오른쪽 외부 조인이 합쳐진 것으로 왼쪽이든 오른쪽이든 한쪽에 들어 있는 내용이면 출력함기타 조인(상호 조인, 자체 조인)
1) 상호 조인(CROSS JOIN): 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시키는 기능(=카티션 곱)
SELECT <열 목록>
FROM <첫 번째 테이블>
CROSS JOIN <두 번째 테이블>;ON 구문을 사용할 수 없음, 2. 결과의 내용은 의미가 없음(랜덤 조인), 3. 상호 조인의 주 용도는 테스트하기 위해 대용량의 데이터를 생성할 때CREATE TABLE ~ SELECT 문CREATE TABLE <테이블_이름>
SELECT <열 목록>
FROM <첫 번째 테이블>
CROSS JOIN <두 번째 테이블>;2) 자체 조인: 자신이 자신과 조인한다(1개의 테이블을 사용함)
SELECT <열 목록>
FROM <테이블> 별칭A
JOIN <테이블> 별칭B;
ON <조인될 조건>
[WHERE 검색 조건];DELIMITER $$ -- 스토어드 프로시저의 코딩
CREATE PROCEDURE 스토어드_프로시저_이름()
BEGIN
이 부분에 SQL 프로그래밍 코딩
END $$ -- 스토어드 프로시저 종료
DELIMITER ; -- 종료 문자를 다시 세미콜론(;)으로 변경
CALL 스토어드_프로시저_이름(); -- 스토어드 프로시저 실행DECLARE로 선언, SET으로 값을 대입IF 문: 조건식이 참이라면 'SQL 문장들' 실행하고 거짓이면 그냥 넘어감IF 문은 조건식이 참이면 실행IF 문 기본 형식BEGIN ~ ENDIF <조건식> THEN
SQL 문장들
END IF;IF ~ ELSE 문: 조건에 따라 다른 부분을 수행할 때IF ~ ELSE 문은 조건식이 참일 때와 거짓일 때 다른 부분이 실행IF ~ ELSE 문 기본 형식IF <조건식> THEN
SQL 문장들1
ELSE
SQL 문장들2
END IF;CURRENT_DATE(): 오늘 날짜를 알려줌CURRENT_TIMESTAMP(): 오늘 날짜 및 시간을 함께 알려줌DATEDIFF(날짜1, 날짜2): 날짜2부터 날짜1까지 일수로 몇일인지 알려줌CASE 문: 여러 가지 조건 중에서 선택해야 하는 경우CASE 문은 다중 분기로, 여러 조건에 따라 다른 SQL을 실행시킬 수 있음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 문 기본 형식WHILE <조건식> DO
SQL 문장들
END WHILE;ITERATE [레이블]: 지정한 레이블로 가서 계속 진행함 = 프로그래밍 언어의 CONTINUE 문(반복문을 계속 진행)LEAVE [레이블]: 지정한 레이블을 빠져나감(즉, WHILE 문이 종료됨) = 프로그래밍 언어의 BREAK 문(반복문을 빠져 나감)PREPARE와 EXECUTE 문PREPARE: SQL 문을 실행하지는 않고 미리 준비만 해놓고EXECUTE: 준비한 SQL 문을 실행우재남. (2021). 혼자 공부하는 SQL. 한빛미디어. p158-p212.