흰 스타렉스에서 내가 내리지

SQL 문법 기초 - SELECT 관련 본문

SQL

SQL 문법 기초 - SELECT 관련

주씨. 2022. 7. 24. 23:04
728x90

USE

USE 데이터베이스_이름;

'지금부터 이 DB를 사용하겠으니 모든 쿼리는 이 DB에서 실행하라'

앞으로 모든 SQL 문은 '데이터베이스_이름' 에 해당하는 데이터베이스에서 수행된다. 

 

 

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, FROM

원래 테이블의 전체 이름은 데이터베이스_이름.테이블_이름 형식으로 표현한다. 

원칙적으로는 SELECT * FROM market_db.member의 형태로 사용해야 하지만, 데이터베이스 이름을 생략하면 USE 문으로 지정해 놓은 데이터베이스가 자동으로 선택된다 

 

필요한 열만 가져오기 : SELECT mem_name FROM member; 

여러개의 열 가져오기 : SELECT addr, debut_date, mem_name FROM member;

 

+ 열 이름의 별칭(alias)

SELECT addr 주소, debut_date "데뷔 일자", mem_name FROM member;

 

 

* WHERE

WHERE 절에 열_이름 = 값 은 열의 값에 해당하는 결과만 출력해 준다.

예시 : SELECT * FROM member WHERE mem_number = 4;

 

숫자로 표현된 데이터는 관계연산자를 사용할 수 있다. 

예시 : SELECT mem_id, mem_name FROM member WHERE height <= 162;

 

2가지 이상의 조건을 만족하도록 논리연산자를 사용할 수도 있다. (AND, OR)

예시 : SELECT mem_name, height, mem_number FROM member WHERE height >= 165 AND mem_number > 6;

 

 

BETWEEN ~ AND

SELECT mem_name, height FROM member WHERE height BETWEEN 163 AND 165;

 

 

IN()

숫자로 된 데이터는 BETWEEN AND 를 사용할 수 있었지만, 문자열 형식으로 된 데이터는 어느 범위에 들어 있다고 표현할 수 없다. 

IN()을 사용하면 OR만으로 구현하던 문자열 범위를 간결하게 작성할 수 있다. 

SELECT mem_name, addr FROM member WHERE addr IN('경기', '전남', '경남');

 

 

LIKE

문자열의 일부 글자를 검색하려면 LIKE를 사용한다. 

예를 들어 이름(mem_name)의 첫 글자가 '우'로 시작하는 회원은 다음과 같이 검색할 수 있습니다. 

'우%' 는 제일 앞 글자가 '우'이고 그 뒤는 무엇이든(%) 허용한다는 의미이다. 

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

 

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

SELECT * FROM member WHERE mem_name LIKE '__핑크';

 

'_랙_크'로 하면 블랙핑크가 검색된다. 

 

 

 

 

++ 서브쿼리

SELECT 안에 또 다른 SELECT가 들어갈 수 있다. 

이를 서브 쿼리(subquery) 또는 하위 쿼리라고 부른다. 

 

 

에이핑크의 평균키 보다 큰 회원을 구하고 싶을 때 : 

SELECT height FROM member WHERE mem_name = '에이핑크'; -- 결과값 : 164
SELECT mem_name, height FROM member WHERE height > 164;

 

 

 

 

서브쿼리를 이용하여 한 문장으로 줄이기

SELECT mem_name, height 
    FROM member
    WHERE height > (SELECT height FROM member WHERE mem_name = '에이핑크');

괄호 안의 SELECT 결과가 164 이므로 이 자리에 164를 직접 써준 것과 동일한 효과를 얻는다.