티스토리 뷰
SQL은 데이터베이스 관리 시스템(DBMS)에서 데이터를 조작, 검색하기 위한 표준화된 언어입니다. 특히 데이터베이스에 쿼리(Query)를 보내 원하는 데이터를 가져오거나 삽입할 수 있습니다.
1. 조회를 위한 SELECT
SELECT 조회를 원하는 칼럼명 FROM 테이블명
*은 모든 칼럼을 출력하여 조회할 때 사용됩니다.
ex) sakila.customer 테이블에서 first_name, last_name 칼럼을 조회
SELECT first_name, last_name FROM sakila.customer;
2. SQL 쿼리 적는 순서
SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY - LIMIT
SQL 실행 순서 : FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY
3. 집계함수와 GROUP BY
SELECT 집계함수(칼럼명) FROM 테이블명
집계함수에는 SUM, MAX, MIN, AVG, COUNT, STDDEV, VARIANCE 등이 있습니다.
ex) sakila.customer 테이블에서 address_id의 평균 조회
SELECT AVG(address_id) FROM sakila.customer;
GROUP BY는 같은 값을 가진 칼럼끼리 그룹을 지어서 조회할 수 있는 문법입니다.
GROUPY BY를 사용하기 위해서는 집계함수를 필수로 사용해야 합니다.
ex) sakila.customer 테이블에서 활성 상태(active)가 1 또는 0인 고객의 수를 각각 구하기
SELECT active, COUNT(*) AS total_customer FROM sakila.customer GROUP BY active;
GROUP BY에 사용된 칼럼 이외 칼럼은 단독으로 SELECT 절에 사용할 수 없습니다. => GROUP BY에 사용된 단일 행(칼럼)은 단독으로 SELECT 절에 사용할 수 있지만 그 이외의 칼럼은 사용 불가능!
ex) 부서별 최대 연봉을 알아볼 때 누가 최대 연봉을 받는지 알아보기 위해 ename 칼럼을 조회하면 에러 발생
HAVING 절은 GROUP BY로 그룹화를 한 후 적용할 조건입니다.
ex) 각 store_id 별 고객 수가 2명 이상인 store 찾기
SELECT store_id, COUNT(*) AS total_store FROM sakila.customer
GROUP BY store_id HAVING COUNT(*)>=2;
4. 전체 테이블에서 조건을 적용하는 WHERE
ex) Active 상태가 1인 고객만 조회하기
SELECT * FROM sakila.customer WHRE active=1;
WHERE 절에는 별칭을 사용할 수 없습니다.
WHERE문의 SQL 연산자
- IN 연산자 : 하나의 조건만 충족해도 조회되는 것 == OR 연산자
- LIKE : 부분적으로 일치하는 칼럼을 조회할 때 사용
ex) 어떤 문자를 포함한 모든 것을 조회하는 '%'
SELECT * FROM sakila.customer WHERE first_name LIKE '%LEE%'; #이름에 LEE 글자가 포함된 데이터 추출
ex) 단일 문자만 조회하는 '_'
SELECT * FROM 테이블명 WHERE LIKE 'TEST_'; #TEST로 시작하고 하나의 글자만 더 있는 데이터 조회
- BETWEEN 연산자 : 특정 값의 범위에 따라 조회할 때 사용
SELECT * FROM sakila.customer WHERE customer_id BETWEEN 2 AND 4; #customer_id가 2부터 4인 데이터
5. 정렬을 위한 ORDER BY
ORDER BY DESC는 내림차순, ORDER BY ASC는 오름차순
ex) store_id 기준으로 오름차순 정렬하고 그 안에서 last_update 기준으로 내림차순 정렬
SELECT * FROM sakila.customer ORDER BY store_id ASC, last_update DESC;
6. 중복 제거를 위한 DISTINCT
ex) store_id와 active 칼럼의 고유한 조합 조회
SELECT DISTINCT store_id, active FROM sakila.customer;
7. 결과의 개수를 정하는 LIMIT
ex) address_id가 가장 높은 데이터 조회
SELECT * FROM sakila.customer ORDER BY address_id DESC LIMIT 1
'MySQL' 카테고리의 다른 글
[3] WITH 문 연습 (0) | 2025.04.08 |
---|---|
[2] 서브쿼리(Subquery) (0) | 2025.01.08 |
- 파이썬 #코딩테스트 #프로그래머스 #스택 #큐
- 머신러닝 #xgboost #
- 파이썬 #시각화 #matplotlib
- 로지스틱 회귀 #오즈비 #최대우도추정법 #머신러닝
- pca #주성분분석 #특이값분해 #고유값분해 #공분산행렬 #차원의 저주
- #tf idf
- #python #프로그래머스 #외계어사전 #itertools #순열과조합
- python #프로그래머스 #겹치는선분의길이
- #프로그래머스 #안전지대 #시뮬레이션
- html #javascript #구구단 출력
- randomforest #bagging #머신러닝 #하이퍼파라미터 튜닝
- nlp #토큰화 #nltk #konply
- #attention #deeplearning
- 프로젝트 #머신러닝 #regression #eda #preprocessing #modeling
- 머신러닝 #project #classification #dacon
- rnn #딥러닝 #시계열 데이터 #장기의존성 문제
- subquery #sql 코딩테스트
- #seq2seq #encoder #decoder #teacher forcing
- #opencv #이미지 읽기 #이미지 제작 #관심영역 지정 #스레시홀딩
- 자연어 처리 #정제 #정규표현식 #어간 추출 #표제어 추출
- 잘라서 배열로 저장하기 #2차원으로 만들기
- 머신러닝 #lightgbm #goss #ebf
- gan #생성자 #판별자 #적대적 신경 신경망 #딥러닝 #computer vision
- python #deque #프로그래머스 #공 던지기 #문자열 계산하기 #코딩테스트
- python #프로그래머스 #리스트 #인덱싱
- seaborn #데이터시각화 #타이타닉
- 딥러닝 #오차역전파 #연쇄법칙 #계산그래프 #최적화
- #물고기 종류별 대어 찾기 #즐겨찾기가 가장 많은 식당 정보 출력하기 #mysql #programmers
- #opencv #이미지 연산 #합성
- #자연어 처리 #정수 인코딩 #빈도 수 기반