[2023.11.29] SQL_CONCAT

하은·2023년 11월 29일
0

- CONCAT

여러 문자열을 하나로 합치거나 연결해주는 함수

- CONCAT 문법

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

  • 예) SELECT CONCAT('concat', ' ', 'test');
    = concat test 가 출력됨
  • 예) SELECT CONCAT('이름:', name) FROM celeb;
    = 이름: 아이유, 이름: 이미주, ... 가 출력됨

- ALIAS

칼럼이나 테이블 이름에 별칭 생성하는 함수

- ALIAS 문법1 _ COLUMN

SELECT column as(ALIAS의 약자) alias(별칭이름)
FROM tablename;

  • 예) SELECT name AS '이름' FROM celeb;
  • 예) SELECT name AS '이름', agency AS '소속사' FROM celeb;
  • 예) name과 job_title을 합쳐서 profile이라는 별칭을 만들어서 검색
    = SELECT CONCAT(name, ':', job_title) AS profile FROM celeb;
  • 예) 이름이 세글자인 연예인
select concat('이름:', name, ', 소속사:', agency) as '연예인정보'
from celeb
where name like '___';

- ALIAS 문법1 _ TABLE

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

  • 예) snl_show에 출연한 celeb을 기준으로 두 테이블을 조인해, celeb 테이블은 c, snl_show 테이블은 s라는 별칭을 만들어서 출연한 시즌과 에피소드, 이름, 직업을 검색
    = SELECT s.season, s.episode, c.name, c.job_title
    = FROM celeb AS c, snl_show AS s
    = WHERE c.name = s.host;
  • 예) snl_show에 출연한 celeb을 기준으로 두 테이블을 조인해 다음과 같이 각 데이터의 별칭을 사용해 검색
    - 시즌, 에피소드, 방송일을 합쳐서 '방송정보'
    - 이름, 직업을 합쳐서 '출연자정보'
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;

==== AS 는 생략도 가능 ======

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)   | 강동원(영화배우, 텔런트)
  • 예) 앞글자가 2글자고, '엔터테인먼트'로 끝나는 소속사 연예인 중 snl에 출연한 연예인의 신상정보(나이, 성별)와 출연정보(시즌-에피소드, 방송날짜), 소속사 정보를 방송날짜 최신순으로 정렬해 다음과 같이 검색하세요
select c.agency as '소속사 정보', concat('나이:', c.age, '(', c.sex, ')') as '신상정보',
concat(s.season, '-', s.episode, ', 방송날짜 : ', s.broadcast_date) as '출연정보'
from celeb as c, snl_show as s
where c.name = s.host and agency like '__엔터테인먼트'
order by s.broadcast_date desc;

- DISTINCT

검색한 결과의 중복 제거

- DISTINCT 문법

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

  • 예) 연예인 소속사 종류를 검색 - 중복 포함
    SELECT agency FROM celeb;

  • 예) 연예인 소속사 종류를 검색 - 중복 제외(distinct)
    SELECT DISTINCT agency FROM celeb;

  • 예) 가수 중에서, 성별과 직업별 종류를 검색 - 중복 포함
    SELECT sex, job_title FROM celeb WHERE job_title LIKE '%가수%';

  • 예) 가수 중에서, 성별과 직업별 종류를 검색 - 중복 제외
    SELECT DISTINCT sex, job_title FROM celeb WHERE job_title LIKE '%가수%';

- LIMIT

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

- LIMIT 문법

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

  • 예) celeb 데이터 3개만 가져오기
    SELECT * FROM celeb LIMIT 3;

  • 예) 나이가 가장 적은 연예인 4명 검색
    SELECT * FROM celeb ORDER BY age LIMIT 4;

  • 예) snl에 출연한 연예인의 정보를 최신 방송날짜 순으로 2개만 검색해서 다음과 같이 출력하세요

select concat ('snl 시즌', s.season, ' 에피소드', s.episode, ' 호스트 ', s.host) as 'SNL 방송정보', c.age
from snl_show as s, celeb as c
where s.host=c.name
order by c.age desc
limit 2;

-->
+-----------------------------------+------+
| SNL 방송정보                      | age  |
+-----------------------------------+------+
| snl 시즌8 에피소드8 호스트 유재석 |   50 |
| snl 시즌8 에피소드9 호스트 차승원 |   48 |
+-----------------------------------+------+

0개의 댓글