41.SQL-7

SOWA·2023년 4월 27일
0

SQL

목록 보기
7/12

🧷 Concat

여러 문자열을 하나로 합치거나 연결

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

mysql> select concat('concat', ' ', 'test');
+-------------------------------+
| concat('concat', ' ', 'test') |
+-------------------------------+
| concat test                   |
+-------------------------------+

mysql> select concat('이름:', name) from celeb;
+-------------------------+
| concat('이름:', name)   |
+-------------------------+
| 이름:아이유             |
| 이름:이미주             |
| 이름:송강               |
| 이름:강동원             |
| 이름:유재석             |
| 이름:차승원             |
| 이름:이수현             |
+-------------------------+


🧷 ALIAS

컬럼이나 테이블 이름에 별칭 생성

SELECT column as alias
FROM tablename;
as: alias , alias:별칭 입력


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


mysql> select name as '이름' from celeb;
+-----------+
| 이름      |
+-----------+
| 아이유    |
| 이미주    |
| 송강      |
| 강동원    |
| 유재석    |
| 차승원    |
| 이수현    |
+-----------+

mysql> select name as '이름', agency as '소속사' from celeb;
+-----------+--------------------------+
| 이름      | 소속사                   |
+-----------+--------------------------+
| 아이유    | EDAM엔터테이먼트         |
| 이미주    | 올림엔터테인먼트         |
| 송강      | 나무엑터스               |
| 강동원    | YG엔터테인먼트           |
| 유재석    | 안테나                   |
| 차승원    | YG엔터테인먼트           |
| 이수현    | YG엔터테인먼트           |
+-----------+--------------------------+

ㄴ name은 이름으로 agency는 소속사로 별칭을 만들어서 검색


mysql> select concat(name, ' : ' , job_title) as profile from celeb;
+------------------------------------+
| profile                            |
+------------------------------------+
| 아이유 : 가수, 탤런트              |
| 이미주 : 가수                      |
| 송강 : 탤런트                      |
| 강동원 : 영화배우,탤런트           |
| 유재석 : MC,개그맨                 |
| 차승원 : 영화배우,모델             |
| 이수현 : 가수                      |
+------------------------------------+

ㄴ name과 job_title을 합쳐서 profile이란 별칭을 만들어서 검색


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 | 이수현    | 가수                   |
+--------+---------+-----------+------------------------+

ㄴ snl_korea에 출연한 celeb을 기준으로 두 테이블을 조인하여 celeb 테이블은 c, snl_korea 테이블은 s라는 별칭을 만들어서 출연한 시즌과 에피소드, 이름,직업을 검색


mysql> select concat(s.season, '-', s.episode, '(', s.broadcast_date, ')') as '방송정보',
    ->        concat(c.name,')', c.job_title, ')') as '출연자정보'
    -> from celeb as c, snl_show as 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) | 이수현)가수)                      |
+------------------+-----------------------------------+

ㄴ snl_korea에 출연한 celeb을 기준으로 두 테이블을 조인하여 다음과 같이 각 데이터의 별칭을 사용하여 검색

  • 시즌,에피소드,방송일을 합쳐서 '방송정보'
  • 이름,직업을 합쳐서 '출연자정보'

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) | 이수현)가수)                      |
+------------------+-----------------------------------+

ㄴ AS 생략가능


mysql> select c.agency '소속사 정보', concat('나이:', c.age, '(', c.sex, ')') '신상정보', concat(s.season, '-', s.episode, ', 방송날짜 :', s.broadcast_date) '출연정보' from celeb c, snl_show s where c.name = s.host and agency like '__엔터테인먼트' order by s.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      |
+----------------------+--------------+--------------------------------+

ㄴ 앞글자가 2글자이고, '엔터테인먼트;로 끝나는 소속사 연예인 중 SN에 출연한 연예인의 신상정보(나이,성별)와 출연정보(시즌-에피소드,방송날짜), 소속사 정보를 방송날짜 최신순으로 정렬하여 검색


🧷 DISTINCT

검색한 결과의 중복 제거

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


mysql> select agency from celeb;
+--------------------------+
| agency                   |
+--------------------------+
| EDAM엔터테이먼트         |
| 올림엔터테인먼트         |
| 나무엑터스               |
| YG엔터테인먼트           |
| 안테나                   |
| YG엔터테인먼트           |
| YG엔터테인먼트           |
+--------------------------+

ㄴ 연예인 소속사 종류를 검색-중복 포함


mysql> select distinct agency from celeb;
+--------------------------+
| agency                   |
+--------------------------+
| EDAM엔터테이먼트         |
| 올림엔터테인먼트         |
| 나무엑터스               |
| YG엔터테인먼트           |
| 안테나                   |
+--------------------------+

ㄴ 연예인 소속사 종류를 검색 -중복제외


mysql> select sex, job_title from celeb where job_title like '%가수%';
+------+-------------------+
| sex  | job_title         |
+------+-------------------+
| F    | 가수, 탤런트      |
| F    | 가수              |
| F    | 가수              |
+------+-------------------+

ㄴ 가수 중에서 성별과 직업별 종류를 검색-중복포함


mysql> select distinct sex, job_title from celeb where job_title like '%가수%';
+------+-------------------+
| sex  | job_title         |
+------+-------------------+
| F    | 가수, 탤런트      |
| F    | 가수              |
+------+-------------------+

ㄴ 가수 중에서 성별과 직업별 종류를 검색 -중복 제외



🧷 LIMIT

검색결과를 정렬된 순으로 주어진 숫자만큼만 조회


mysql> select * from celeb limit 3;
+----+-----------+------------+------+------+-------------------+--------------------------+
| ID | NAME      | BIRTHDAY   | AGE  | SEX  | JOB_TITLE         | AGENCY                   |
+----+-----------+------------+------+------+-------------------+--------------------------+
|  1 | 아이유    | 1993-05-16 |   29 | F    | 가수, 탤런트      | EDAM엔터테이먼트         |
|  2 | 이미주    | 1994-09-23 |   28 | F    | 가수              | 올림엔터테인먼트         |
|  3 | 송강      | 1994-04-23 |   28 | M    | 탤런트            | 나무엑터스               |
+----+-----------+------------+------+------+-------------------+--------------------------+

ㄴ celeb 데이터 3개만 가져오기


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엔터테이먼트         |
+----+-----------+------------+------+------+-------------------+--------------------------+

ㄴ celeb 데이터 4개를 가져오고 나이 순으로 정렬



from.제로베이스 데이터 취업스쿨 강의

0개의 댓글