SQL

CONCAT, alias, DISTINCT, LIMIT

책다니엘 2024. 7. 20. 19:23

1. CONCAT은 여러 문자열을 합치거나 연결하는 함수이다.

SELECT CONCAT('string1', 'string2', ...)

# 예시
mysql> select concat('concat', ' ', 'test');
+-------------------------------+
| concat('concat', ' ', 'test') |
+-------------------------------+
| concat test                   |
+-------------------------------+
1 row in set (0.00 sec)

# 예시2
mysql> select concat('이름: ', name) FROM celeb;
+------------------------+
| concat('이름: ', name) |
+------------------------+
| 이름: 아이유           |
| 이름: 이미주           |
| 이름: 송강             |
| 이름: 강동원           |
| 이름: 유재석           |
| 이름: 차승원           |
| 이름: 이수현           |
+------------------------+
7 rows in set (0.03 sec)

 

2. alias는 테이블에 별칭을 생성하는 기능이다. 

SELECT column as alias
FROM tablename;

SELECT column1, column2, ...
FROM tablename as alias;

# 예시
mysql> SELECT name as '이름' FROM celeb;
+--------+
| 이름   |
+--------+
| 아이유 |
| 이미주 |
| 송강   |
| 강동원 |
| 유재석 |
| 차승원 |
| 이수현 |
+--------+
7 rows in set (0.00 sec)

mysql> SELECT name as '이름', agency as '소속사' FROM celeb;
+--------+------------------+
| 이름   | 소속사           |
+--------+------------------+
| 아이유 | EDAM엔터테인먼트 |
| 이미주 | 울림엔터테인먼트 |
| 송강   | 나무액터스       |
| 강동원 | YG엔터테인먼트   |
| 유재석 | 안테나           |
| 차승원 | YG엔터테인먼트   |
| 이수현 | YG엔터테인먼트   |
+--------+------------------+
7 rows in set (0.00 sec)

mysql> SELECT CONCAT(name, ' : ', job_title) as profile FROM celeb;
+---------------------------+
| profile                   |
+---------------------------+
| 아이유 : 가수, 탤런트     |
| 이미주 : 가수             |
| 송강 : 탤런트             |
| 강동원 : 영화배우, 탤런트 |
| 유재석 : MC, 개그맨       |
| 차승원 : 영화배우, 모델   |
| 이수현 : 가수             |
+---------------------------+
7 rows in set (0.00 sec)

mysql> SELECT s.season, s.episode, c.name, c.job_title
    -> FROM celeb AS c, snl_show AS s
    -> WHERE c.name = s.host;
+--------+---------+--------+------------------+
| season | episode | name   | job_title        |
+--------+---------+--------+------------------+
|      8 |       7 | 강동원 | 영화배우, 탤런트 |
|      8 |       8 | 유재석 | MC, 개그맨       |
|      8 |       9 | 차승원 | 영화배우, 모델   |
|      8 |      10 | 이수현 | 가수             |
+--------+---------+--------+------------------+
4 rows in set (0.02 sec)

 

3. alias를 지정하는데 사용하는 AS는 생략도 가능하다.

mysql> SELECT CONCAT(s.season, '-', s.episode, '(', s.broadcast_date, ')') '방송정보',
    -> CONCAT(c.name, '(', c.job_title, ')') '출연정보'
    -> FROM celeb c, snl_show s
    -> WHERE c.name = s.host;
+------------------+--------------------------+
| 방송정보         | 출연정보                 |
+------------------+--------------------------+
| 8-7(2020-09-05)  | 강동원(영화배우, 탤런트) |
| 8-8(2020-09-12)  | 유재석(MC, 개그맨)       |
| 8-9(2020-09-19)  | 차승원(영화배우, 모델)   |
| 8-10(2020-09-26) | 이수현(가수)             |
+------------------+--------------------------+
4 rows in set (0.00 sec)

 

4. DISTINCT는 검색한 결과의 중복을 제거한다.

SELECT DISTINCT column1, column2, ...
FROM tablename;

# 예시
mysql> SELECT agency FROM celeb;
+------------------+
| agency           |
+------------------+
| EDAM엔터테인먼트 |
| 울림엔터테인먼트 |
| 나무액터스       |
| YG엔터테인먼트   |
| 안테나           |
| YG엔터테인먼트   |
| YG엔터테인먼트   |
+------------------+
7 rows in set (0.00 sec)

mysql> SELECT DISTINCT agency FROM celeb;
+------------------+
| agency           |
+------------------+
| EDAM엔터테인먼트 |
| 울림엔터테인먼트 |
| 나무액터스       |
| YG엔터테인먼트   |
| 안테나           |
+------------------+
5 rows in set (0.00 sec)

mysql> SELECT sex, job_title FROM celeb WHERE job_title LIKE '%가수%';
+------+--------------+
| sex  | job_title    |
+------+--------------+
| F    | 가수, 탤런트 |
| F    | 가수         |
| F    | 가수         |
+------+--------------+
3 rows in set (0.00 sec)

mysql> SELECT DISTINCT sex, job_title FROM celeb WHERE job_title LIKE '%가수%';
+------+--------------+
| sex  | job_title    |
+------+--------------+
| F    | 가수, 탤런트 |
| F    | 가수         |
+------+--------------+
2 rows in set (0.00 sec)

 

 

5. LIMIT은 검색결과를 정렬된 순으로 주어진 숫자만큼만 조회한다.

# 최상위로부터 number개만큼의 데이터만 조회
SELECT column1, column2, ...
FROM tablename 
WHERE condition
LIMIT number;

# 예시
mysql> SELECT * FROM celeb ORDER BY age LIMIT 5;
+----+--------+------------+------+------+------------------+------------------+
| ID | NAME   | BIRTHDAY   | AGE  | SEX  | JOB_TITLE        | AGENCY           |
+----+--------+------------+------+------+------------------+------------------+
|  7 | 이수현 | 1999-05-04 |   23 | F    | 가수             | YG엔터테인먼트   |
|  2 | 이미주 | 1994-09-23 |   28 | F    | 가수             | 울림엔터테인먼트 |
|  3 | 송강   | 1994-04-23 |   28 | M    | 탤런트           | 나무액터스       |
|  1 | 아이유 | 1993-05-16 |   29 | F    | 가수, 탤런트     | EDAM엔터테인먼트 |
|  4 | 강동원 | 1981-01-18 |   41 | M    | 영화배우, 탤런트 | YG엔터테인먼트   |
+----+--------+------------+------+------+------------------+------------------+
5 rows in set (0.00 sec)