use zerobase;
SELECT CONCAT('string1', 'string2',..);
SELECT CONCAT('concat', ' ', 'test');
+-------------------------------+
| CONCAT('concat', ' ', 'test') |
+-------------------------------+
| concat test |
+-------------------------------+
SELECT CONCAT('이름:', name) FROM celeb;
| CONCAT('이름:', name) |
+-----------------------+
| 이름:아이유 |
| 이름:이미주 |
| 이름:송강 |
| 이름:강동원 |
| 이름:유재석 |
| 이름:차승원 |
| 이름:이수현 |
칼럼이름에별칭생성
SELECT column AS ALIAS
FROM tablename;
테이블이름에별칭생성
SELECT column1, column2, ...
FROM tablename AS ALIAS;
#1.
name 을이름으로별칭을만들어서검색
SELECT name as '이름'
FROM celeb;
이름 |
+--------+
| 아이유 |
| 이미주 |
#2.
name 은이름으로, agency 는소속사로별칭을만들어서검색
SELECT name as '이름', agency as '소속사'
FROM celeb;
=> 이름 다음에 콤마 있어야함
이름 | 소속사 |
+--------+------------------+
| 아이유 | EDAM엔터테이먼트 |
| 이미주 | 울림엔터테이먼트
#3.
name 과 job_title 을합쳐서 profile 이라는별칭을만들어서검색
select CONCAT(name, ' : ', job_title) as profile FROM celeb;
profile |
+---------------------------+
| 아이유 : 가수, 텔런트 |
#4.
snl_korea 에출연한 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;
| season | episode | name | job_title |
+--------+---------+--------+------------------+
| 8 | 7 | 강동원 | 영화배우, 텔런트
#5.
snl_korea 에출연한 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;
| 방송정보 | 출연자정보 |
+------------------+--------------------------+
| 8-7(2020-09-05) | 강동원(영화배우, 텔런트) |
| 8-8(2020-09-12) | 유재석(MC, 개그맨)
| 8-9(2020-09-19) | 차승원(영화배우, 모델) |
| 8-10(2020-09-26) | 이수현(가수)
SELECT CONCAT('이름 :', name,' , ', '소속사 :', agency )
AS '연예인 정보'
FROM celeb
WHERE name like'___';
=> 언더바3개, 이름이 3글자인
- select문에서 가독성을 위해 ' , ', 추가해줌
=> 컬럼명을 AS '연예인 정보'로 명시
| 연예인 정보 |
+-----------------------------------------+
| 이름 :아이유 , 소속사 :EDAM엔터테이먼트 |
| 이름 :이미주 , 소속사 :울림엔터테이먼트 |
- 앞글자가 2글자이고, ‘엔터테이먼트’ 로끝나는소속사연예인중
SNL 에출연한연예인의신상정보(나이, 성별)와출연정보(시즌-에피소드, 방송날짜), 소속사정보를 방송날짜최신순으로정렬하여다음과같이검색하세요.
SELECT agency AS '소속사 정보',
CONCAT ('나이 :',age, '(',sex,')') AS '신상정보', CONCAT(season, '-', episode, ', ','방송날짜 :', broadcast_date ) AS '출연정보'
FROM celeb as c, snl_show as s
WHERE c.name = s.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 |
DISTINCT
검색한결과의중복제거
DISTINCT 문법
SELECT DISTINCT column1, column2, ...
FROM tablename;
DISTINCT 예제 - 1
연예인소속사종류를검색 - 중복포함
SELECT agency FROM celeb;
DISTINCT 예제 - 1
연예인소속사종류를검색 - 중복제외 (DISTINCT)
SELECT DISTINCT agency FROM celeb;
DISTINCT 예제 - 2
가수중에서, 성별과직업별종류를검색 - 중복포함
SELECT sex, job_title FROM celeb WHERE job_title like '%가수%';
가수중에서, 성별과직업별종류를검색 - 중복제외 (DISTINCT)
SELECT DISTINCT sex, job_title FROM celeb WHERE job_title like '%가수%';
=> | F | 가수 |가 1번만 출력됨
p33
- celeb 테이블에서성별과소속사별종류를검색하여성별, 소속사순으로정렬하세요.
select distinct sex, agency
from celeb
order by sex, agency ASC;
| sex | agency |
+------+------------------+
| F | EDAM엔터테이먼트 |
| F | YG엔터테이먼트 |
| F | 울림엔터테이먼트 |
| M | YG엔터테이먼트 |
| M | 나무엑터스 |
| M | 안테나
검색결과를정렬된순으로주어진숫자만큼만조회
LIMIT 문법
LIMIT 예제 - 1
celeb 데이터 3개만가져오기
SELECT * FROM celeb
LIMIT 3;
=> id 1~3가져옴
나이가가장적은연예인 4명을검색
SELECT * FROM celeb ORDER BY age LIMIT 4;
=> LIMIT을 ORDER BY 뒤에 써줘야 에러안뜸
문제1~2 (p42~43)
select * from celeb 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엔터테이먼트 |
- SNL에출연한연예인의정보를최신방송날짜순으로 2개만검색하여다음과같이출력하세요.
SELECT CONCAT('SNL 시즌 ',season ,'에피소드',episode, ' 호스트 ', host)AS 'SNL 방송정보' ,age
FROM celeb, snl_show
WHERE name = host
ORDER BY broadcast_date DESC
LIMIT 2;
| SNL 방송정보 | age |
+------------------------------------+------+
| SNL 시즌 8에피소드10 호스트 이수현 | 23 |
| SNL 시즌 8에피소드9 호스트 차승원 | 48 |
※최신방송날짜 순 확인해봄
select host, broadcast_date
from celeb, snl_show
where name = host
order by broadcast_date DESC;
문제오류=> 강의자료의 출력결과는 나이순이었음
SELECT CONCAT('SNL 시즌 ',season ,'에피소드',episode, ' 호스트 ', host)AS 'SNL 방송정보' ,age
FROM celeb, snl_show
WHERE name = host
ORDER BY age DESC
LIMIT 2;
| SNL 방송정보 | age |
+-----------------------------------+------+
| SNL 시즌 8에피소드8 호스트 유재석 | 50 |
| SNL 시즌 8에피소드9 호스트 차승원 | 48 |