SELECT는 조건에 맞는 데이터를 추출하는 기능을 한다.
가장 기본적인 형식으로는 FROM을 사용해 원하는 테이블을 지정하고 WHERE로 조건을 지정하는 SELECT FROM WHERE 형태이다.
SELECT 열-이름 FROM 테이블-이름
특정 DB를 사용한다는 설정을 하지 않았다면 DB이름.TABLE이름 순서로 기재해야 하나, WORKBENCH 등의 인터페이스 및 코드 등으로 접근하는 경우 DB를 보통 미리 설정하므로 위의 형태를 주로 사용한다.
특정한 조건을 가진 데이터들을 조회하고 싶은 경우 WHERE을 사용해서 조건식을 만들어 조회한다.
SELECT 열-이름 FROM 테이블-이름
WHERE 조건식
조건식에는 여러가지 조건이 들어갈 수 있는데, 대표적으로 열 이름, 숫자 등이 있다.
EX)
SELECT FROM MEMBER WHERE NAME = 'ASDF';
SELECT FROM MEMBER WHERE NUMS = 4;
등등
또한 숫자로 표현된 데이터에서는 관계 연산자, 논리 연산자 등의 연산자를 사용해 범위를 지정하여 사용할 수 있다.
SELECT ID, NAME
FROM MEMBER
WHERE HEIGHT <= 160;
2가지 이상의 조건을 만족하도록 AND, OR 등의 연산자를 활용할 수도 있다.
SELECT ID, NAME
FROM MEMBER
WHERE HEGIHT >= 160 AND NUMBER > 6;
SELECT ID, NAME
FROM MEMBER
WHERE HEGIHT >= 160 OR NUMBER > 6;
범위의 경우 AND로 일일이 지정하는 것 보다는 BETWEEN ~ AND ~를 사용하는 것이 편리하다.
SELECT ID, NAME
FROM MEMBER
WHERE HEIGHT BETWEEN 160 AND 180;
숫자의 경우는 범위를 지정하는 것이 가능하나, 주소 등 문자열을 사용하는 경우는 IN() 을 사용하는 것이 훨씬 효율적이다.
SELECT NAME, ADDR
FROM MEMBER
WHERE ADDR IN('경기', '경북')
일부 글자만을 검색하는 경우 LIKE를 사용한다.
SELECT *
FROM MEMBER
WHERE NAME LIKE '%우'
여기서 '%'는 방향에 따라 앞, 뒤, 양쪽에 어떤 문자든 허용한다는 의미이다.
%가 모든 문자를 인정하는 것이면 _는 한개의 문자만 인정하는 것이다.
SELECT *
FROM MEMBER
WHERE NAME LIKE '__우'
SELECT 안에는 또 다른 SELECT가 들어갈 수 있는데, 이를 Subquery라 부른다.
예를들어, 이름이 'FUR'인 회원의 평균 NUM보다 큰 회원을 검색하는 경우
SELECT NUM FROM MEMBER WHERE NAME = 'FUR';
| NUM | 165 |
|---|
SELECT NAME, NUM FROM MEMBER WHERE NUM > 165
처럼 2개의 SQL문을 통해서 결과를 얻어야 하는데, 이 두 쿼리문을 하나로 만드는 것을 Subquery라 한다.
위 경우의 Subquery는 두 번째 SQL의 165 대신 165의 결과를 조회하는 첫 번째 쿼리를 작성해주면 된다.
SELECT NAME, NUM FROM MEMBER
WHERE NUM > (SELECT NUM FROM MEMBER WHERE NAME = 'FUR');
이 경우 ;이 하나이므로 하나의 쿼리문으로 취급이 되며 2개의 쿼리를 하나로 만듦으로 하나의 SQL문 만을 관리할 수 있도록하여 관리가 편리해진다는 점이 있다.