Backend/MySQL

SQL - Select

개발자의 첫 걸음 2025. 8. 9. 10:00

 

안녕하세요. 이번시간에는 MySQL에서 자주보이는 키워드

 

select(선택, 조회)에 대해 알아볼게요. 

 

 

 

Select

 

Select는 영단어의 뜻 그대로 선택해서 조회하는 기능으로

 

무엇을 선택할 것인지 결정하는 키워드입니다.

 

Select의 기본구조(작성순서)를 표로 간단하게 나열해 봤어요.

 

1. select 컬럼명 ( 열 목록 ) 원하는 컬럼 (열) 지정
2. from 테이블명 어떤 테이블에서 데이터를 가져올 지 결정
3. where 조건식 특정 조건에 맞는 데이터만 선택 (필터링 기능)
4. group by 그룹화할 컬럼명 특정 열의 기준으로 그룹화
5. having 그룹 조건 그룹화된 데이터에 대한 조건 지정
6. order by 그룹 조건 그룹화 된 데이터에 대한 조건 지정
7. limit 컬럼 수 제한 반환할 행(레코드)의 수를 제한

 

다음은 select의 사용예제들을 소개해드릴게요.

 

 

 

Select의 사용예제 

 

1. 기본 조회: select 칼럼명 from `데이터베이스명`.`테이블명`;

 

select `name` from `korea_db`.`members`;

 

기본 조회는 단순하게 정렬하지 않고 조회 시 데이터 입력 순서대로 출력하는 방법이에요.

 

 

+)  전체 컬럼 조회 (전체 테이블 조회)

 

select * from `korea_db`.`members`; -- 회원 테이블
select * from `korea_db`.`purchases`; -- 구매 목록 테이블

전체 컬럼 조회는 컬럼명 작성에 *(전체)를 사용하여 조회하는 방법이에요.

 

+) 두 개 이상의 컬럼 조회 시 , (콤마)로 구분하여 나열

select `member_id`, `name`, `contact` 
from `members`;

 

+) alias 별칭 부여 조회 (as 키워드)

select `member_id` as 고유번호, `name` as '회원 이름', `contact` as '회원 연락처'
from `members`;

select에 별칭 부여하지 않을 경우 테이블 생성 시 지정한 칼럼명으로 조회가 되고,

 

공백 사용 시 따옴표('')로 반드시 지정을 해주셔야 해요.

 

 

 

2. 특정 조건에 부합하는 데이터 조회

 

# : select A from B where C (A: 칼럼명, B: 테이블명, C: 조건식-연산자)

 

select `member_id`, `name`, `points`
from `members`
where
	# 조건절에는 true/false(논리값)를 반환하는 연산자 사용 
	points > 200;

 

 

+) 특정조건에 부합하는 데이터 조회 - 연산자 종류

 

# 1) 관계 연산자

# : 이상, 이하, 초과, 미만, 일치(=), 불일치(!=)
select * from `members`
where
	name = 'Minji';


# 2) 논리 연산자

# and, or, not
# : 여러 조건을 조합하여 데이터 조회

# and - 모든 조건이 참
select * from `members`
where
	area_code = 'Jeju' and points >= 400;

# or - 조건 중 하나라도 참
select * from `members`
where
	area_code = 'Busan' or area_code = 'Seoul';
    
# not - 조건이 거짓일 때 (결과를 반대)
select * from `members`
where
	not area_code = 'Busan';


# 3) null값 연산

# : 직접적인 연산 X
-- select * from `members`
-- where
-- 	points = null;

# cf) null이 '값이 없음'을 나타냄: 그 어떤 값과도 비교하거나 연산이 불가
#	>> is null, is not null 연산자 사용 - null 여부 확인 가능(true/false)

# A is null
# null인 경우 true, 아닌 경우 false

# A is not null
# null인 경우 false, 아닌 경우 true

select * from `members`
where
	points is not null;
    
    
# 4) between A and B 연산자 

# : A와 B 사이에
# - 숫자형 데이터, 날짜형 데이터에 주로 사용
select * from `members`
where
	points between 200 and 400; -- 이상, 이하 

select * from `members`
where
	join_date between '2021-12-31' and '2022-01-09';


# 5) in 연산자

# : 지정할 범위의 문자 데이터를 나열
# - 지정된 리스트 중에서 일치하는 값이 있으면 true
select * from `members`
where
	area_code in('Seoul', 'Busan', 'Jeju');
# > 문자열 데이터에 대한 or식 간소화


# 6) like 연산자

# : 문자열 일부를 검색

 

+) 와일드카드 문자

 

와일드카드 문자는 _(언더스코어), %(퍼센트)를 사용하여 특정조건에 맞는 칼럼명을 조회할 수 있어요.

 

_(언더스코어) 하나의 기호가 한 글자를 허용 (정확하게 하나의 임의의 문자 공간을 나타냄)
%(퍼센트) 무엇이든지 허용 (0개 이상의 임의의 문자 공간을 나타냄)

 

# 시작이 J이고 뒤는 0개 이상의 문자를 허용 검색: J%
select * from `members`
where
	name like 'J%';
    
    
# 시작이 J이고 뒤는 3개의 임의의 문자를 허용 검색: J___
select * from `members`
where
	name like 'J___';
    

# 어떤 문자열 내에서든 'un'이 포함만 되면 허용 검색: %un%
select * from `members`
where
	name like '%un%';
    

# 1개의 임의의 문자 + u + 0개이상의 임의의 문자 허용 검색
#	(이름의 두 번째 글자가 u인 모든 회원 조회): _u%
select * from `members`
where
	name like '_u%';
    

# 이름이 4글자인 모든 회원 조회: ____
select * from `members`
where
	name like '____';

 

 

 

3. 날짜와 시간 조회

 

날짜와 시간조회는  date, time을 사용하여 특정조건에 맞는 칼럼명을 조회할 수 있어요.

 

 date 'YYYY-MM-DD'
time 'HH:mm:SS'
=, != 일치, 불일치
between A and B 기간값 조회

 

# +) 특정 시간 기준 그 이후의 데이터 조회
select * from `members`
where
	join_date > '2022-01-02';
    
    
# +) 날짜나 시간의 특정 부분과 일치하는 데이터 조회
# 날짜: year(컬럼명), month(컬럼명), day(컬럼명)
# 시간: hour(컬럼명), minute(컬럼명), second(컬럼명)

select * from `members`
where
	year(join_date) = '2024';


# +) 현재 날짜나 시간을 기준으로 조회
# curdate(): 현재 날짜만 반환
# now(): 현재 날짜 + 시간 반환

select * from `members`
where
	join_date < curdate();
    
select curdate();
select now();

 

 

 

여기까지 MySQL에 사용하는 키워드 중 select에 대해 알아봤는데요.

 

select사용으로 데이터를 효율적으로 조회. 분석. 가공할 수 있을 것 같아요.

 

 

'Backend > MySQL' 카테고리의 다른 글

SQL - 구성 요소  (3) 2025.08.24
SQL - Subquery  (5) 2025.08.10
SQL 제약조건  (8) 2025.08.07
SQL의 무결성  (4) 2025.08.05
SQL의 기초 - 데이터베이스  (10) 2025.08.03