0. SQL 기본 구조
SQL은 기본적으로 다음의 구조를 따른다고 할 수 있다.
SELECT 칼럼, 계산값
FROM 테이블 명
WHERE 조건
GROUP BY 그룹화에 사용되는 칼럼
HAVING 그룹화에 대한 조건
ORDER BY 정렬할 칼럼 [ASC | DESC];
1. SELECT
1-1 칼럼 조회
예를 들어, 상품 정보가 정리된 Product 라는 테이블이 있다고 가정하자. 이 중에서 의류 상품 번호를 조회해서 전달해달라는 요청이 들어온 상황이다.
SELECT 상품 번호(=칼럼 이름)
FROM DB명.Product ;
위와 같이 상품 번호를 조회하면 된다. SELECT 뒤에는 필요한 칼럼 이름, 어떤 테이블에서 가져올지는 FROM 뒤에 입력해주면 된다.
1-2 집계 함수
이번에는 상품의 개수도 전달해달라는 요청이 들어왔다고 가정하자. MySQL에는 데이터 집계함수로 count, sum, avg 의 함수가 존재한다. 해당 함수의 사용 위치는 SELECT문이다.
상품의 고유한 개수를 세는 방법은 다양하겠지만, 보통은 식별자(ID) 값은 Null을 허용하지 않으므로 아래와 같이 상품 번호의 각 개수들을 세어(count)주면 될 것이다.
SELECT Count(상품 번호)
FROM Product
1-3 모든 결과 조회
만약 해당 테이블의 모든 칼럼을 출력하고 싶으면 * (shift + 8) 연산자를 이용해주면 된다.
SELECT *
FROM Product
1-4 AS : 칼럼명 변경하여 조회하기
만약 특정 칼럼을 조회하는데, 조회 화면 결과에 출력되는 칼럼명을 변경하고 싶다면 AS를 사용하면 된다.
SELECT 칼럼명 as 변경하고자 하는 칼럼명
FROM 테이블명
1-5 DISTINCT
DISTINCT를 사용하면 중복을 제외하고 데이터를 조회할 수 있다. 예컨대, 다음과 같은 상품 테이블이 있을 때 제조국가의 중복을 제거하기 위해 사용할 수 있다.
자동차 ID | 제조사명 | 제조국가 |
A | 벤츠 | 독일 |
B | 벤츠 | 독일 |
C | BMW | 독일 |
D | 현대 | 한국 |
SELECT DISTINCT 제조 국가
FROM 테이블명
위 명령어를 통해 조회하게 되면 다음의 결과를 출력한다.
제조국가 |
독일 |
한국 |
2. FROM
우리가 사용하는 데이터는 보통 DB 에 여러 가지 테이블로 나눠 보관되는 경우가 많다. 예컨대, 매출 테이블은 sales로, 상품 테이블은 product로 각각 저장되었다고 하자. 이 때 sales 테이블에 있는 정보를 호출하려고 하면 어떻게 해야 할까?
특정 테이블의 정보를 호출하기 위해서는 쿼리에 테이블 명을 지정해 주어야 하고, 위에서 언급했던 대로이다. 다만 어물쩡 넘어가긴 했지만, 엄밀히 따지면 FROM DB명.Sales 라고 작성해야한다.
여기서 DB명은 Sales 테이블이 생성된 데이터베이스 이름이다. Sales 테이블이 어떤 데이터베이스에 저장되어 있는지 기재해야 서버가 이를 인식하고 원하는 결과를 출력할 수 있는 것이다. 매번 테이블 명에 DB명을 입력하는 것은 귀찮기 때문에 다음과 같이 처리해주면 된다.
USE DB명;
SELECT 계산식 또는 칼럼 명
FROM Sales;
3. WHERE
이제 우리가 필요한 정보만을 조회하는 방법을 알아보도록 하자. 이럴 때는 where 을 추가해 조건을 생성할 수 있다. 예컨대 판매국가가 미국인 상품을 조회해달라고 요청이 들어왔다면 다음과 같이 명령문을 작성하면 되겠다.
SELECT 상품 번호
FROM Product
WHERE 판매 국가 = "미국"
3-1 BETWEEN
Between을 이용하면 특정 칼럼의 일정 범위만을 출력할 수 있는 조건을 생성할 수 있다.
SELECT 상품 번호
FROM Product
WHERE 출시 연도 BETWEEN 2010 AND 2020
3-2 대소 관계 표현
앞서 배운 Between 과 정반대의 자료를 조회하고 싶은 경우는 다음과 같이 부등호를 이용하여 명령문을 작성하면 되겠다.
SELECT 상품 번호
FROM Product
WHERE 출시 연도 < 2010
SELECT 상품 번호
FROM Product
WHERE 출시 연도 > 2014
3-3 IN
두 가지 이상의 조건을 충족하는 데이터를 조회하고 싶다면 IN 을 사용해보자. 예를 들어 전처럼 미국에서 출시된 상품 뿐만아니라 영국에서 출시된 상품 번호를 요청받았다면 다음과 같이 명령문을 작성하면 되겠다.
SELECT 상품 번호
FROM Product
WHERE 판매 국가 IN("미국", "영국")
<=> 그와 반대의 경우는 NOT IN으로 수정해주면 된다.
3-4 IS NULL
만약 특정 값이 비어있는 NULL의 상태인 데이터를 출력하고자 한다면 어떻게 해야 할까? 이 때 사용하는 것이 IS NULL 이다. 예컨대 재고가 NULL인 상태인 상품의 번호를 출력하고 싶다면 다음과 같이 명령문을 작성하면 되겠다.
SELECT 상품 번호
FROM Product
WHERE 재고 IS NULL
<=> 그와 반대의 경우는 IS NOT NULL으로 수정해주면 된다. 쉽다 쉬워 SQL(?)
3-5 LIKE "%TEXT%"
특정 필드에 어떤 텍스트가 포함되는 경우를 출력할 때 사용하는 연산자가 LIKE 이다. 예컨대 고객 정보 테이블인 Customer 테이블에는 고객의 주소 정보가 등록되어있다고 할 때, 부산에 거주하는 고객을 조회하려면 다음과 같이 명령문을 작성해주면 되겠다. 여기서 %는 문자를 의미하며, 앞 뒤로 어떤 문자가 와도 상관없이 일단 부산이 들어간 필드는 포함한다고 생각하면 되겠다.
SELECT *
FROM Customer
WHERE 주소 LIKE "%부산%"
위 내용은 SQL로 맛보는 데이터 전처리 분석 실무 데이터를 통해 데이터 분석 마스터하기(2020, 노수영) 일부를 참고하였습니다.
'IT & 개발공부 > 데이터베이스(SQL)' 카테고리의 다른 글
SQL 기본문법 - 2 (0) | 2023.10.10 |
---|