만들어진 teachers 테이블을 불러와줍니다.
SELECT * FROM teachers;
또는
TABLE teachers;
맥북에선 실행> 버튼을 직접 누를수도 있지만 fn + F5
를 누르면 실행이 됩니다.
잘 나옵니다.
일부만 따로 볼 수도 있습니다.
SELECT first_name, last_name, salary
FROM teachers;
연봉이 많은 순으로 정렬해보겠습니다.
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
teachers 테이블에서 + 학교 컬럼에 대해 + 고유의 값을 abc 순으로
SELECT DISTINCT school
FROM teachers
ORDER BY school ;
teachers 테이블에서 + 학교와 연봉 컬럼에 대해서 + 고유의 값을 abc 순으로
SELECT DISTINCT school , salary
FROM teachers
ORDER BY school, salary ;
만약 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 정렬기준 컬럼