Notice
Recent Posts
Recent Comments
Link
관리 메뉴

데브마우스

[SQL] SELECT ~ FROM ~ WHERE 정리 본문

데이터베이스/SQL: 정리

[SQL] SELECT ~ FROM ~ WHERE 정리

데브마우스 2024. 1. 2. 10:17

SELECT문이란 무엇인가요?

SELECT문은 테이블에서 데이터를 추출하는 기능을합니다. SELECT문을 사용해도 테이블의 데이터가 변경되지 않습니다.

 

SELECT문의 기본 형식은 "SELECT 컬럼이름 FROM 테이블이름 WHERE 조건식"입니다. 조건식을 사용하여 데이터 베이스에서 원하는 데이터를 뽑아낼 수 있습니다.

-- SELECT의 구조
SELECT select_expr(열 이름)
	[FROM table_references(테이블 이름)]
    [WHERE where_condition(조건식)]
    [GROUP BY {col_name | expr | position}(열 이름)]
    [HAVING where_condition(조건식)]
    [ORDER BY {col_name | expr | position}(열 이름)]
    [LIMIT {[offset, ] row_count | row_count OFFSET offset}(숫자)]

SELECT문을 사용하기 전에 해야하는게 있나요?

SELECT문을 사용하기 전 use 키워드를 이용해 사용할 데이터베이스를 지정해야합니다.

USE 데이터베이스_이름;

만약 USE 키워드를 사용하지 않는다면 아래와 같이 작성합니다.

SELECT * FROM 데이터베이스_이름.테이블_이름; -- USE를 사용하지 않은 경우입니다.
SELECT * FROM 테이블_이름; -- USE로 데이터베이스를 지정한 경우입니다.

별칭(alaias)

별칭을 사용하면 원래 컬럼 이름 대신 지정한 별칭이 출력됩니다. 별칭은 as 혹은 컬럼 이름 뒤에 한 칸 띄운 후 원하는 별칭을 입력하시면 됩니다.

SELECT age AS "나이" from member;
SELECT age 나이 from member;
SELECT age AS "나 이" from member; -- 별칭에 공백이 있는 경우 큰따옴표로 묶어줍니다.

'='를 활용한 WHERE 절

문자나 숫자에 사용하며 정확히 일치하는 값을 찾습니다.

관계 연산자를 활용한 WHERE 절

숫자에 사용합니다.

관계 연산자는 >, <, >=, <=, = 등이 있습니다.

논리 연산자를 활용한 WHERE 절

숫자와 문자 둘 다 사용이 가능합니다.

논리 연산자에는 AND과 OR이 있습니다.

AND는 양 옆의 조건을 모두 만족해야 하며 OR는 둘 중 하나만 조건을 만족해도 됩니다.

BETWEEN ~ AND를 활용한 WHERE 절

숫자에 사용합니다.

아래 두 코드는 결과물이 동일합니다.

숫자의 이상, 이하 범위를 조건식에서 사용할 때 BETWEEN ~ AND가 편리합니다.

SELECT mem_name, height FROM member WHERE age >= 20 AND height <=25;
SELECT mem_name, height FROM member WHERE age BETWEEN 20 AND 25;

IN()를 활용한 WHERE 절

문자에 사용합니다.

조건식에서 여러 문자 중 하나에 포함되는지 비교할 때는 IN()이 간결합니다.

SELECT mem_name, addr FROM member WHERE addr="경기" OR addr="전남" OR addr="경남";
SELECT mem_name, addr FROM member WHERE addr IN("경기", "전남", "경남");

LIKE를 활용한 WHERE 절

문자에 사용합니다.

문자열 일부 글자를 검색하는데 LIKE 절과 퍼센트(%) 혹은 언더바(_)를 사용합니다.

모든 글자를 허용하는 퍼센트(%)

아래 코드에서는 "우"로 시작하는 모든 문자열을 검색합니다.

SELECT * FROM member WHERE mem_name LIKE "우%";

 

만약 %우% 였더마념 중간에 우가 들어가는 모든 글자를 찾습니다.

확장자가 jpg인, 이미지 파일을 찾는다면 %.jpg같은 방법으로 찾을 수 있습니다.

한 글자와 매칭하는 언더바(_)

한 글자와 매치하기 위해서는 언더바(_)를 사용합니다.

-- 다음 SQL은 이름(mem_name)의 앞 두글자는 상관없고 뒤는 '핑크'인 회원을 검색합니다.
SELECT * FROM member where mem_name LIKE "__핑크";

서브 쿼리

서브 쿼리는 하위 쿼리라고도 불리며, SELECT 안에 또 다른 SELECT가 들어가는 것입니다.

-- 서브쿼리
-- SELECT문 안에 SELECT문이 있는 것
-- 이름(mem_name)이 '1반'인 회원의 평균 키(height)보다 큰 회원을 검색합니다.
SELECT height FROM member WHERE mem_name = '1반';
SELECT mem_name, height FROM member WHERE height > 164;

SELECT mem_name, height FROM member WHERE height > (SELECT height FROM member WHERE mem_name = "1반");