목차
개요
SQL이란?
Structured Query Language의 약자로, 구조화된 질의어라는 뜻!
RDBMS에서 공통으로 사용되는 약속된 언어 (엑셀의 함수와 비슷)
RDBMS란?
DBMS = Database Management System
RDBMS = Relational DBMS
여러 테이블에서 데이터를 참조하여 연결한다는 의미 (엑셀의 시트와 비슷)
종류 mysql / oracle 등
데이터의 입력 | 데이터의 관리 | 데이터의 활용 |
수집된 데이터를 DBMS에 입력 | 입력된 데이터의 보관과 관리 | 데이터의 조회와 추출 |
예시문법) Insert | 예시문법) Update | 예시문법) Select |
우리가 앞으로 다루게 될 범위
SQLD자격증 시험은 전범위를 넓고 얕게 다루며 + Oracle과 Mysql 두 가지를 모두 배운다면
실제현업 에서는 ‘데이터의 활용’ 부분을 좁고 깊게 다루게 되며, 여기서는 Mysql 기준으로 배워봅시다 : )
SQL의 기본요소
SQL의 3요소
키워드 문법성 기능이 예약되어 있는 단어 = 목적하는 행위를 나타내는 명령어 (ex. SELECT)
속성 선택하고자 하는 대상 = 저장되어 있는 데이터
함수
1. 키워드
[SQL문 대표 키워드]
DDL | DML | DCL | TCL |
= Data Definition Language | = Manipulation | = Control | = Transaction Control |
CREATE | INSERT | GRANT | COMMIT |
ALTER | DELETE | REVOKE | ROLLBACK |
RENAME | UPDATE | ROLLBACK 등 | |
DROP 등 | SELECT |
[기타 예약된 키워드]
FROM | 참조할 테이블의 정의 |
WHERE | 추출 조건 정의 |
ORDER BY | 칼럼의 그룹화 |
GROUP BY | 추출한 데이터의 순서 정렬 |
우리가 앞으로 자주 쓰게 될 키워드 = SELECT FROM WHERE GROUP BY ORDER BY
예시
SELECT _____ FROM _____
SELECT _____ FROM _____ WHERE ______
SELECT _____ FROM _____ WHERE ______ GROUP BY ______
SELECT _____ FROM _____ WHERE ______ GROUP BY ______ ORDER BY ______
2. 속성
예시
SELECT 컬럼명 FROM 테이블명
SELECT 컬럼명 FROM 테이블명 WHERE 필터조건
SELECT 컬럼명 FROM 테이블명 WHERE 필터조건 GROUP BY 그룹조건
SELECT 컬럼명 FROM 테이블명 WHERE 필터조건 GROUP BY 그룹조건 ORDER BY 정렬조건
⇒ SELECT 키워드로 선택하고자 하는 대상의 속성을 정의합니다 = 컬럼명
3. 함수
엑셀과 비슷하게 SQL의 함수도 유사한 역할을 해요.
함수의 연산이 행의 개수에 영향을 미치는지에 따라 1) 단일행함수와 2) 다중행함수로 나뉘어요.
함수는 모든절(SELECT, WHERE, GROUP BY, ORDER BY)에서 사용 가능해요.
단일행함수 | ||||
문자함수 | 숫자함수 | 날짜함수 | 변환함수 | 흐름제어함수 |
다중행함수 | ||
집계함수 | 그룹함수 | 윈도우함수 |
⇒ 오늘은 여기까지만. 함수에 대한 더 자세한 내용은 다음시간에 배워봅시다
SQL의 기본문법
SELECT와 FROM은 필수!
SELECT 컬럼명 FROM 테이블명
가장 기본이 되는 뼈대 문법
SELECT 컬럼명 FROM 테이블명 WHERE 필터조건
문법 독해/연산 순서 (FROM > SELECT > WHERE)
예시1 users 테이블의 모든 속성을 추출
예시2 users 테이블에서 유저의 이름과 폰번호, 이메일 정보를 추출하고자 할 때
예시3 users 테이블에서 소셜로그인 정보를 추출하고자 할 때
예제1 product 테이블의 모든 속성을 추출
예제2 product 테이블에서 상품아이디와 판매가, 할인가, 최종가를 추출하고자 할 때
SQL의 기본연산
SELECT 절과 달리, WHERE 절에서는 연산자가 필요해요.
연산자의 종류에는 크게 1) 비교연산자와 2) 논리연산자가 있어요.
1. 비교연산자
기호 | 설명 | 기호 | 설명 |
= | 같음 | >= | 이상 |
> | 보다 큼 | <= | 이하 |
< | 보다 작음 | <> | 같지않음 |
단, 값의 경우 작은 따옴표(')를 사용해서 표기를 해주어야 해요. 숫자의 경우는 제외
예시1 상품가격이 5,000원인 상품의 모든 속성을 추출 (products 테이블에서 추출)
예시2 거주지가 경기도인 유저의 모든 속성을 추출
예시3 가입일자가 2022-08-31인 유저의 모든 속성을 추출
기호 | 숫자 비교 쿼리 | 문자비교쿼리 | 날짜비교쿼리 |
= | SELECT *
FROM product
WHERE price = 5000 | SELECT *
FROM users
WHERE city = ‘경기도’ | SELECT *
FROM users
WHERE DATE(joined_at) = ‘2022-08-31’ |
예제1 상품가격이 5,000원인 상품의 모든 속성을 추출
예제2 거주지가 경기도인 유저의 모든 속성을 추출
예제3 가입일자가 2022-08-31인 유저의 모든 속성을 추출
2. 논리연산자
연산자 | 설명 |
AND | 모든 조건식이 충족할 때 |
OR | 하나라도 조건을 충족할 때 |
BETWEEN | 대상이 범위 안에 존재할 때 |
IN | 목록 중의 속성과 일치할 때 |
NOT IN | 조건이 거짓일 때 |
LIKE | 조건을 만족할 때 (이때, 와일드카드 ‘%’ 또는 ‘_’를 사용하게 돼요) |
예시
연산자 | 설명 |
AND | SELECT * FROM orders WHERE order_city = ‘경상남도’ AND order_city = ‘대구광역시’; |
OR | SELECT * FROM orders WHERE order_city = ‘경상남도’ OR order_city = ‘대구광역시’; |
BETWEEN | SELECT * FROM users WHERE DATE(joined_at) BETWEEN '2022-01-01' AND '2022-01-31'; |
IN | SELECT * FROM orders WHERE order_city IN ('대구광역시', '경상남도'); |
NOT IN | SELECT * FROM orders WHERE order_city NOT IN ('대구광역시', '경상남도'); |
LIKE | SELECT * FROM users WHERE phone LIKE '%45_7%’; |
와일드카드란?
•
여러 데이터에서 부분적으로 일치하는 값이 있는지 확인할 때 사용되는 특수문자
•
WHERE절에서 와일드 카드 문자를 이용하려면 반드시 LIKE 연산자를 함께 이용해야 한다
•
와일드 카드 문자를 이용한 검색은 문자열에서만 사용 가능
예제1 주문지가 경기도이면서, 주문가격이 8,000원 이상인 모든 구매 데이터를 추출 (orders 테이블에서 추출)
예제2 주문가격이 500,000원 이하이거나 마지막 로그인 날짜가 2022-11-31일 이전인 모든 구매 데이터를 추출 (orders 테이블에서 추출)
예제3 네이버를 통해서 소셜로그인한 유저의 user_id를 추출 (users 테이블에서 추출)
SQL의 기본규칙
1.
SQL 명령은 세미콜론(;)으로 끝나요. (단, 필수는 아니에요)
2.
SQL키워드는 대소문자를 구분하지 않아요.
3.
SQL 요소와 요소 사이의 간격은 자유롭게 적용 가능해요.
4.
값을 나타낼때는 작은 따옴표(')를 사용해서 표현해요.
5.
주석은 연산을 진행하지 않아요.