푸잉이의 기술블로그

1주차) 엑셀보다 쉬운 SQL #Select #Where #Limit #Distinct #Count#Format 변경 #날짜 데이터 일부 추출 본문

IT/SQL

1주차) 엑셀보다 쉬운 SQL #Select #Where #Limit #Distinct #Count#Format 변경 #날짜 데이터 일부 추출

data고수 2022. 6. 27. 21:26

월욜 8시 스터디 신청을 했다. 일 끝나고 시간을 보니 7시!

'스터디 전 수업을 들어야 하는 건가?' 라고 생각해서 밥도 안 먹고 수업을 듣기 시작했다. 

이 강의는 길게 한번에 듣는 강의가 아닌 나눠서 짧게 (1분) 길게 (8분)까지 나눠서 수업을 들어 좋았다.

석사 전공이 바이오 였지만, 학부 때 나름 공대라고 C++과 수치해석 수업 들었던 기억들이 생각 났다ㅋㅋ

 

필기 및 내 팁)

 

실무에서 사용하는 SQL => 이미 설계된 Database 사용 (정보를 꺼내오는 것을 요청, not 수정, add)

Database like 책장 -> 1) 잘 꺼내오기 위해 사용 2)신속하게 정보를 get 하기 위해 사용

 

  • Create: 접근 권한 가진 사람들이 사용함
  • Read: 주로 정보 읽을 때 많이 사용 (실무자)
  • Update
  • Delete: 실무에선 별로 사용 x

 

Ctrl+ Enter => 코드실행 (SAS에선 F3 )

 

<기본문법>

SELECT 컬럼명

FROM 테이블명

WHERE 조건;

#select

*Table-> 전체 DATA 

*Field-> 각 개체

ex) 어떤 테이블에서 어떤 필드를 가져올 것이냐

-> Select ㅇㅇ from ㅁㅁ (ㅇㅇ: Field, ㅁㅁ: Table)

Select * from ㅁㅁ (* :Field 전체, ㅁㅁ: Table)

-> ㅁㅁ 테이블에서 전체 필드 가져와!

 

문자열 표시 -> ' '

같지 않음, 없음 -> !=

 

#WHERE

1. 조건이 문자열인 경우

SELECT * 

FROM USER

WHERE NAME = 'CHOI';

 

2. 조건이 상수인 경우

SELECT *

FROM USER

WHERE CODE = 23;

 

3. 여러개 만족하는 데이터 출력 IN

where week in (1, 3)

-> week 에 1이랑 3 들어가는 애들 보고 싶다! (and)

 

4.제외하고 출력 NOT IN 

WHERE ADD NOT IN('경남');

-> ADD값에서 경남 제외

 

5. LIKE (%)

where email like '%naver.com'

-> email에서 앞에는 상관 없고 뒤엔 naver.com인 애들만 보고 싶다!

 

where email like 't%com'

-> email에서 앞에는 t고 뒤엔 com으로 끝난 애들만 보고 싶다!

 

6. BETWEEN

where updated_at between '2020-07-16' and '2020-07-18'

-> between and 로 그 사이에 있는 값들 추출

날짜는 ' '꼭 붙이기-> 문자형

 

7. IS NULL

where NAME IS NULL;

NAME에 NULL 값을 조회한다.

 

8. IS NOT NULL

where NAME IS NOT NULL;

NAME에 NULL 값이 아닌 값들을 조회한다.

 

#LIMIT

-> 어어엄청 데이터 양이 많을 경우, 어떤 field들이 있는지 확인하기 위해 걸어놈

ex)

select * from orders

where email like '%naver.com'

limit 5;

-> data들 중 5개만 보여줌

 

#Distinct

-> 중복 제거! select 문 옆에 표기!

select distinct(*) from orders

-> 전체 all field 중 중복 제거 해서 보여줌, 완전 편리, distinct v () x 안됨

 

#Count 

-> 세어주기~

select count(distinct(payment_method)) from orders

 

select name, email from users

-> name, email만 나옴 순서대로 작성하면 됨~

(SAS에선 VAR와 같은 기능)

 

#날짜 데이터에서 일부만 추출하기

  • YEAR:연도
  • MONTH: 월
  • DAY: 일
  • HOUR:시
  • MINUTE:분
  • SECOND:초

#원하는 FORMAT으로 바꾸기

DATE_FORMAT을 서서 Y-M-D만 나오게 만들기

%a 요일 이름 ( Sun.. Sat)
%b 월 이름 ( Jan.. Dec)
%c 월, 숫자 ( 0.. 12)
%D 영어 날 ( 0th, 1st, 2nd, 3rd, ...)
%d 월의 일 ( 00.. 31)
%e 월의 일( 0.. 31)
%f 마이크로 초 ( 000000.. 999999)
%H 시간 ( 00.. 23)
%h 시간 ( 01.. 12)
%I 시간 ( 01.. 12)
%i 분, 숫자 ( 00.. 59)
%j 년의 일 ( 001.. 366)
%k 시간 ( 0.. 23)
%l 시간 ( 1.. 12)
%M 월 이름 ( January.. December)
%m 월, 숫자 ( 00.. 12)
%p AM 또는 PM
%r 시간, 12 시간 ( 또는 hh:mm:ss뒤에 )AMPM
%S 초 ( 00.. 59)
%s 초 ( 00.. 59)
%T 시간, 24 시간 ( hh:mm:ss)
%U 주 ( 00.. 53), 일요일은 주중 첫날입니다. WEEK()모드 0
%u 주 ( 00.. 53), 월요일은 주중 첫날입니다. WEEK()모드 1
%V 주 ( 01.. 53), 일요일은 주중 첫날입니다. WEEK()모드 2; 함께 사용 %X
%v 주 ( 01.. 53), 월요일은 주중 첫날입니다. WEEK()모드 3; 함께 사용 %x
%W 평일 이름 ( Sunday.. Saturday)
%w 요일 ( 0= 일요일 .. 6= 토요일)
%X 일요일이 요일의 첫 번째 요일 인 숫자 (4 자리)입니다. 함께 사용%V
%x 월요일이주의 첫 번째 요일 인 숫자의 네 자리 숫자입니다. 함께 사용%v
%Y 연도, 숫자, 네 자리
%y 연도, 숫자 (2 자리)

출처 : https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format

 

MySQL :: MySQL 5.7 Reference Manual :: 12.7 Date and Time Functions

12.7 Date and Time Functions This section describes the functions that can be used to manipulate temporal values. See Section 11.2, “Date and Time Data Types”, for a description of the range of values each date and time type has and the valid formats

dev.mysql.com

느낀점 및 다짐: '내가 학생 때 생겼으면 좋았을 건데..'라는 생각을 했다. 한 살이라도 젊을 때 배울 수 있는 건 배우자 라는 생각으로 열심히 4주동안 공부하자 화이팅!!

 

 

 

Comments