Post

MySQL SELECT 수식 만들기 02

지난번에 이어 오늘은 좀 더 심화된 SELECT구문에 대해 알아보려고 하는데요, 어떻게 수식을 만드느냐에 따라 결과값도 달라질테니 차이를 비교해보면서 따라해보세요!

SELECT

1. IN 연산자 활용하기

▶ IN 연산자는 주어진 값 목록 중 하나라도 일치하는 경우 해당 레코드를 선택하는 데 사용됩니다. 예를 들어, IN(1, 5, 10)은 memberID 필드의 값이 1, 5, 10 중 하나라도 일치하면 결과를 불러오라는 뜻이 됩니다.

  • SELECT * FROM (테이블명) WHERE (필드명) IN(1, 5, 10);
1
2
3
4
5
6
7
8
9
SELECT * FROM members3 WHERE memberID IN(1, 5, 10);
+----------+---------+---------+--------+----------+------------+
| memberID | youName | youPass | youAge | youBirth | regTime    |
+----------+---------+---------+--------+----------+------------+
|        1 | 황00    | 1234    |     33 |   990304 | 1023958375 |
|        5 | 서00    | 1234    |     26 |    11019 | 1111100000 |
|       10 | 이00    | 1215    |     24 |    10712 | 1023958375 |
+----------+---------+---------+--------+----------+------------+
3 rows in set (0.00 sec)


2. BETWEEN & NOT BETWEEN 연산자 활용하기

▶ BETWEEN 연산자는 주어진 지정한 값들 사이에 해당하는 결과만 불러오라는 뜻입니다. 따라서 만약 BETWEEN 30 AND 40 이라고 지정한다면 필드값 중 30~40 사이에 있는 일치값만 불러오게 됩니다.

  • SELECT * FROM members WHERE youAge BETWEEN 30 AND 40;
1
2
3
4
5
6
7
8
9
10
mysql> SELECT * FROM members WHERE youAge BETWEEN 30 AND 40;
+----------+---------+---------+--------+----------+------------+
| memberID | youName | youPass | youAge | youBirth | regTime    |
+----------+---------+---------+--------+----------+------------+
|        1 | 황00    | 1234    |     33 |   990304 | 1023958375 |
|        6 | 김00    | 1234    |     32 |   930604 | 1023958375 |
|       14 | 안00    | 1234    |     33 |   840816 | 1023958375 |
|       15 | 박00    | 1232    |     33 |   990304 | 1023958375 |
+----------+---------+---------+--------+----------+------------+
4 rows in set (0.00 sec)

▶ 반대로 NOT BETWEEN 연산자는 주어진 지정한 값들 사이에 해당하는 결과를 제외한 나머지 정보만 가져온다는 뜻이 되겠죠? 예시를 보면서 차이를 확인해보세요!

  • SELECT * FROM members WHERE youAge NOT BETWEEN 30 AND 40;
1
2
3
4
5
6
7
8
9
10
mysql> SELECT * FROM members WHERE youAge NOT BETWEEN 30 AND 40;
+----------+---------+---------+--------+----------+------------+
| memberID | youName | youPass | youAge | youBirth | regTime    |
+----------+---------+---------+--------+----------+------------+
|        2 | 남00    | 1234    |     19 |    60121 | 1023958375 |
|        3 | 김00    | 1234    |     21 |    40416 | 1231231233 |
|        4 | 최00    | 1234    |     26 |   990123 | 1104781152 |
|        5 | 서00    | 1234    |     26 |    11019 | 1111100000 |
+----------+---------+---------+--------+----------+------------+
4 rows in set (0.00 sec)


3. LIKE 연산자 활용하기

▶ LIKE 연산자를 사용하면 특정 문자열이 포함된 정보만 가져오는데요,
이때 %는 0개 이상의 문자를 나타내는 와일드카드입니다. 따라서 “%”로 둘러싸인 문자열 내에 어떤 문자든 여러 개가 올 수 있습니다.
즉, 아래의 예시처럼 LIKE “%연%” 으로 지정한다면 ‘연’이라는 단어 앞뒤로 어떤 문자열이든 올 수 있다는 의미가 되겠죠?

  • SELECT * FROM members WHERE youName LIKE “%연%”;
1
2
3
4
5
6
7
8
mysql> SELECT * FROM members WHERE youName LIKE "%연%";
+----------+---------+---------+--------+----------+------------+
| memberID | youName | youPass | youAge | youBirth | regTime    |
+----------+---------+---------+--------+----------+------------+
|        1 | 00연    | 1234    |     33 |   990304 | 1023958375 |
|        9 | 0연0    | 1234    |     27 |   980420 |  123456744 |
+----------+---------+---------+--------+----------+------------+
2 rows in set (0.00 sec)

▶ LIKE는 % 외에 _ 도 같이 쓸 수 있는데요,
여기서 차이는 를 쓴다면 문자열 위치가 지정되기 때문에 아래의 예시처럼 LIKE “_상” 으로 지정한다면 무조건 ‘상’이 단어가 가운데에 있는 3글자 정보만 가능하다는 의미가 됩니다.

  • SELECT * FROM members WHERE youName LIKE “”;
1
2
3
4
5
6
7
mysql> SELECT * FROM members WHERE youName LIKE "_상_";
+----------+---------+---------+--------+----------+------------+
| memberID | youName | youPass | youAge | youBirth | regTime    |
+----------+---------+---------+--------+----------+------------+
|        1 | 0상0    | 1234    |     33 |   990304 | 1023958375 |
+----------+---------+---------+--------+----------+------------+
1 row in set (0.00 sec)


4. LIMIT 연산자 활용하기

▶ LIMIT는 말그대로 제한하는 것을 의미하는데요,
아래의 예시처럼 LIMIT 5 로 지정한다면 1번부터 5번까지 제한하여 5개의 데이터정보만 불러온다는 의미가 됩니다.

  • SELECT * FROM members LIMIT 5;
1
2
3
4
5
6
7
8
9
10
11
mysql> SELECT * FROM members LIMIT 5;
+----------+---------+---------+--------+----------+------------+
| memberID | youName | youPass | youAge | youBirth | regTime    |
+----------+---------+---------+--------+----------+------------+
|        1 | 황00    | 1234    |     33 |   990304 | 1023958375 |
|        2 | 남00    | 1234    |     19 |    60121 | 1023958375 |
|        3 | 김00    | 1234    |     21 |    40416 | 1231231233 |
|        4 | 최00    | 1234    |     26 |   990123 | 1104781152 |
|        5 | 서00    | 1234    |     26 |    11019 | 1111100000 |
+----------+---------+---------+--------+----------+------------+
5 rows in set (0.00 sec)

▶ 만약 제한하는 숫자를 두 번 쓴다면 어떻게 될까요?
그럴 경우엔 아래의 예시르 통해서 확인할 수 있듯 처음 5번째 데이터 이후 데이터부터 5개의 데이터 정보만 가져온다는 의미가 됩니다. 때문에 결과는 1~5번이 아닌 그 다음인 6번부터 시작한 5개의 데이터를 가져오게 될겁니다.

  • SELECT * FROM members LIMIT 5, 5;
1
2
3
4
5
6
7
8
9
10
11
mysql> SELECT * FROM members LIMIT 5, 5;
+----------+---------+---------+--------+----------+------------+
| memberID | youName | youPass | youAge | youBirth | regTime    |
+----------+---------+---------+--------+----------+------------+
|        6 | 김00    | 1234    |     32 |   930604 | 1023958375 |
|        7 | 황00    | 1234    |     20 |   990315 | 1474187756 |
|        8 | 박00    | 1234    |     29 |   961017 | 1023958375 |
|        9 | 강00    | 1234    |     27 |   980420 |  123456744 |
|       10 | 이00    | 1215    |     24 |    10712 | 1023958375 |
+----------+---------+---------+--------+----------+------------+
5 rows in set (0.00 sec)


5. DISTINCT 연산자 활용하기

▶ DISTINCT는 중복된 값을 제거한다는 의미를 갖고 있습니다.
만약 youName이라는 필드값 안에 가나다가 2개 존재할 경우 DISTINCT를 써주게 된다면 중복된 건 제거되기 때문에 6개가 아닌 5개의 결과값만 나오게 됩니다.

  • mysql> SELECT DISTINCT youName FROM members;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
mysql> SELECT youName FROM members;
+---------+
| youName |
+---------+
| 가나다  |
| 마바사  |
| 라아차  |
| 가나다  |
| 바마사  |
| 다라나  |
+---------+
6 rows in set (0.00 sec)


mysql> SELECT DISTINCT youName FROM members;
+---------+
| youName |
+---------+
| 가나다  |
| 마바사  |
| 라아차  |
| 바마사  |
| 다라나  |
+---------+
5 rows in set (0.00 sec)


이렇게 오늘은 좀 더 심화된 SELECT구문에 대해 알아봤는데요,
다음엔 어떤 SQL 정보를 가져올 지 기대해주세요😁!

This post is licensed under CC BY 4.0 by the author.