SQL(2)(like, in, between, is null, and, or, not)
LIKE
Like는 논리 연산자로 정확한 값이 아닌 유사한 값을 일치시킬 수 있다.
1 2 3 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE "group" LIKE 'Snoop%' | cs |
위와 같이 실행하면 'group'에 'Snoop'로 시작하고 그 뒤에 임의의 수와 문자가 오는 행이 나타난다.
1 2 3 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE "group" ILIKE 'snoop%' | cs |
대소문자를 구분하고 싶지 않다면 위와 같이 ilike를 사용하면 된다.
1 2 3 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE artist ILIKE 'dr_ke' | cs |
위와 같이 _를 사용하여 개별문자를 대체 할 수도 있다.
연습문제
Ludacris가 그룹의 구성원인 모든 행을 반환하는 쿼리
1 2 3 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE "group" ilike '%ludacris%' | cs |
그룹에 나열된 첫 번째 아티스트의 이름이 "DJ"로 시작하는 모든 행을 반환하는 쿼리
1 2 3 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE "group" LIKE 'DJ%' | cs |
IN
In은 결과에 포함 할 값 목록을 지정한 수 있는 논리 연산자이다. 목록의 값 중 하나와 동일한 결과를 반환한다.
숫자
1 2 3 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE year_rank IN (1, 2, 3) | cs |
문자
1 2 3 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE artist IN ('Taylor Swift', 'Usher', 'Ludacris') | cs |
연습문제
Elvis 및 MC Hammer에 대한 모든 항목을 표시하는 쿼리
1 2 3 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE artist IN ('M.C. Hammer', 'Hammer', 'Elvis Presley') | cs |
BETWEEN
특정 범위 내에있는 행만 선택할 수 있는 논리 연산자이다. and연산자와 짝을 이루어야 한다.
1 2 3 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE year_rank BETWEEN 5 AND 10 | cs |
위와 같이 작성하면 'year_rank'열이 5에서 10사이의 값을 가진 행만 추출된다.
1 2 3 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE year_rank >= 5 AND year_rank <= 10 | cs |
위와 같이 작성할 수도있다.
연습문제
1985년 1월 1일부터 1990년 12월 31일까지의 모든 상위 100곡을 표시하는 쿼리
1 2 3 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE year BETWEEN 1985 AND 1990 | cs |
IS NULL
Is Null은 결과에서 누락 된 데이터가 있는 행을 선택할 수 있는 논리 연산자이다.
1 2 3 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE artist IS NULL | cs |
연습문제
song_name이 null인 모든 행을 표시하는 쿼리
1 2 3 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE song_name IS NULL | cs |
AND
And는 두 조건을 만족하는 행만 선택할 수 있는 논리 연산자이다.
1 2 3 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE year = 2012 AND year_rank <= 10 | cs |
위 코드는 2012년 상위 10개에 대한 모든 행을 반환한다.
and연산자를 추가 and문이나 다른 비교 연산자와 함께 원하는 만큼 사용할 수 있다.
1 2 3 4 5 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE year = 2012 AND year_rank <= 10 AND "group" ILIKE '%feat%' | cs |
위 코드는 그 위의 코드에 'group'열이 feat가 포함된 모든 행을 반환한다.
연습문제
Ludacris가 그룹의 일부인 상위 10개에 대한 모든 행을 표시하는 쿼리
1 2 3 4 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE year_rank <= 10 AND "group" ILIKE '%ludacris%' | cs |
1990년, 2000년 및 2010년에 최상위 기록을 표시하는 쿼리
1 2 3 4 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE year_rank = 1 AND year in (1990, 2000, 2010) | cs |
제목에 'love'가 포함 된 1960년대의 모든 노래를 나열하는 쿼리
1 2 3 4 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE year BETWEEN 1960 AND 1969 AND song_name ilike '%love%' | cs |
OR
or은 두 조건 중 하나를 만족하는 행을 선택할 수 있는 논리 연산자이다. and와 동일한 방식으로 작동한다.
1 2 3 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE year_rank = 5 OR artist = 'Gotye' | cs |
위 코드는 'year_rank'가 5거나 'artist'가 Gotye인 모든 행을 반환한다.
괄호 and를 or로 사용하여 결합 할 수 있다.
1 2 3 4 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE year = 2013 AND ("group" ILIKE '%macklemore%' OR "group" ILIKE '%timberlake%') | cs |
위 코드는 연도가 2013년이면서 'group'에 'macklemore'가 포함되거나 'timberlake'가 포함되는 모든 행을 반환한다.
연습문제
Katy Perry 또는 Bon Jovi가 등장하는 상위 10곡의 모든 행을 반환하는 쿼리
1 2 3 4 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE year_rank <= 10 AND ("group" ILIKE '%katy perry%' OR "group" ILIKE '%bon jovi%') | cs |
1970년대 또는 1990년대에 'California'라는 단어가 포함 된 제목의 모든 노래를 반환하는 쿼리
1 2 3 4 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE song_name LIKE '%California%' AND (year BETWEEN 1970 AND 1979 OR year BETWEEN 1990 AND 1999) | cs |
2001년 이전 또는 2009년 이후에 Dr.Dre가 등장하는 모든 상위 100개 기록을 나열하는 쿼리
1 2 3 4 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE "group" ILIKE '%dr. dre%' AND (year <= 2000 OR year >= 2010) | cs |
NOT
not은 조건문 앞에 해당 명령문이 거짓인 행을 선택할 수 있는 논리 연산자이다.
1 2 3 4 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE year = 2013 AND year_rank NOT BETWEEN 2 AND 3 | cs |
위 코드는 연도가 2013년이고, 'year_rank'가 2,3이 아닌 모든 행을 반환한다.
1 2 3 4 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE year = 2013 AND "group" NOT ILIKE '%macklemore%' | cs |
위 코드는 연도가 2013이고, 'group에 'macklemore'가 포함되지 않는 모든 행을 반환한다.
not으로 null이 아닌 행을 식별하는데 자주 사용되지만 구문이 다소 특별하므로 is를 포함해야 한다.
1 2 3 4 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE year = 2013 AND artist IS NOT NULL | cs |
위 코드는 연도가 2013년이고 artist가 null이 아닌 모든 행을 반환한다.
연습문제
2013년 차트에 포함되었고 문자 "a"를 포함하지 않는 노래의 모든 행을 반환하는 쿼리
1 2 3 4 5 | SELECT * FROM tutorial.billboard_top_100_year_end WHERE song_name NOT ILIKE '%a%' AND year = 2013 |

























댓글
댓글 쓰기