[PostgreSQL실용]_3_SELECT, DISTINCT, FROM, WHERE ,연산자, ORDER BY 사용

Hyejin Beck·2024년 1월 9일
0

데이터베이스(SQL)

목록 보기
12/40

SELECT 보기

만들어진 teachers 테이블을 불러와줍니다.

SELECT * FROM teachers;

또는

TABLE teachers;

맥북에선 실행> 버튼을 직접 누를수도 있지만 fn + F5 를 누르면 실행이 됩니다.

잘 나옵니다.

일부만 따로 볼 수도 있습니다.

SELECT first_name, last_name, salary 
FROM teachers; 

ORDER BY 정렬

연봉이 많은 순으로 정렬해보겠습니다.

SELECT first_name, last_name, salary 
FROM teachers
ORDER BY salary DESC;

또는 ORDER BY 숫자

SELECT first_name, last_name, salary 
FROM teachers
ORDER BY 3 DESC;

연봉이 많은 순 + first_name 성 오름차순

SELECT first_name, last_name, salary 
FROM teachers
ORDER BY 3 DESC, 1 ASC;

새로 부임한지 얼마 안된 선생님 순으로

SELECT *
FROM teachers
ORDER BY hire_date desc ;

DISTINCT 중복값제거

중복값이 제거된 유니크한 고유의 값만 불러오는 DISTINCT

teachers 테이블에서 + 학교 컬럼에 대해 + 고유의 값을 abc 순으로

SELECT DISTINCT school 
FROM teachers
ORDER BY school ;

teachers 테이블에서 + 학교와 연봉 컬럼에 대해서 + 고유의 값을 abc 순으로

SELECT DISTINCT school , salary 
FROM teachers
ORDER BY school, salary ;

WHERE 필터링

만약 00인 값에 한해서만 보고 싶다면 Where 을 이용합니다.

학교가 'Seoul University'인 데이터만

SELECT * 
FROM teachers 
WHERE school = 'Seoul University'; 

연산자


= 같음
<> 같지 않음
!= 같지 않음
< 또는 > 초과와 미만
>= 또는 <= 이상과 이하
BETWEEN ~ AND ~ 범위 내
IN (값, 값,,) 값 중에 하나라도 일치 한다면
LIKE ~ 라면 (대,소문자 구분해야함)
LIKE 값% ~로 시작된다면
LIKE %값% ~가 사이에 껴있다면
LIKE %값 ~로 끝난다면
ILIKE ~라면 (대,소문자 상관없음)
NOT + 조건 ~ 조건이 아니라면 : NOT LIKE ~가 아니라면

  • % 어떤 문자가 와도
    • 가% '가'로 시작하는 모든 값
    • %가 '가'로 끝나는 모든 값
    • %가% '가'가 중간에 들어가는 모든 값
  • _ 어떤 가상의 문자1글자
    • _가 : 김가, 이가, 상가, 문가 처럼 2글자인데 끝이 '가'로 오는 모든 값
    • __가 : 김김가, 김리가, 박순가, 한자가 처럼 3글자인데 끝이 '가'로 오는 모든 값
    • _가_나 : 김가다나, 라가라나, 문가라나, 이가순나 처럼 4글자인데 두번째 글자가 '가', 네번째 글자가 '나'로 오는 모든 값

Seoul University를 제외한 다른 모든 학교를 나온 선생님의 정보

SELECT * 
FROM teachers 
WHERE school <> 'Seoul University';

또는 
SELECT * 
FROM teachers 
WHERE school != 'Seoul University';

2020년 1월 1일 이후부터 고용된 선생님의 정보

SELECT * 
FROM teachers 
WHERE hire_date >= '2020-01-01'
-- 참고로 date 날짜 컬럼의 값은 '따옴표'를 붙혀야 나옵니다. 

연봉이 7000이상인 선생님의 정보

SELECT * 
FROM teachers 
WHERE salary >= 7000
-- int 숫자 컬럼의 값은 '따옴표'를 안붙혀도 됩니다. 

연봉이 7000~10000인 선생님의 정보

SELECT * 
FROM teachers 
WHERE salary between 7000 and 10000

또는

SELECT * 
FROM teachers 
WHERE salary >=7000 and salary <=10000

학교명 중에 BUSINESS 가 들어가있는 학교를 나온 선생님의 정보

SELECT *
FROM teachers 
WHERE school ILIKE 'business'

이렇게 하면 나오지 않습니다!
왜냐? school 컬럼 중에 깔끔하게 딱 business 로만 되어있는 데이터값이 없어서요!

SELECT *
FROM teachers 
WHERE school ILIKE '%business%'

% 와 % 사이에 넣어줘야 이렇게 필터링이 되서 나옵니다.

M으로 시작하는 first_name 선생님의 정보

SELECT *
FROM teachers 
WHERE first_name ILIKE 'M%'

연봉이 5000대인 선생님의 정보

SELECT *
FROM teachers 
-- WHERE salary = 5___  ERROR:  trailing junk after numeric literal at or near "5_"
WHERE salary between 5000 and 5999

연봉의 경우 numeric 데이터형태라서 '_'로 하면 error가 나옵니다.;

Havard 랑 Yale 학교를 나온 선생님의 정보

SELECT * 
FROM teachers 
WHERE school = '%Havard%' or school = '%Yale%'

이렇게 하면 아무것도 나오지 않습니다!

문자열 '값' 이 들어있는 걸 찾을때에는 = 연산자가 아닌 LIKE, ILIKE를 사용합니다.

SELECT * 
FROM teachers 
WHERE school ILIKE '%harvard%' or school ILIKE '%yale%'

연봉이 4000~6000 사이이면서 Seoul이 들어간 학교를 나온 선생님의 정보

SELECT * 
FROM teachers 
WHERE school ILIKE '%seoul%' 
	and (salary between 4000 and 6000) 

두 가지 조건을 모두 충족시키기위해 and
4000~6000 범위를 한정시키기위해 and
혹시나 싶어 (괄호)를 통해 구분해줍니다.

김씨, 이씨 선생님 정보

SELECT * 
FROM teachers 
WHERE last_name = 'Lee' or last_name = 'Park'

2010년 이전부터 출근했으며 연봉이 10000 넘는 선생님 확인

SELECT first_name, last_name, school, hire_date, salary 
FROM teachers 
WHERE hire_date < '2011-01-01' and salary > 10000 

학교 이름과 last_name이 A-Z 알파벳순

SELECT *
FROM teachers 
ORDER BY last_name, school 

순서 정리

SELECT 컬럼명, 컬럼명,,, 또는 모두 *
FROM 테이블명
WHERE 조건절
ORDER BY 정렬기준 컬럼

profile
데이터기반 스토리텔링을 통해 인사이트를 얻습니다.

0개의 댓글

관련 채용 정보