SQL - [CONCAT, ALIAS, DISTINCT, LIMIT]

์†”๋น„ยท2024๋…„ 1์›” 16์ผ
0

CONCAT


๐Ÿงท CONCAT
์—ฌ๋Ÿฌ๋ฌธ์ž์—ด์„ ํ•˜๋‚˜๋กœ ํ•ฉ์น˜๊ฑฐ๋‚˜ ์—ฐ๊ฒฐ (select ๋’ค์— ์‚ฌ์šฉ)

SELECT CONCAT ('string1','string2');
mysql> SELECT CONCAT ('์ด๋ฆ„:',name ) as '์ •๋ณด'
    -> FROM celeb;
+------------------+
| ์ •๋ณด             |
+------------------+
| ์ด๋ฆ„:์•„์ด์œ       |
| ์ด๋ฆ„:์ด๋ฏธ์ฃผ      |
| ์ด๋ฆ„:์†ก๊ฐ•        |
| ์ด๋ฆ„:๊ฐ•๋™์›      |
| ์ด๋ฆ„:์œ ์žฌ์„      |
| ์ด๋ฆ„:์ฐจ์Šน์›      |
| ์ด๋ฆ„:์ด์ˆ˜ํ˜„      |
+------------------+
7 rows in set (0.00 sec)



ALIAS


๐Ÿงท ALIAS (as)
๋ณ„์นญ ์ƒ์„ฑ (์ปฌ๋Ÿผ์ด๋‚˜, ํ…Œ์ด๋ธ” ์ด๋ฆ„์— ๋ณ„์นญ์ƒ์„ฑ)

SELECT column as '๋ณ„๋ช…'
FROM tablename as '๋ณ„๋ช…'

์˜์–ด๋Š” ' ' (๋”ฐ์˜ดํ‘œ) ์ƒ๋žต๊ฐ€๋Šฅ
as ์ƒ๋žต๊ฐ€๋Šฅ

๐Ÿ“Œ name ๊ณผ job_title ์„ ํ•ฉ์ณ์„œ profile ์ด๋ผ๋Š” ๋ณ„์นญ์„ ๋งŒ๋“ค์–ด์„œ ๊ฒ€์ƒ‰

mysql> SELECT CONCAT ( name, ':' , job_title) as profile
    -> FROM celeb;
+-----------------------------------+
| profile                           |
+-----------------------------------+
| ์•„์ด์œ :๊ฐ€์ˆ˜, ํƒค๋ŸฐํŠธ               |
| ์ด๋ฏธ์ฃผ:๊ฐ€์ˆ˜                       |
| ์†ก๊ฐ•:ํƒค๋ŸฐํŠธ                       |
| ๊ฐ•๋™์›:์˜ํ™”๋ฐฐ์šฐ, ํƒค๋ŸฐํŠธ           |
| ์œ ์žฌ์„:MC, ๊ฐœ๊ทธ๋งจ                 |
| ์ฐจ์Šน์›:์˜ํ™”๋ฐฐ์šฐ, ๋ชจ๋ธ             |
| ์ด์ˆ˜ํ˜„:๊ฐ€์ˆ˜                       |
+-----------------------------------+
7 rows in set (0.00 sec)

๐Ÿ“Œsnl_korea ์— ์ถœ์—ฐํ•œ celeb ์„ ๊ธฐ์ค€์œผ๋กœ ๋‘ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜์—ฌ,
celeb ํ…Œ์ด๋ธ”์€ c, snl_show ํ…Œ์ด๋ธ”์€ s ๋ผ๋Š” ๋ณ„์นญ์„ ๋งŒ๋“ค์–ด์„œ ์ถœ์—ฐํ•œ ์‹œ์ฆŒ๊ณผ ์—ํ”ผ์†Œ๋“œ, ์ด๋ฆ„, ์ง์—…์„ ๊ฒ€์ƒ‰

mysql> SELECT s.season, s.episode, c.name, c.job_title
    -> FROM celeb c, snl_show 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.00 sec)



CONCAT, ALIAS ์—ฐ์Šต๋ฌธ์ œ


๐Ÿ“Œsnl_korea ์— ์ถœ์—ฐํ•œ celeb ์„ ๊ธฐ์ค€์œผ๋กœ ๋‘ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ ๋ฐ์ดํ„ฐ์˜ ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰
โ€ข ์‹œ์ฆŒ, ์—ํ”ผ์†Œ๋“œ, ๋ฐฉ์†ก์ผ์„ ํ•ฉ์ณ์„œ โ€˜๋ฐฉ์†ก์ •๋ณดโ€™
โ€ข ์ด๋ฆ„, ์ง์—…์„ ํ•ฉ์ณ์„œ โ€˜์ถœ์—ฐ์ž์ •๋ณดโ€™

mysql> SELECT CONCAT(s.season, '-', s.episode, '(', s.broadcast_date, ')') as '๋ฐฉ์†ก์ •๋ณด',
    ->         CONCAT(c.name, '(', c.job_title, ')' ) as '์ถœ์—ฐ์ž์ •๋ณด'
    -> FROM snl_show as s , celeb as c
    -> WHERE s.host = c.name;
+------------------+------------------------------------+
| ๋ฐฉ์†ก์ •๋ณด         | ์ถœ์—ฐ์ž์ •๋ณด                         |
+------------------+------------------------------------+
| 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)

๐Ÿ“Œ

mysql> SELECT CONCAT ('์ด ๋ฆ„ : ',name, ', ์†Œ ์† ์‚ฌ : ', agency) as '์—ฐ ์˜ˆ ์ธ ์ • ๋ณด'
    -> FROM celeb
    -> WHERE name like '___';
+-------------------------------------------------------------+
| ์—ฐ ์˜ˆ ์ธ ์ • ๋ณด                                              |
+-------------------------------------------------------------+
| ์ด ๋ฆ„ : ์•„์ด์œ , ์†Œ ์† ์‚ฌ : EDAM์—”ํ„ฐํ…Œ์ด๋จผํŠธ                 |
| ์ด ๋ฆ„ : ์ด๋ฏธ์ฃผ, ์†Œ ์† ์‚ฌ : ์šธ๋ฆผ์—”ํ„ฐํ…Œ์ด๋จผํŠธ                 |
| ์ด ๋ฆ„ : ๊ฐ•๋™์›, ์†Œ ์† ์‚ฌ : YG์—”ํ„ฐํ…Œ์ด๋จผํŠธ                   |
| ์ด ๋ฆ„ : ์œ ์žฌ์„, ์†Œ ์† ์‚ฌ : ์•ˆํ…Œ๋‚˜                           |
| ์ด ๋ฆ„ : ์ฐจ์Šน์›, ์†Œ ์† ์‚ฌ : YG์—”ํ„ฐํ…Œ์ด๋จผํŠธ                   |
| ์ด ๋ฆ„ : ์ด์ˆ˜ํ˜„, ์†Œ ์† ์‚ฌ : YG์—”ํ„ฐํ…Œ์ด๋จผํŠธ                   |
+-------------------------------------------------------------+
6 rows in set (0.00 sec)

๐Ÿ“Œ

mysql> SELECT agency as '์†Œ์†์‚ฌ์ •๋ณด',
    ->         CONCAT( '๋‚˜์ด : ', age, '(', sex, ')') as '์‹ ์ƒ์ •๋ณด'
    ->         ,CONCAT( season, '-', episode, ', ๋ฐฉ์†ก๋‚ ์งœ : ', broadcast_date) as '์ถœ์—ฐ์ •๋ณด'
    -> FROM celeb as c, snl_show as s
    ->  WHERE name = host
    -> AND agency like '__์—”ํ„ฐํ…Œ์ด๋จผํŠธ'
    -> ORDER BY broadcast_date DESC;
+----------------------+----------------+---------------------------------+
| ์†Œ์†์‚ฌ์ •๋ณด           | ์‹ ์ƒ์ •๋ณด       | ์ถœ์—ฐ์ •๋ณด                        |
+----------------------+----------------+---------------------------------+
| YG์—”ํ„ฐํ…Œ์ด๋จผํŠธ       | ๋‚˜์ด : 23(F)   | 8-10, ๋ฐฉ์†ก๋‚ ์งœ : 2020-09-26     |
| YG์—”ํ„ฐํ…Œ์ด๋จผํŠธ       | ๋‚˜์ด : 48(M)   | 8-9, ๋ฐฉ์†ก๋‚ ์งœ : 2020-09-19      |
| YG์—”ํ„ฐํ…Œ์ด๋จผํŠธ       | ๋‚˜์ด : 41(M)   | 8-7, ๋ฐฉ์†ก๋‚ ์งœ : 2020-09-05      |
+----------------------+----------------+---------------------------------+
3 rows in set (0.01 sec)



DISTINCT


๐Ÿงท DISTINCT
๊ฒ€์ƒ‰๊ฒฐ๊ณผ ์ค‘๋ณต์ œ๊ฑฐ (select๋ฌธ์—์„œ ์‚ฌ์šฉ)

SELECT DISTINCT column
FROM tablename ;

๐Ÿ“Œ ์˜ˆ์ œ

mysql> SELECT DISTINCT agency, sex
    -> FROM celeb;
+--------------------------+------+
| agency                   | sex  |
+--------------------------+------+
| EDAM์—”ํ„ฐํ…Œ์ด๋จผํŠธ         | F    |
| ์šธ๋ฆผ์—”ํ„ฐํ…Œ์ด๋จผํŠธ         | F    |
| ๋‚˜๋ฌด์—‘ํ„ฐ์Šค               | M    |
| YG์—”ํ„ฐํ…Œ์ด๋จผํŠธ           | M    |
| ์•ˆํ…Œ๋‚˜                   | M    |
| YG์—”ํ„ฐํ…Œ์ด๋จผํŠธ           | F    |
+--------------------------+------+
6 rows in set (0.00 sec)

โžก๏ธ ์ปฌ๋Ÿผ ๋‘๊ฐœ๋ฅผ ๋„ฃ์—ˆ์„ ๋•Œ ๊ฒฐ๊ณผ๊ฐ€ ๊ถ๊ธˆํ•ด์„œ ๋‘๊ฐ€์ง€๋ฅผ ๋„ฃ์–ด๋ณด์•˜๋‹ค.
agency๋งŒ ๋„ฃ์—ˆ๋‹ค๋ฉด ๋งˆ์ง€๋ง‰ ์ค„์ธ YG์—”ํ„ฐํ…Œ์ด๋จผํŠธ๋Š” ์ถœ๋ ฅ๋˜์ง€ ์•Š๊ฒ ์ง€๋งŒ,
์„ค๋ช…์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•˜์˜€๋”๋‹ˆ ๋‹ค๋ฅธ ์„ฑ๋ณ„์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์ถœ๋ ฅ๋จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.



DISTINCT ์—ฐ์Šต๋ฌธ์ œ


๐Ÿ“Œceleb ํ…Œ์ด๋ธ”์—์„œ ์„ฑ๋ณ„๊ณผ ์†Œ์†์‚ฌ ๋ณ„ ์ข…๋ฅ˜๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์„ฑ๋ณ„, ์†Œ์†์‚ฌ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์„ธ์š”.

mysql> SELECT DISTINCT sex, agency
    -> FROM celeb
    -> ORDER BY sex, agency;
+------+--------------------------+
| sex  | agency                   |
+------+--------------------------+
| F    | EDAM์—”ํ„ฐํ…Œ์ด๋จผํŠธ         |
| F    | YG์—”ํ„ฐํ…Œ์ด๋จผํŠธ           |
| F    | ์šธ๋ฆผ์—”ํ„ฐํ…Œ์ด๋จผํŠธ         |
| M    | YG์—”ํ„ฐํ…Œ์ด๋จผํŠธ           |
| M    | ๋‚˜๋ฌด์—‘ํ„ฐ์Šค               |
| M    | ์•ˆํ…Œ๋‚˜                   |
+------+--------------------------+
6 rows in set (0.00 sec)



LIMIT


๐Ÿงท LIMIT
๊ฒ€์ƒ‰๊ฒฐ๊ณผ๋ฅผ ์ •๋ ฌ๋œ ์ˆœ์œผ๋กœ ์ฃผ์–ด์ง„ ์ˆซ์ž๋งŒํผ๋งŒ ์กฐํšŒ (์ฟผ๋ฆฌ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์‚ฌ์šฉ)

SELECT column1, column2, ...
FROM tablename 
WHERE condition
LIMIT number;

๐Ÿ“Œ ๋‚˜์ด๊ฐ€ ๊ฐ€์žฅ ์ ์€ ์—ฐ์˜ˆ์ธ 4๋ช…์„ ๊ฒ€์ƒ‰

mysql> SELECT * FROM celeb
    -> ORDER BY age
    -> LIMIT 4;
+----+-----------+------------+------+------+-------------------+--------------------------+
| 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 rows in set (0.00 sec)



LIMIT ์—ฐ์Šต๋ฌธ์ œ


๐Ÿ“Œceleb ํ…Œ์ด๋ธ”์—์„œ ๋‚จ์ž ์—ฐ์˜ˆ์ธ ์ค‘ ๋‚˜์ด๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ 2๋ช…์„ ์กฐํšŒํ•˜์„ธ์š”

mysql> SELECT * FROM celeb
    -> WHERE sex = 'M'
    -> ORDER BY age DESC
    -> LIMIT 2;
+----+-----------+------------+------+------+----------------------+----------------------+
| ID | NAME      | BIRTHDAY   | AGE  | SEX  | JOB_TITLE            | AGENCY               |
+----+-----------+------------+------+------+----------------------+----------------------+
|  5 | ์œ ์žฌ์„    | 1972-08-14 |   50 | M    | MC, ๊ฐœ๊ทธ๋งจ           | ์•ˆํ…Œ๋‚˜               |
|  6 | ์ฐจ์Šน์›    | 1970-06-07 |   48 | M    | ์˜ํ™”๋ฐฐ์šฐ, ๋ชจ๋ธ       | YG์—”ํ„ฐํ…Œ์ด๋จผํŠธ       |
+----+-----------+------------+------+------+----------------------+----------------------+
2 rows in set (0.00 sec)

๐Ÿ“Œ

mysql> SELECT CONCAT ('SNL ์‹œ์ฆŒ ', season, ' ํ˜ธ์ŠคํŠธ ', host) as 'SNL ๋ฐฉ์†ก์ •๋ณด'
    ->          , age
    -> FROM snl_show, celeb
    -> WHERE name = host
    -> AND  sex = 'M'
    -> ORDER BY age DESC
    -> LIMIT 2;
+----------------------------------+------+
| SNL ๋ฐฉ์†ก์ •๋ณด                     | age  |
+----------------------------------+------+
| SNL ์‹œ์ฆŒ 8 ํ˜ธ์ŠคํŠธ ์œ ์žฌ์„         |   50 |
| SNL ์‹œ์ฆŒ 8 ํ˜ธ์ŠคํŠธ ์ฐจ์Šน์›         |   48 |
+----------------------------------+------+
2 rows in set (0.00 sec)

Daily Study Note

0๊ฐœ์˜ ๋Œ“๊ธ€