select * from test1;
+------+
| no |
+------+
| 1 |
| 2 |
| 3 |
+------+
select * from test2;
+------+
| no |
+------+
| 5 |
| 6 |
| 3 |
+------+
select * from test1
union all
select * from test2;
+------+
| no |
+------+
| 1 |
| 2 |
| 3 |
| 5 |
| 6 |
+------+
select * from test1
union
select * from test2;
+------+
| no |
+------+
| 1 |
| 2 |
| 3 |
| 5 |
| 6 |
| 3 |
+------+
select * from celeb;
+----+-----------+------------+------+------+-------------------------+--------------------------+
| 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 | 텔런트 | 나무엑터스
|
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 텔런트 | YG엔터테이먼트 |
| 5 | 유재석 | 1972-08-14 | 58 | M | MC, 개그맨 | 안테나
|
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테이먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테이먼트 |
+----+-----------+------------+------+------+-------------------------+--------------------------+
📑성별이 여자인 데이터를 검색하는 쿼리와 소속사가 YG엔터테이먼트인 데이터를 검색하는 쿼리를 UNION ALL로 실행
select name, sex, agency from celeb where sex = 'F'
UNION ALL
select name, sex, agency from celeb where agency like 'YG%';
+-----------+------+--------------------------+
| name | sex | agency |
+-----------+------+--------------------------+
| 아이유 | F | EDAM엔터테이먼트 |
| 이미주 | F | 울림엔터테이먼트 |
| 이수현 | F | YG엔터테이먼트 |
| 강동원 | M | YG엔터테이먼트 |
| 차승원 | M | YG엔터테이먼트 |
| 이수현 | F | YG엔터테이먼트 |
+-----------+------+--------------------------+
📑가수가 직업인 연예인의 이름, 직업을 검색하는 쿼리와, 1980년대에 태어난 연예인이 이름, 생년월일, 나이를 검색하는 쿼리를 UNION으로 실행
select name, job_title from celeb where job_title like '%가수%'
UNION
select name, birthday, age from celeb where birthday between '19800101' and '19801231';
ERROR 1222 (21000): The used SELECT statements have a different number of columns
❗컬럼의 길이가 다르면 error 발생
<create table snl_show (
-> ID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> SEASON int NOT NULL,
-> EPISODE int NOT NULL,
-> BROADCAST_DATE date,
-> HOST varchar(32) NOT NULL
-> );
+----------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+----------------+
| ID | int | NO | PRI | NULL | auto_increment |
| SEASON | int | NO | | NULL | |
| EPISODE | int | NO | | NULL | |
| BROADCAST_DATE | date | YES | | NULL | |
| HOST | varchar(32) | NO | | NULL | |
+----------------+-------------+------+-----+---------+----------------+
+----+--------+---------+----------------+-----------+
| ID | SEASON | EPISODE | BROADCAST_DATE | HOST |
+----+--------+---------+----------------+-----------+
| 1 | 8 | 7 | 2020-09-05 | 강동원 |
| 2 | 8 | 8 | 2020-09-12 | 유재석 |
| 3 | 8 | 9 | 2020-09-19 | 차승원 |
| 4 | 8 | 10 | 2020-09-26 | 이수현 |
| 5 | 9 | 1 | 2021-09-04 | 이병헌 |
| 6 | 9 | 2 | 2021-09-11 | 하지원 |
| 7 | 9 | 3 | 2021-09-18 | 제시 |
| 8 | 9 | 4 | 2021-09-25 | 조정석 |
| 9 | 9 | 5 | 2021-10-02 | 조여정 |
| 10 | 9 | 6 | 2021-10-09 | 옥주현 |
+----+--------+---------+----------------+-----------+
select celeb.id, celeb.name, snl_show.id, snl_show.host
from celeb
inner join snl_show
on celeb.name=snl_show.host;
+----+-----------+----+-----------+
| id | name | id | host |
+----+-----------+----+-----------+
| 4 | 강동원 | 1 | 강동원 |
| 5 | 유재석 | 2 | 유재석 |
| 6 | 차승원 | 3 | 차승원 |
| 7 | 이수현 | 4 | 이수현 |
+----+-----------+----+-----------+
select celeb.id, celeb.name, snl_show.id, snl_show.host
-> from celeb
-> left join snl_show
-> on celeb.name = snl_show.host;
+----+-----------+------+-----------+
| id | name | id | host |
+----+-----------+------+-----------+
| 1 | 아이유 | NULL | NULL |
| 2 | 이미주 | NULL | NULL |
| 3 | 송강 | NULL | NULL |
| 4 | 강동원 | 1 | 강동원 |
| 5 | 유재석 | 2 | 유재석 |
| 6 | 차승원 | 3 | 차승원 |
| 7 | 이수현 | 4 | 이수현 |
+----+-----------+------+-----------+
select celeb.id, celeb.name, snl_show.id, snl_show.host
-> from celeb
-> right join snl_show
-> on celeb.name=snl_show.host;
+------+-----------+----+-----------+
| id | name | id | host |
+------+-----------+----+-----------+
| 4 | 강동원 | 1 | 강동원 |
| 5 | 유재석 | 2 | 유재석 |
| 6 | 차승원 | 3 | 차승원 |
| 7 | 이수현 | 4 | 이수현 |
| NULL | NULL | 5 | 이병헌 |
| NULL | NULL | 6 | 하지원 |
| NULL | NULL | 7 | 제시 |
| NULL | NULL | 8 | 조정석 |
| NULL | NULL | 9 | 조여정 |
| NULL | NULL | 10 | 옥주현 |
+------+-----------+----+-----------+
❗ MYSQL은 지원하지 않음
select celeb.id, celeb.name, snl_show.id, snl_show.host
-> from celeb
-> left join snl_show
-> on celeb.name=snl_show.host
-> UNION
-> select celeb.id, celeb.name, snl_show.id, snl_show.host
-> from celeb
-> right join snl_show
-> on celeb.name=snl_show.host
-> ;
+------+-----------+------+-----------+
| id | name | id | host |
+------+-----------+------+-----------+
| 1 | 아이유 | NULL | NULL |
| 2 | 이미주 | NULL | NULL |
| 3 | 송강 | NULL | NULL |
| 4 | 강동원 | 1 | 강동원 |
| 5 | 유재석 | 2 | 유재석 |
| 6 | 차승원 | 3 | 차승원 |
| 7 | 이수현 | 4 | 이수현 |
| NULL | NULL | 5 | 이병헌 |
| NULL | NULL | 6 | 하지원 |
| NULL | NULL | 7 | 제시 |
| NULL | NULL | 8 | 조정석 |
| NULL | NULL | 9 | 조여정 |
| NULL | NULL | 10 | 옥주현 |
+------+-----------+------+-----------+
📑snl_show 에 호스트로 출연한 celeb을 기준으로 celeb 테이블과 snl_show 테이블을 SELF JOIN
select celeb.id, celeb.name, snl_show.id, snl_show.host
-> from celeb, snl_show
-> where celeb.name=snl_show.host;
+----+-----------+----+-----------+
| id | name | id | host |
+----+-----------+----+-----------+
| 4 | 강동원 | 1 | 강동원 |
| 5 | 유재석 | 2 | 유재석 |
| 6 | 차승원 | 3 | 차승원 |
| 7 | 이수현 | 4 | 이수현 |
+----+-----------+----+-----------+
📑celeb 테이블의 연예인 중, snl_show에 호스트로 출연했고 소속사가 안테나인 사람의 이름과 직업을 겁색
<select celeb.name, celeb.job_title from celeb, snl_show
-> where celeb.name=snl_show.host and celeb.agency='안테나';
+-----------+---------------+
| name | job_title |
+-----------+---------------+
| 유재석 | MC, 개그맨 |
+-----------+---------------+
📑celeb 테이블의 연예인 중, snl_show에 호스트로 출연했고, 영화배우는 아니면서 YG소속이거나 40세 이상이면서 YG 소속이 아닌 옌예인의 이름, 나이, 직업, 소속사, 시즌, 에피소드 정보 검색
<select celeb.name, celeb.age, celeb.job_title, snl_show.season, snl_show.episode
-> from celeb, snl_show
-> where (celeb.name = snl_show.host) and
-> ((celeb.agency like 'YG%' and not celeb.job_title like '%영화배우%') or (celeb.age >=40 and not celeb.agency like 'YG%'));
+-----------+------+---------------+--------+---------+
| name | age | job_title | season | episode |
+-----------+------+---------------+--------+---------+
| 유재석 | 58 | MC, 개그맨 | 8 | 8 |
| 이수현 | 23 | 가수 | 8 | 10 |
+-----------+------+---------------+--------+---------+
<select name, age, job_title, season, episode
-> from celeb, snl_show
-> where (name = host) and
-> ((agency like 'YG%' and not job_title like '%영화배우%') or (age >=40 and not agency like 'YG%'));
+-----------+------+---------------+--------+---------+
| name | age | job_title | season | episode |
+-----------+------+---------------+--------+---------+
| 유재석 | 58 | MC, 개그맨 | 8 | 8 |
| 이수현 | 23 | 가수 | 8 | 10 |
+-----------+------+---------------+--------+---------+
📑snl_shoe에 출연한 celeb 중, 에피소드 7, 9, 10 중에 출연했거나 소속사가 YG로 시작하고 뒤레 6글자로 끝나는 사람 중 작년 9월 15일 이후에 출영했던 사람 검색
select name, season, agency,broadcast_date, agency
-> from celeb, snl_show
-> where name=host and ((episode in (7,9,10)) or (agency like 'YG______' and broadcast_date >=20200915));
+-----------+--------+----------------------+----------------+----------------------+
| name | season | agency | broadcast_date | agency |
+-----------+--------+----------------------+----------------+----------------------+
| 강동원 | 8 | YG엔터테이먼트 | 2020-09-05 | YG엔터테이먼트 |
| 차승원 | 8 | YG엔터테이먼트 | 2020-09-19 | YG엔터테이먼트 |
| 이수현 | 8 | YG엔터테이먼트 | 2020-09-26 | YG엔터테이먼트 |
+-----------+--------+----------------------+----------------+----------------------+
여러 문자열을 합치거나 연결
<select concat ('concat', ' ' , 'test');
+---------------------------------+
| concat ('concat', ' ' , 'test') |
+---------------------------------+
| concat test |
+---------------------------------+
select concat ('이름 : ',name) from celeb;
+---------------------------+
| concat ('이름 : ',name) |
+---------------------------+
| 이름 : 아이유 |
| 이름 : 이미주 |
| 이름 : 송강 |
| 이름 : 강동원 |
| 이름 : 유재석 |
| 이름 : 차승원 |
| 이름 : 이수현 |
+---------------------------+
칼럼이나 테이블 이름에 별칭을 생성할 수 있다 .
select name as '이름' , agency as '소속사' from celeb;
+-----------+--------------------------+
| 이름 | 소속사 |
+-----------+--------------------------+
| 아이유 | EDAM엔터테이먼트 |
| 이미주 | 울림엔터테이먼트 |
| 송강 | 나무엑터스 |
| 강동원 | YG엔터테이먼트 |
| 유재석 | 안테나 |
| 차승원 | YG엔터테이먼트 |
| 이수현 | YG엔터테이먼트 |
+-----------+--------------------------+
name과 job_title을 합쳐서 profile 이라는 별칭 생성
select concat (name, ' : ',job_title) as profile from celeb;
+-------------------------------------+
| profile |
+-------------------------------------+
| 아이유 : 가수, 텔런트 |
| 이미주 : 가수 |
| 송강 : 텔런트 |
| 강동원 : 영화배우, 텔런트 |
| 유재석 : MC, 개그맨 |
| 차승원 : 영화배우, 모델 |
| 이수현 : 가수 |
+-------------------------------------+
테이블 별칭을 사용한 검색
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 | 이수현 | 가수 |
+--------+---------+-----------+-------------------------+
📑시즌+에피소드 : 방송정보, 이름+ 직업 : 출연자 정보
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 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) | 이수현(가수) |
+------------------+------------------------------------+
select agency from celeb;
+--------------------------+
| agency |
+--------------------------+
| EDAM엔터테이먼트 |
| 울림엔터테이먼트 |
| 나무엑터스 |
| YG엔터테이먼트 |
| 안테나 |
| YG엔터테이먼트 |
| YG엔터테이먼트 |
+--------------------------+
select DISTINCT agency from celeb;
+--------------------------+
| agency |
+--------------------------+
| EDAM엔터테이먼트 |
| 울림엔터테이먼트 |
| 나무엑터스 |
| YG엔터테이먼트 |
| 안테나 |
+--------------------------+
<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 | 텔런트 | 나무엑터스 |
+----+-----------+------------+------+------+-------------------+--------------------------+
📑나이가 적은 연예인 4명 검색
elect * 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엔터테이먼트 |
+----+-----------+------------+------+------+-------------------+--------------------------+