Today I Learned (TIL)/SQL

[TIL] SQL 베이직 - 1회차

신짜린 2024. 7. 15. 18:56

1. SQL의 작동순서 및 작성순서

- 작동순서

 FROM → ON → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY

 테이블 확인 후 조인 조건을 확인하고 조인 후 추출할 조건을 확인한다. 그리고 데이터 그룹화, 추출, 중복제거를 마치면 마지막으로 데이터를 정렬한다.

 작동순서를 고려하지 않고 쿼리를 작성할 경우 의도와 다른 결과를 얻을 수 있으므로 작동순서를 꼭 기억해야 한다.

- 작성순서

 SELECT → FROM → JOIN → ON → WHERE → GROUP BY → HAVING → ORDER BY

 

2. SQL 기본구조: SELECT, FROM

- SELECT

 SELECT문을 사용하여 테이블의 값을 선택한다. 아스테리크(*) 기호를 사용하면 모든 컬럼값을 추출할 수 있다. SQL키워드는 대소문자를 구분하지 않기 때문에 SELECT와 select는 동일하다.

- FROM 

 FROM절은 레코드를 선택할 테이블의 이름을 명시한다. MySQL에서 구문 마지막은 세미콜론(;)으로 끝내야 다수의 SQL을 작성했을 때 실행하고 싶은 구문에 마우스 커서를 두고 ctrl + Enter버튼을 누르면 해당 SQL만 실행할 수 있다.

 

3. SQL 조건문: CASE WHEN

 CASE WHEN절의 WHEN은 조건에 따라 더 추가할 수 있다. 조건식을 모두 만족하지 않을 경우, ELSE로 간주된다.

 가장 상단에 위치하는 WHEN을 우선으로 하여 참과 거짓을 구분하고, 거짓일 경우 그다음 WHEN 절을 수행하고, 마지막 조건까지 거짓일 경우 제일 마지막에 ELSE절을 수행해 결과를 도출한다.

-- CASE WHEN의 기본구조
SELECT CASE WHEN 조건식1 THEN 결과1
            WHEN 조건식2 THEN 결과2
            ELSE 결과3 
            END AS 새로운 컬럼이름
FROM 테이블명
;

 

4. 조건문을 지원하는 연산자 (feat.NULL)

 NULL은 '알 수 없는 값' 또는 '없음'을 나타낸다. 빈 문자열이나 0과는 다른 개념으로, 아예 값이 존재하지 않음을 의미한다. 일반적인 비교연산자(=, !=)가 아닌 IS NULL과 IS NOT NULL을 이용해 값을 검사한다,

연산자 예시 의미
>, < N<10, N>10 N이 10 미만, N이 10 초과
>=, <= N<=10, N>=10 N이 10 이하, N이 10 이상
= N=10 N이 10인 값
!= N!=10 N이 10이 아닌 값 
LIKE LIKE('%과자%') 문자열이 ~와 같을 때 문자열을 기준으로 앞,뒤 문자열과 상관없이 볼 때 %를 앞뒤에 작성
%는 0개 이상의 임의의 문자를 의미함
LIKE('_과자_') _는 단일의 임의이 문자를 의미
이 위치에 정확히 한 개의 문자가 올 수 있음 의미.
AND A AND B A 그리고 B를 모두 만족하는 값
OR A OR B A 또는 B인 값
NOT, ! NOT A, !A A가 아닌 값 
BETWEEN A BETWEEN 10 AND 20 A가 10과 20 사이에 포함된 값. 10과 20도 포함.
IN A IN B B에 A가 포함된 값
NOT IN A NOT IN B B에 A가 포함되지 않은 값
IS NULL A IS NULL A 값이 비어있는 값
IS NUT NULL A IS NOT NULL A 값이 비어있지 않는 값

 

5. 결과값 정렬: ORDER BY

 ORDER BY구문은 특정 열(Column)을 기준으로 결과값을 출력할 때 사용된다. 필수 구문은 아니다. 기본값은 ASC(오름차순)으로 내림차순으로 정렬하고 싶으면 DESC를 적으면 된다.

 

6. MySQL에서 출력 개수 제한: LIMIT & OFFSET

 제일 마지막에 LIMIT구문을 작성해 주면 출력되는 데이터의 수를 제한할 수 있다. OFFSET을 사용하면 2번째로 작은 값을 구하거나 큰 값을 구할 수 있다(첫 번째 행을 건너뛰고 그다음 값을 선택).

 

7. 자료형

구분 Data type
문자형(String) VARCHAR(size) VARIABLE 길이 문자열
(문자, 숫자 및 특수 문자를 포함할 수 있음)
수치형(Numeric)

INT(size) 정수
FLOAT(size, d) 실수(소수점)
날짜 및 시간 DATE 날짜. (YYYY-MM-DD)
DATETIME(fsp) 날짜와 시간의 조합.
(YYYY-MM-DD hh:mm:ss)

 

8. 함수

함수 예시 의미
UPPER(값) SELECT UPPER('abc'); 값을 대문자로 변경
LOWER(값) SELECT LOWER('ABC'); 값을 소문자로 변경
IFNULL(값, 대체값) SELECT IFNULL(값, "Null일 경우 대체 값") FROM 테이블명; NULL 값을 다른 값으로 대체
DATE_FORMAT
(포맷할문자, “형식”)
DATE_FORMAT(DATETIME, "%Y-%m-%d") 날짜 형식 설정
CAST (값 AS 데이터 형식) CAST(날짜 AS date) 주어진 값을 지정된 데이터 유형으로 변환

 

 CAST 함수로 변환할 수 있는 데이터 형식은 DATE, DATETIME, TIME, DECIMAL, CHAR, NCHAR, SIGNED, UNSIGNED, BINARY 이 있다.