SELECT / WHERE / ORDER BY / GROUP BY

a.rubz·2023년 1월 11일

SQL

목록 보기
1/3
post-thumbnail

📝 SELECT ~ FROM

📌 USE문

  • 사용할 데이터베이스를 지정

  • 한 번만 실행하면 이후 SQL문은 USE로 지정한 데이터베이스 사용

USE 데이터베이스_이름;

📌 SELECT문의 기본 형식

  • 대괄호로 묶인 부분은 생략 가능 (조건에 따라 추가하는 것)

  • 생략 가능하지만 순서는 지켜야함

  • SELECT > FROM > WHERE > GROUP BY > HAVING > ORDER BY > LIMIT

SELECT select_expr
	[FROM table_references]
	[WHERE where_condision]
	[GROUP BY {col_name | expr | position}]
	[HAVING where_condition]
	[ORDER BY {col_name | expr | position}]
	[LIMIT {[offset,] row_count | row_count OFFSET offset}]

📌 SELECT ~ FROM

  • SELECT : 테이블에서 데이터를 가져올 때 사용하는 예약어

  • 열_이름 : 데이터를 가져올 열의 이름을 명시

  • FROM : 데이터를 가져올 테이블 지정

SELECT 열_이름 FROM 테이블_이름

📌 테이블에서 모든 열의 내용 가져오기

SELECT * FROM 테이블_이름;

📌 여러 개의 열 가져오기

  • 열_이름을 콤마(,)로 구분
SELECT 열_이름1, 열_이름2, 열_이름3... FROM 테이블_이름;

📌 테이블 열 이름 지정하기

  • 열_이름 뒤에 공백문자 다음 별칭 지정

  • 별칭에 '' 생략 가능

  • 이름을 지정하지 않는 열도 함께 작성 가능

SELECT 열_이름1 별칭1, 열_이름2 '별칭2', 열_이름3 FROM 테이블_이름;


📝 SELECT ~ FROM ~ WHERE

📌 WHERE 절

SELECT 열_이름 FROM 테이블_이름 WHERE 조건식;

📌 전체 데이터 중 특정 데이터만 가져오려면?

SELECT * FROM 테이블_이름 WHERE 열_이름 = '특정데이터';

📌 관계 연산자, 논리 연산자

  • WHERE절에서는 관계, 논리 연산자를 활용해 원하는 데이터를 가져옴

  • 관계 연산자 : >, <, >=, <=, =

  • 논리 연산자 : AND, OR


📌 평균 키가 162 이하인 회원을 검색하려면?

SELECT mem_id, mem_name FROM member WHERE height <= 162;

📌 평균 키(height)가 165 이상이면서 인원(mem_number)가 6명 초과인 회원은?

SELECT mem_name, height, mem_number 
	FROM member
	WHERE height >= 165 AND mem_number > 6; 

📌 BETWEEN ~ AND

  • 숫자의 범위를 조건식에서 사용할 때 편리

  • 평균 키(height)가 163이상 165이하인 회원을 검색할 경우

#일반 조건식
SELECT * 
	FROM member
	WHERE height >= 163 AND height > 165;
#BETWEEN ~ AND 사용
SELECT * 
	FROM member
	WHERE height BETWEEN height 163 AND 165;

📌 IN()

  • 문자로 표현되는 조건식을 조합할 때 편리

  • 주소가 경기/전남/경남 인 회원을 검색

#일반 조건식
SELECT mem_name, addr
	FROM member
	WHERE addr = '경기' OR addr = '전남' OR addr ='경남';
#IN() 사용
SELECT mem_name, addr
	FROM member
	WHERE IN('경기', '전남', '경남');

📌 LIKE()

  • 문자열의 일부 글자를 검색할 때 사용

  • % : 무엇이든 허용

  • _ : 한 글자 매치

#이름(mem_name)이 ‘우’ 로 시작하는 회원 검색
SELECT * FROM member WHERE mem_name LIKE '우%';
#이름이 ‘XX핑크’ 인 회원 검색
SELECT * FROM member WHERE mem_name LIKE '__핑크';

📌 서브쿼리

  • SELECT 안에 또 다른 SELECT

  • 이름(mem_name)이 ‘에이핑크’인 회원의 평균 키(height) 보다 큰 모든 회원을 검색

# 서브쿼리를 사용하지 않은 방법

#에이핑크의 평균 키(height) 알아오기
SELECT height FROM member WHERE mem_name = '에이핑크';

#평균 키(height)가 164보다 큰 회원 검색
SELECT mem_name, height FROM member WHERE height > 164;
# 서브쿼리 사용
SELECT mem_name, height FROM member 
	WHERE height > (SELECT height FROM member WHERE mem_name = '에이핑크');


📝 ORDER BY

📌 ORDER BY

  • 결과의 값이나 개수에 대해서는 영향을 미치지 않지만, 결과가 출력되는 순서를 조절

  • default가 ASC(오름차순)

#데뷔일자가 빠른 순서대로 출력
SELECT mem_id, mem_name, debut_date FROM member ORDER BY debut_date;
#데뷔일자가 늦은 순서로 출력
SELECT mem_id, mem_name, debut_date FROM member ORDER BY debut_date DESC;

📌 여러 개의 열 순서 지정

#평균 키가 큰 순으로 정렬
#평균 키가 같을 때는 데뷔일자가 빠른 순서로 정렬
SELECT mem_id, mem_name, debut_date, height
	FROM member
	WHERE height >= 164
	ORDER BY height DESC, debut_date ASC;

📌 LIMIT

  • 출력하는 개수 제한

  • LIMIT 시작, 개수 또는 LIMIT 개수 OFFSET 시작으로 작성 가능

#출력 개수 3개로 제한
SELECT mem_name, debut_date
	FROM member
	ORDER BY debut_date
	LIMIT 3; #LIMIT 0,3 또는 LIMIT 3 OFFSET 0으로 작성 가능

📌 DISTINCT

  • 조회된 결과에서 중복된 데이터를 1개만 남김 (중복 제거)
SELECT DISTINCT addr FROM member;


📝 GROUP BY

📌 GROUP BY

  • 출력 결과를 그룹으로 묶어줌

  • 집계함수와 함께 사용


📌 집계 함수

  • SUM() : 합계
  • AVG() : 평균
  • MIN() : 최소값
  • MAX() : 최대값
  • COUNT() : 행의 개수
  • COUNT(DISTINCT) : 행의 개수 (중복 제거)

📌 각 회원이 구매한 금액의 총합 출력하기

SELECT mem_id, SUM(price*amount) FROM buy GROUP BY mem_id;

📌 HAVING 절

  • 집계 함수에 대해서 조건을 제한하는 것

  • GROUP BY절 다음에 나옴

#총 구매액이 1000 이상인 회원
SELECT mem_id, SUM(price*amount) 
	FROM buy
	GROUP BY mem_id
	HAVING SUM(price*amount) > 1000;
profile
🔥 개발 공부 🔥

0개의 댓글