[DB] SELECT 기본

touhou09·2025년 1월 6일
0

컴퓨터 이론

목록 보기
34/47

SELECT ~ FROM ~ WHERE

SELECT ~ FROM

SELECT는 조건에 맞는 데이터를 추출하는 기능을 한다.

가장 기본적인 형식으로는 FROM을 사용해 원하는 테이블을 지정하고 WHERE로 조건을 지정하는 SELECT FROM WHERE 형태이다.

SELECT 열-이름 FROM 테이블-이름

특정 DB를 사용한다는 설정을 하지 않았다면 DB이름.TABLE이름 순서로 기재해야 하나, WORKBENCH 등의 인터페이스 및 코드 등으로 접근하는 경우 DB를 보통 미리 설정하므로 위의 형태를 주로 사용한다.

SELECT ~ FROM ~ WHERE

특정한 조건을 가진 데이터들을 조회하고 싶은 경우 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';

NUM165

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문 만을 관리할 수 있도록하여 관리가 편리해진다는 점이 있다.

profile
Engineer가 되기 위하여

0개의 댓글