본문 바로가기

연구원생활

[SQL] 데이터 조회하기 / 조건 표현식

728x90
반응형
참고 | [SQL] SQL 쿼리문 작성 형식
 

[SQL] SQL 쿼리문 작성 형식

✏️ SQL 작성 형식 SQL 문 끝에는 항상 세미콜론(;) 추가SQL 문 안에는 공백이나 개행 등을 자유롭게 넣을 수 있음내장된 키워드들(예약어)는 대문자로 적는 것이 관례이나, 대소문자 가리지 않음

jeonyeong.tistory.com


✏️ 데이터 조회 구문

 SELECT 

  • 테이블의 데이터를 조회할 때 사용하는 구문
# copang_main 데이터베이스의 member 테이블에서 모든 열의 정보 조회
SELECT * FROM copang_main.member

# copang_main 데이터베이스의 member 테이블에서 email, age, address 열만 조회
SELECT email, age, address FROM copang_main.member

 WHERE 

  • 특정 조건을 만족하는 row들만 조회하고자 할 때 사용하는 구문
# member 테이블에서 email이 'taehos@hanmail.net' 행만 조회
SELECT * FROM copang_main.member 
	WHERE email = 'taehos@hanmail.net';

 BETWEEN [A] AND [B

  • 조건이 범위일 경우 (A ~ B) 사용하는 구문
  • ex. 30 ~ 39 →  BETWEEN 30 AND 39 
# member 테이블에서 age 값이 30 ~ 39 사이에 해당하는 데이터만 조회하기
## 즉, 30대 회원정보만 추출
SELECT * FROM copang_main.member 
	WHERE age BETWEEN 30 AND 39 ;

✏️ 조건 표현 식

 !=  <>

  • 같지 않음
# gender가 'm'이 아닌 회원들의 데이터 조회하기
SELECT * FROM copang_main.member WHERE gender != 'm' ;
SELECT * FROM copang_main.member WHERE gender <> 'm' ;

 IN( )  

  • ~ 안에 있는
# age가 20, 30인 회원정보만 추출하기
SELECT * FROM copang_main.member WHERE age IN (20,30);

 %  

  • 임의의 길이를 가진 문자열
# 서울로 시작하는 문자열
SELECT * FROM copang_main.member WHERE emil LIKE '서울%' ; 

# "고양시"가 포함된 모든 문자열
SELECT * FROM copang_main.member WHERE emil LIKE '%고양시%' ;

 _ 

  • 한글자를 나타내는 문자열
# 이메일이 c로 시작하면서 5글자 뒤에 '@'문자가 들어가는 문자열
SELECT * FROM copang_main.member WHERE emil LIKE 'c_____@%' ;

🔖 Escaping (이스케이핑)
  • 원래 특정 의미를 나타내던 문자(ex. %, _)를 그 특정 의미가 아니라, 일반적인 문자처럼 취급하는 행위
  • 즉, 어떤 문자가 그것에 부여된 특정한 의미, 기능으로 해석되는 게 아니라 그냥 단순한 문자 하나로 해석되도록 하는 것
  • 역슬래쉬(\)를 붙여서 이스케이핑 가능
    • \\’ : 작은따옴표 이스케이핑
    • \\_ : 언더바 이스케이핑
🔖 대소문자 구분
  • %g% 라고 사용한다면, G, g가 포함된 모든 문자열을 조회함
    • 만약 소문자 g만 조회하고 싶다면, BINARY ‘%g%’ 라고 써야 함
    • 만약 소문자 G만 조회하고 싶다면, BINARY ‘%G%’ 라고 써야 함

✏️ Date 타입 데이터 다루기

 YEAR() 

  • 날짜값에서 년도만 추출
# 1992년에 태어난 회원들만 조회하기
SELECT * FROM copang_main.member WHERE YEAR(birthday) = '1992' ;

 MONTH() 

  • 날짜값에서 만 추출
# 여름(6, 7, 8월)에 가입한 회원들만 조회하기
SELECT * FROM copang_main.member WHERE MONTH(sign_up_day) IN (6, 7, 8) ;

 DAYOFMONTH() 

  • 날짜값에서 만 추출
# 각 달의 후반부 (15일 ~ 31일)에 가입했던 회원들만 조회하기
SELECT * FROM copang_main.member WHERE DAYOFMONTH(sign_up_day) BETWEEN 15 and 31 ;

 DATEDIFF(A, B) 

  • 날짜간의 차이 (날짜a - 날짜b)
# 각 회원이 가입한 일자가 2019년 1월 1일 기준으로 며칠 이후인지 조회하기
SELECT email, sign_up_day, DATEDIFF(sign_up_day, '2019-01-01')
	FROM copang_main.member ;

 CURDATE( ) 

  • 오늘 날짜
# 오늘 날짜 기준으로 살펴보기
SELECT email, sign_up_day, CURDATE(), DATEDIFF(sign_up_day, CURDATE())
	FROM copang_main.member ;

 DATE_ADD(A, B) 

  • 날짜 A에서 일수B 더하기
# 가입일 기준으로 300일 이후의 날짜 구하기
SELECT email, sign_up_day, DATE_ADD(sign_up_day, INTERVAL 300 DAY)
	FROM copang_main.member ;

 DATE_SUB(A, B) 

  • 날짜 A에서 일수B 빼기
# 가입일 기준으로 250일 이전의 날짜 구하기
SELECT email, sign_up_day, DATE_SUB(sign_up_day, INTERVAL 250 DAY)
	FROM copang_main.member ;

🔖  UNIX_TIMESTAMP( )  와  FROM_UNIXTIME( ) 
  • UNIX_TIMESTAMP() 는 특정 날짜의 특정 시간을 1970- 01-01 기준으로 총 몇 초가 지났는지 나타냄
  • FROM_UNIXTIME()UNIX_TIMESTAMP() 을 사람이 읽을 수 있는 날짜 형태로 변환
SELECT email, sign_up_day, FROM_UNIXTIME(UNIX_TIMESTAMP(sign_up_day))
	FROM copang_main.member ;

📖 참고 강의
코드잇 |  SQL로 하는 데이터 분석
코드잇 |  SQL로 하는 데이터 관리
728x90
반응형