[SQL] SQL 기본 문법 정리

민정·2023년 7월 14일
0

데이터공부

목록 보기
6/9

😕 SELECT 문의 기본 형식

SELECT 추출할 컬럼 이름
	FROM  테이블 이름 
	WHERE  조건 식
	GROUP BY  컬럼 이름 (그룹화할)
	HAVING  조건식  
	ORDER BY 컬럼 이름 (정렬)
	LIMIT 숫자

🟨 SELECT - 조회할 데이터 지정하기

-- SELECT '컬럼명' FROM '테이블명'
SELECT MEMBER_ID,MEMBER_NAME
FROM MEMBER_INFO;

-- * 를 사용하면 테이블 내 모든 컬럼을 조회한다
SELECT * FROM MEMBER_INFO;

🟨 WHERE - 특정 조건을 지정하여 조회하기

-- MEMBER INFO 테이블에서 특정 조건을 지정하여 조회하기

SELECT * 
FROM MEMBER_INFO
	WHERE MEMBER_ID = 1;
  • WHERE 절을 사용하여 특정 조건에 해당하는 데이터만 조회할 수 있음
  • 관계 연산자 / 논리 연산자 가능함

🟧 AND 와 OR

SELECT TRUE OR FALSE AND FALSE ; //1
SELECT (TRUE OR FALSE) AND FALSE ;  //0
  • 여러 조건이 필요한 경우에는 논리 연산자 사용
  • MySQL은 &&나 ||도 가능함

🟧 BETWEEN - 범위 표현식

-- MEMBER_ID 가 0이상 7 이하인 데이터 조회
SELECT *
FROM MEMBER_INFO
WHERE MEMBER_ID BETWEEN 0 AND 7;
  • 특정 범위에 해당하는 데이터를 조회할 수 있다.
SELECT *
FROM MEMBER_INFO
WHERE CREATION_DATE BETWEEN '2022-10-01' AND '2022-10-30'
  • 날짜 지정도 가능하다.

🟧 IN () - 여러 개의 값을 매칭시키기

SELECT *
FROM MEMBER_INFO
WHERE MEMBER_NAME IN('체다','이체다','조체다','바보')

SELECT *
FROM MEMBER_INFO
WHERE MEMBER_NAME = '체다' AND MEMBER_NAME = '이체다' AND MEMBER_NAME = '조체다' AND MEMBER_NAME = '바보';
  • IN 연산자를 사용해서 특정 값이 포함된 데이터를 조회할 수 있음
  • IN 연산자는 ‘=’를 여러번 수행하는 효과를 가진다. 따라서 편리하게 활용할 수 있음 !

🟧 LIKE - 문자열의 일부 글자 검색

-- content 컬럼 값들 중에 '체'로 시작하는 두 글자 데이터 조회
SELECT *
FROM MEMBER
WHERE CONTENT LIKE '체_';

-- content 컬럼 값들 중에서 '체'로 시작하는 모든 데이터 조회
SELECT *
FROM MEMBER
WHERE CONTENT LIKE '체%';

-- content 컬럼 값들 중에서 '체'가 들어가는 모든 데이터 조회
SELECT *
FROM MEMBER
WHERE CONTENT LIKE '%체%';
  • 문자열 검색
  • _: 한글자만 매칭
  • %:몇글자든 앞뒤로 있으면 된다.

🟧 서브 쿼리로도 사용 가능

SELECT MEMBER_NAME, CONTENT,MEMBER_ID,CREATION_DATE
FROM MEMBER 
WHERE CREATION_DATE < 
(SELECT CREATION_DATE FROM MEMBER WHERE MEMBER_ID LIKE '이체다바보');
  • 2개의 SQL 문을 활용하여 하나로 만들 수 있다

🟨 ORDER BY - 조회된 데이터 정렬하기

SELECT *
FROM MEMBER
ORDER BY CREATION DATE ASC;
  • ORDER BY 를 활용하여 데이터를 정렬할 수 있다.
  • WHERE 다음에 나와야 한다.
  • ASC (ascending order) → 오름차순으로 정렬 (생략시 기본값으로 설정된다.)
  • DESC (descending order) → 내림차순으로 정렬
-- member 테이블에서 member name 이 이체다바보임 데이터를 조회하여
-- creation date 순으로 내림차순으로 정렬하고 동일한 값이라면 member id 기준 오름차순 정렬 
SELECT *
FROM MEMBER
WHERE MEMBER_NAME LIKE '이체다바보'
ORDER BY CREATION_DATE DESC, MEMBER_ID;

🟨 LIMIT - 출력 개수 제한

SELECT *
FROM MEMBER
LIMIT 3 -- 제일 위에 3건만 조회

SELECT * 
FROM MEMBER
LIMIT 3,2; -- 3번째 데이터부터 2건만 조회
LIMIT 2 OFFSET 3; -- 위와 동일

SELECT *
FROM MEMBER
ORDER BY CREATION_DATE -- creation date로 정렬한 후 제일 위에 1건만 조회
LIMIT 1;
  • LIMIT 시작, 개수
  • LIMIT 뒤에 하나의 숫자만 입력 시 처음부터 N개 까지의 데이터만 가져옴

🟨 DISTINCT - 중복 데이터 제거

-- 
SELECT DISTINCT MEMBER_ID
FROM MEMBER
  • DISTINCT 를 열 이름 앞에 붙이면 중복된 값은 한개만 출력

🟨 GROUP BY - 그룹화

SELECT MEMBER_ID, COUNT(*) AS REVIEW_CNT
FROM MEMBER
GROUP BY MEMBER_ID'
  • 컬럼이 같은 데이터를 중심으로 그룹화
  • 집계함수와 같이 쓰인다

🟧 집계 함수

SUM()총 합계
AVG()평균
MIN()최소값
MAX()최대값
COUNT()행의 개수
COUNT(DISTINCT)행의 개수

🟧 COUNT

  • COUNT(*) 연산은 모든 행을 대상으로 이루어지기 때문에 NULL 값이 포함되어 있어도 카운트가 된다.
  • COUNT(REVIEW) 연산은 해당 컬럼에 NULL 값이 있을 경우 카운트 하지 않는다.

🟨 HAVING - 그룹 조건으로 사용

-- member id 를 기준으로 그룹화
-- 그룹화된 데이터에서 리뷰 개수가 100 이상인 그룹만 남김
-- 조건에 걸러진 그룹에서 리뷰 개수를 조회
SELECT COUNT(REVIEW_CONTENT) AS CNT_REVIEW
FROM MEMBER
GROUP BY MEMBER_ID
HAVING COUNT(REVIEW_CONTENT)>100;
  • 그룹화된 데이터에 대하여 조건을 걸어 사용한다.
  • GROUP BY 뒤에 위치해야 한다

참고

https://rachel0115.tistory.com/entry/SQL-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%A6%AC-SELECT-%EC%A0%88

profile
공부 기록장

0개의 댓글