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 정보를 가져올 지 기대해주세요😁!