본문 바로가기

프로그래밍/MySQL 기초

MySQL 문법 - 2 (SELECT FROM / WHERE / BETWEEN / LIKE)

 

 

SELECT * FROM

 

데이터를 가져올 때 쓰는 구문이다.

 

아래 예시는 city라는 테이블의 전체 row들을 가져오는 것이다.

*가 정말 언어마다 다양한 역할을 하는데 여기서는 파이썬 import 처럼 생각하면 될 것 같다.

SELECT * FROM [테이블명] 이라면 "해당 테이블에서 모든 데이터를 가져오겠다" 라는 뜻이다.

SELECT * FROM city;

 

 

*(애스터리스크)가 아닌 특정 데이터들만 골라서 가져올 수도 있다.

 

SELECT Population FROM city;

 

 

여러 개의 데이터를 가져오는 것도 가능하다.

 

SELECT Name,Population FROM city;

 

WHERE

 

SELECT 문에서 선택한 데이터 중 특정 조건을 만족하는 값을 가져오고 싶을 때 이용하는 구문이다.

 

아래와 같이 실행 시 city 안에 Population이 5000000을 넘는 데이터들의 Name과 Population을 출력하게 된다.

 

SELECT Name,Population FROM city WHERE Population>5000000;

 

 

조건으로는 다양한 것들을 이용할 수 있다.


관계 연산자 : OR, AND, NOT 등..
조건 연산자 : >=, <=, ==, >, <, != 등..

 

문자열도 비교 가능하다. 아래 방법을 통해서 Countrycode 가 USA인 즉 미국의 도시들을 뽑아볼 수 있다.

SELECT Name,Population FROM city WHERE Countrycode='USA';

 

 

BETWEEN a AND b

 

일정 범위 내의 값들을 얻을 때 <=, <와 같은 연산자를 사용하지 않고 BETWEEN a AND b로 해결할 수도 있다.

 

SELECT Name,Population FROM city WHERE Population BETWEEN 127800 AND 130000;

 

 

사진을 보면 알 수 있듯이 BETWEEN은 a<= X <=b 인 값들을 가져온다. 127800과 130000 모두 조건을 만족하는 값이다.

 

IN (s1, s2, s3...)

이름과 같은 이산적인 값은 IN을 통해서 얻을 수 있다.

 

예를 들어 서울과 부산의 인구수를 얻고 싶다면

 

SELECT Population FROM city WHERE Name IN('seoul','pusan');

 

이와 같이 적어주면 된다.


LIKE 'STRING'

문자열의 값을 탐색할 때 쓰인다.

문자열 앞이나 뒤에 _ 나 %를 붙여서 사용할 수 있다.

_ 는 붙인 곳을 기준으로 그 칸에 무엇이 들어오든 string을 만족하는 값들을 찾아준다. 예를 들어 도시 중에 Like '_산' 을 검색했다면 울산, 부산, 아산, 안산 이렇게 찾아주는 것이다.

%는 붙인 곳을 기준으로 그 앞이나 뒤에 무엇이 와도 상관없이 다 찾아준다. 예를 들어 사람 이름을 검색할 때 Like '김%' 를 검색하면 김XX, 김OO, 김__ 다 찾아준다.

 

 

SELECT * FROM city WHERE Name LIKE '%city'; # 전 세계 도시 중 ~city로 끝나는 것들 찾기
SELECT * FROM city WHERE CountryCode IN ('KOR') AND Name LIKE '%san'; # 국가 코드가 KOR인 도시중 ~산으로 끝나는 도시 찾기
SELECT * FROM city WHERE District LIKE 'Kyong%'; # district( 경기도, 경상도 등) 중 kyong으로 시작하는 도시 찾기
SELECT * FROM city WHERE Name LIKE '%won%'; # 전 세계 도시 중 'won'이 들어가는 도시 찾기 '수원', '원산' 등..