Chapter 04
기본미션! p. 195 - 확인문제 4번 풀고 인증샷✨
ANSWER
④ WHERE B.prodname IS NULL
WHERE 없이 SELECT ~ FROM만으로 테이블을 조회하면 테이블의모든 행이 출력된다. 그래서 WHERE과 함께 사용됩니다.
⠀⠀EX) SELECT 열이름 FROM 테이블_이름 WHERE 조건식;
데이터 형식~
- MYSQL에서 제공하는 데이터 형식의 종류는 수십 개 정도 있고, 데이터 형식마다 크기나 표현할 수 있는 숫자 범위가 다르다.
정수형
- 정수형은 정수, 즉 인원 수, 가격, 수량 등에 많이 사용한다.
- 손코딩 해보기
USE market_db;
CREATE TABLE example (
⠀⠀tinyint_col TINYINT,
⠀⠀smallint_col SMALLINT,
⠀⠀int_col INT,
⠀⠀bigint_col BIGINT );
- 데이터 입력하기
INSERT INTO example VALUES(127,32767,2147483647,900000000000000000);
- 오류나는 예시
INSERT INTO example VALUES(128,32768,2147483648,9000000000000000000);
이렇게 되면 오류가 발생하게 된다. Out of range는 입력값의 범위를 벗어났다는 뜻이다.
문자형
- 문자형은 글자를 저장하기 위해 사용하며, 입력할 최대 글자의 개수를 지정해야 한다. 대표적인 문자형은 다음과 같다.
- 손코딩 해보기
CREATE DATABASE nexflix_db;
USE market_db;
CREATE TABLE movie
⠀⠀(movie_id INT,
⠀⠀ movie_title VARCHAR(30),
⠀⠀ movie_director VARCHAR(20),
⠀⠀ movie_star VARCHAR(20),
⠀⠀ movie_script LONGTEXT,
⠀⠀ movie_film LONGBLOB,
⠀⠀)
실수형
- 실수형은 소수점이 있는 숫자를 저장할 때 사용한다. FLOAT와 DOUBLE은 거의 비슷하다. 소수점 아래를 어디까지 정밀하게 표현하는지의 차이이다. 대부분은 FLOAT이면 충분하다.
날짜형
- 날짜형은 날짜 및 시간을 저장할 때 사용한다. DATE는 날짜만, TIME은 시간만 저장한다. 날짜와 시간을 둘 다 저장하고 싶으면 DATETIME을 사용하면 된다.
변수의 사용
SQL도 다른 일반적인 프로그래밍 언어처럼 변수를 선언하고 사용할 수 있다. 변수의 선언과 값의 대입은 다음과 같다.
-
SET @변수이름 = 변수의 값; -> 변수의 선언 및 값 대입
SELECT @변수이름 ; -> 변수의 값 출력
-
간단한 손코딩
USE market_db;
SET @myVar1 = 5; ⠀①
SET @myVar2 = 4.25; ⠀①
SELECT @myVar1; ⠀②
SELECT @myVar1 + @myVar2; ⠀③
SET @txt = '가수 이름->'; ⠀④
SET @height = 166; ⠀④
SELECT @txt, mem_name FROM member WHERE height > @height ; ⠀⑤
실행결과
5
9.250000000000000000000000
가수 이름-> 소녀시대
가수 이름-> 잇지
가수 이름-> 트와이스
① 변수를 선언하고 정수 또는 실수를 대입한다.
② 변수의 내용을 출력한다.
③ 변수끼리 연산한 후에 출력한다.
④ 변수를 선언하고 문자열 또는 정수를 대입한다.
⑤ 테이블을 조회하면서 변수를 활용. 조건문은 height > 166와 동일
데이터 형 변환
- 문자형을 정수형으로 바꾸거나, 반대로 정수형을 문자형으로 바꾸는 것을 데이터의 형 변환이라고 부른다. 형 변환에는 직접 함수를 사용하여 변환하는 명시적인 변환과 별도의 지시 없이 자연스럽게 변환되는 암시적인 변환이 있다.
함수를 이용한 명시적인 변환
데이터 형식을 변환하는 함수는 CAST(), CONVERT()이다. 두가지는 형식만 다를 뿐 동일한 기능을 한다.
텍스트_CAST ( 값 AS 데이터__형식 [ (길이) ] )
텍스트_CONVERT ( 값, 데이터형식 [ (길이) ] )
암시적인 변환
- 암시적인 변환은 CAST()이나 CONVERT() 함수를 사용하지 않고도 자연스럽게 형이 변환되는 것을 뜻한다.
SELECT '100' + '200'; -> 실행결과:300
문자는 더할 수 없으므로 자동으로 100, 200으로 변환하여 덧셈을 한다.
SELECT CONCAT('100', '200'); -> 실행결과:100200
만약에 문자 '100'과 '200'을 연결한 '100200'으로 만들려면 CONCAT() 함수를 사용해야 된다.
내부 조인
- 두 테이블을 연결할 때 가장 많이 사용되는 것이 내부 조인이다. 그냥 조인이라 부르면 내부 조인을 의미한다.
내부 조인의 기본
- 일반적으로 조인이라고 부른는 것은 내부 조인을 말하는 것으로, 조인 중에서 가장 많이 사용된다. 조인은 3개 이상의 테이블로도 할 수 있지만 대부분은 2개로 조인한다.
내부 조인의 형식
SELECT <열 목록>
FROM <첫 번째 테이블>
⠀⠀⠀INNER JOIN <두 번째 테이블>
⠀⠀⠀ON <조인될 조건>
[WHERE 검색 조건]
외부 조인
- 내부 조인은 두 테이블에 모두 데이터가 있어야 결과가 나온다. 하지만 외부 조인은 한쪽에만 데이터가 있어도 결과가 나온다.
외부 조인의 기본
- 두 테이블을 조인할 때 필요한 내용이 한쪽 테이블에만 있어도 결과를 출력할 수 있다.
외부 조인의 형식
SELECT <열 목록>
FROM <첫 번째 테이블(LEFT 테이블)>
⠀⠀⠀<LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>
⠀⠀⠀ON <조인될 조건>
[WHERE 검색 조건] ;
기타 조인
- 내부 조인이나 외부 조인처럼 자주 사용되지는 않지만 가끔 유용하게 사용되는 조인으로 상호 조인과 자제 조인도 있다.
상호 조인
- 한쪽 테이블의 모든 행과 다른쪽 테이블의 모든 행을 조인시키는 기능을 말한다. 그래서 상호 조인 결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 개수가 된다.
자체 조인
- 내부 조인, 외부 조인, 상호 조인은 모두 2개의 테이블을 조인하였다. 자체조인은 자신이 자신과 조인한다는 의미이다. 그래서 자체 조인은 1개의 테이블을 사용한다. 또한, 별도의 문법이 있는건 아니고 1개로 조인하면 자체 조인이 된다.
IF문
- IF문은 조건문으로 가장 많이 사용되는 문법중 하나이다. IF문을 활용하면 다양한 조건을 처리할 수 있다.
IF문의 기본 형식
- IF문은 조건식이 참이라면 'SQL문장들'을 실행하고, 그렇지 않으면 그냥 넘어간다.
형식
IF <조건식> THEN
⠀⠀⠀⠀⠀SQL문장들
END IF;
IF ~ ELSE 문
- 조건에 따라 다른 부분을 수행한다. IF 조건식이 참이면 'SQL문장들1'을 실행하고, ELSE 그렇지 않으면 'SQL문장들2'를 실행한다.
CASE 문
-
여러가지 조건 중에서 선택해야 되는 경우도 있다. 이럴 때 CASE 문을 사용하여 조건을 설정할 수 있다.
-
CASE 문의 기본 형식
CASE
⠀⠀WHEN⠀⠀조건1⠀⠀THEN
⠀⠀⠀⠀⠀SQL문장들1
⠀⠀WHEN⠀⠀조건2⠀⠀THEN
⠀⠀⠀⠀⠀SQL문장들2
⠀ WHEN⠀⠀조건3⠀⠀THEN
⠀⠀⠀⠀⠀SQL문장들3
⠀⠀ELSE
⠀⠀⠀⠀ SQL문장들4
END CASE;
WHEN 다음에 조건이 나오는데, 조건이 여러개면 WHEN을 반복 시키면 된다. 그리고 모든 조건에 해당하지 않으면 마지막 ELSE부분을 수행한다.
while 문의 기본 형식
- while 문은 조건식이 참인 동안에 'SQL문장들'을 계속 반복한다.
WHILE 문의 형식
WHILE <조건식> DO
⠀⠀ ⠀SQL 문장들
END WHILE;
3주차 선택 미션🤿