여러 문자열을 하나로 합치거나 연결
SELECT CONCAT('string1', ;string2',...);
mysql> select concat('concat', ' ', 'test');
+-------------------------------+
| concat('concat', ' ', 'test') |
+-------------------------------+
| concat test |
+-------------------------------+
mysql> select concat('이름:', name) from celeb;
+-------------------------+
| concat('이름:', name) |
+-------------------------+
| 이름:아이유 |
| 이름:이미주 |
| 이름:송강 |
| 이름:강동원 |
| 이름:유재석 |
| 이름:차승원 |
| 이름:이수현 |
+-------------------------+
컬럼이나 테이블 이름에 별칭 생성
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에 출연한 연예인의 신상정보(나이,성별)와 출연정보(시즌-에피소드,방송날짜), 소속사 정보를 방송날짜 최신순으로 정렬하여 검색
검색한 결과의 중복 제거
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 | 가수 |
+------+-------------------+
ㄴ 가수 중에서 성별과 직업별 종류를 검색 -중복 제외
검색결과를 정렬된 순으로 주어진 숫자만큼만 조회
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개를 가져오고 나이 순으로 정렬