MySQL 포스팅
(1) SELECT
(2) 집계함수
(3) VIEW
(4) 윈도우 함수
(5) 데이터 갱신
(6) 조건 분기
(7) JOIN
환경
제가 사용할 환경은 다음과 같습니다.
- MySQL Ubuntu 5.7.27
- MySQL Workbench
데이터
Select문을 사용해보기 전에 데이터를 준비하겠습니다.
다음 테이블의 데이터는 w3school에서 가져왔습니다.
링크는 아래에 있습니다.
https://www.w3schools.com/sql/sql_select.asp
실습을 해보기 위해 위의 링크의 데이터를 조금 변경 했습니다. (인코딩 문제 해결)
아래는 상위 5개의 샘플 데이터 입니다.
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitucion 2222 | Mexico D.F. | 05021 | Mexico |
3 | Antonio Moreno Taqueria | Antonio Moreno | Mataderos 2312 | Mexico D.F. | 05023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbkop | Christina Berglund | Berguvsvagen 8 | Lulea | S-958 22 | Sweden |
위를 Workbench에서 임포트 하기 위해 csv파일을 첨부하겠습니다.
(혹은 mysql에서 임포트를 해주셔도 무관합니다.)
SELECT 문
DBMS는 기본적으로 검색 기능을 제공합니다. 이를 query또는 retrieve라고 많이 부릅니다.
select문의 기본 문법은 다음과 같습니다.
SELECT [컬럼명 ...] FROM 테이블명;
MySQL은 기본적으로 대소문자를 구분하지 않기 때문에 자유롭게 작성할 수 있습니다.
위의 테이블의 모든 데이터를 가져오려면 다음과 같은 쿼리를 입력하면 됩니다.
SELECT * FROM customers;
위의 쿼리의 상위 5개의 결과는 다음과 같습니다.
위 테이블에서 Customer의 이름과 나라만 가져오는 쿼리는 다음과 같습니다.
SELECT CustomerName, Country FROM customers;
위의 쿼리의 결과중 상위 5개는 다음과 같습니다.
WHERE 구
select문의 뒤에는 보통 조건을 주기 위한 where문이 붙습니다.
기본적인 문법은 다음과 같습니다.
SELECT [컬럼명 ...]
FROM 테이블명
WHERE 조건;
WHERE구에서 사용할 수 있는 조건들은 다음과 같습니다.
연산자 | 의미 |
= | 같다 |
<> | 같지 않다 |
>= | 같거나 크다 |
> | 크다 |
<= | 같거나 작다 |
< | 작다 |
몇가지 예제들을 살펴보겠습니다.
다음은 Customer데이터 중 =를 사용해 나라가 Mexico에 해당하는 Row를 가져오는 쿼리입니다.
SELECT * FROM customers WHERE Country = 'Mexico';
위 쿼리의 결과는 다음과 같습니다.
다음은 Customer데이터 중 나라가 Mexico에 해당하지 않는 Row를 가져오는 쿼리입니다.
SELECT * FROM customers WHERE Country <> 'Mexico';
위 쿼리의 결과중 상위 5개는 다음과 같습니다.
마지막으로 다음은 Customer데이터 중 id가 3보다 같거나 작은 Row를 가져오는 쿼리 입니다.
SELECT * FROM customers WHERE CustomerID <= 3;
위 쿼리의 결과는 다음과 같습니다.
조건 중첩
WHERE구에서는 여러 조건을 중첩해 사용할 수 있습니다.
프로그래밍을 조금 해보셨다면 익숙하겠지만, AND와 OR로 여러 조건을 묶을 수 있습니다.
아래는 멕시코에 살면서 ID가 10이하인 Row를 고르는 쿼리 입니다.
SELECT *
FROM customers
WHERE Country = 'Mexico'
AND CustomerID <= 10;
위 쿼리의 결과는 다음과 같습니다.
만약 OR를 사용해 2개 이상의 조건을 중첩하려 한다면, IN 키워드가 더 나을 수도 있습니다.
아래는 쿼리에 나타난 3개의 나라의 Customer의 이름을 찾는 쿼리입니다.
SELECT CustomerName
FROM customers
WHERE Country IN ('GERMANY', 'UK', 'Sweden');
위 쿼리의 결과중 상위 5개는 다음과 같습니다.
여기까지 기본적인 SELECT문의 기능에 대해서 알아보았습니다.
MySQL 포스팅
(1) SELECT
(2) 집계함수
(3) VIEW
(4) 윈도우 함수
(5) 데이터 갱신
(6) 조건 분기
(7) JOIN
참고자료
SQL 레벨업 : DB 성능 최적화를 위한 SQL 실전 가이드, 한빛미디어
'서버 개발 > MySQL' 카테고리의 다른 글
MySQL - (6) 조건분기 (0) | 2019.08.10 |
---|---|
MySQL - (5) 데이터 갱신 (0) | 2019.08.10 |
MySQL - (4) 윈도우 함수 (0) | 2019.08.10 |
MySQL - (3) VIEW (0) | 2019.08.09 |
MySQL - (2) 집계함수 (0) | 2019.08.08 |