데이터베이스

SQL (1) - SELECT문

monstro 2025. 2. 4. 12:16
728x90
반응형

이번 포스트에서는 데이터 베이스를 다루는 언어 중 SQL을 다뤄보고

SQL에서 특정 데이터를 골라오는 SELECT 문법을 한번 알아보겠습니다.

 

1) 모든 데이터 가져오기

SELECT *
FROM players;

 

SELECT 연산자 다음 * 연산자를 사용해 특정 테이블에서 모든 데이터를 가져올 수 있도록 합니다.

또한 FROM 연산자를 통해 데이터를 가져오는 특정 테이블을 지정할 수 있습니다.

현재 연산은 players 테이블에서 해당하는 모든 데이터를 가져오게 됩니다.

실행결과는 다음과 같습니다.

 

2) 조건부 데이터 가져오기

-- 출생연도가 1866인 경우만 가져오되, nameFirst 행을 name으로 가져오기
SELECT nameFirst as name, nameLast, birthYear
FROM players
WHERE birthYear = 1866;

-- 출신국가가 미국인 경우만 가져오기
SELECT nameFirst, nameLast, birthYear, birthCountry
FROM players
WHERE birthCountry = 'USA';

-- 출생연도가 1974이면서 출신국가가 미국인 경우만 가져오기
SELECT nameFirst, nameLast, birthYear, birthCountry
FROM players
WHERE birthYear = 1974 AND birthCountry = 'USA';

-- 출생 연도가 1974이거나 또는 출신국가가 미국인 경우만 가져오기
SELECT nameFirst, nameLast, birthYear, birthCountry
FROM players
WHERE birthYear = 1974 OR birthCountry = 'USA';

-- 출생 연도가 1974이거나 또는 (출신국가가 미국이면서 키가 175이상인 경우)만 가져오기
-- 기본적으로 AND 문이 OR 문보다 우선순위가 높으므로 AND문이 먼저 실행됨
SELECT nameFirst, nameLast, birthYear, birthCountry, weight
FROM players
WHERE birthYear = 1974 OR birthCountry = 'USA' AND weight > 175 ;

-- or 문을 먼저 실행시키고 싶은 경우
-- (출생 연도가 1974이거나 또는 미국 출신이 아닌 경우)이면서 키가 175이상인 경우만 가져오기
SELECT nameFirst, nameLast, birthYear, birthCountry, weight
FROM players
WHERE (birthYear = 1974 OR birthCountry != 'USA') AND weight > 175;

 

SQL에서 조건부로 데이터를 가져오고 싶은 경우, WHERE 절을 사용하여 가져오게 됩니다.

WHERE 절 안에 추가적으로 조건을 기입하여 원하는 데이터를 쉽게 얻을 수 있습니다.

 

실행결과는 차례대로 다음과 같습니다.

 

첫 번째 쿼리

 

두 번째 쿼리

 

세 번째 쿼리

 

네 번째 쿼리

 

다섯 번째 쿼리

 

5번째 쿼리의 경우, AND 연산자가 OR 연산자보다 우선 수행되므로

키가 175이상이면서 미국 출신이거나 또는 출생연도가 1974년인 경우의 데이터를 가져옵니다.

 

여섯 번째 쿼리

 

6번째 쿼리의 경우, 괄호를 씌워 OR 연산자를 AND 연산자보다 먼저 수행합니다.

따라서 출생 연도가 1974이거나 또는 미국 출신이 아닌 경우면서 키가 175인 경우의 데이터를 가져옵니다.

 

3) NULL 데이터 SELECT 하기

비어있는 데이터를 의미하는 NULL의 경우

이전 사례들처럼 연산자를 사용하여 SELECT 하는 것이 아닌, 문법을 사용하여 SELECT하게 됩니다.

 

-- 사망연도가 NULL인 경우만 가져오기
SELECT *
FROM players
WHERE deathYear IS NULL;

-- 사망연도가 NULL이 아닌 경우만 가져오기
SELECT * 
FROM players
WHERE nameNote IS NOT NULL;

 

 

첫번째 쿼리의 실행결과는 위와 같습니다.

deathYear이 NULL인 경우의 데이터만 전부 가져왔습니다.

 

 

두 번째 쿼리의 실행결과는 위와 같습니다.

nameNote가 NULL이 아닌 경우의 데이터만 전부 가져왔습니다.

 

4) 패턴을 통해 SELECT 다루기

SELECT 문을 사용하는 경우에 패턴을 통해 데이터를 가져오는 것도 가능합니다.

 

4 - 1) % 연산자

% 연산자의 경우 패턴의 어느 위치에 존재하느냐에 따라 다르게 동작합니다.

  • 패턴의 에 있는 경우 : %를 기준으로 뒤의 단어가 포함된 데이터를 가져옴
  • 패턴의 에 있는 경우 : %를 기준으로 앞의 단어가 포함된 데이터를 가져옴
  • 패턴의 중간에 있는 경우 : %를 기준으로 양옆의 단어가 포함된 데이터를 가져옴
SELECT *
FROM players
WHERE birthCity LIKE 'New%'

 

위의 쿼리의 실행 결과는 다음과 같습니다.

 

%를 기준으로 New가 수식된 birthCity를 가진 데이터들을 전부 가져왔습니다.

 

 

4 - 2) _ 연산자

_ 연산자의 경우도 비슷하게 패턴의 어느 위치에 존재하느냐에 따라 다르게 동작합니다.

단, % 연산자처럼 위치를 기준으로 판단하여 단어가 포함된 데이터를 가져오는 것이 아닌

_ 연산자의 위치를 기준으로 가져오게 됩니다.

SELECT *
FROM players
WHERE birthCity LIKE 'New Yor_';

 

위의 쿼리의 실행 결과는 다음과 같습니다.

 

특정 문자열 패턴 New Yor_에서 _ 연산자의 위치기준으로 데이터를 찾아온 것을 확인할 수 있습니다.  

728x90
반응형

'데이터베이스' 카테고리의 다른 글

SQL (6) - 집계 함수  (0) 2025.02.10
SQL (5) - CASE  (0) 2025.02.05
SQL (4) - DATETIME  (0) 2025.02.05
SQL (3) - 산술연산과 문자열  (1) 2025.02.04
SQL (2) - ORDER BY문  (0) 2025.02.04