CREATE TABLE 앨범
( 앨범번호 VARCHAR2(3) NOT NULL PRIMARY KEY, -- 사용자 아이디
타이틀 VARCHAR2(30) NOT NULL,
아티스트 VARCHAR2(30),
가격 NUMBER,
발매일 DATE,
배급 VARCHAR2(30),
별점 NUMBER(3, 1)
);
CREATE TABLE 곡
( 앨범번호 VARCHAR2(3) NOT NULL, -- 사용자 아이디
디스크 VARCHAR2(3) NOT NULL,
곡번호 VARCHAR2(3) NOT NULL,
곡명 VARCHAR2(50),
구분 VARCHAR2(10),
CONSTRAINT 곡PKs primary key(앨범번호, 디스크, 곡번호),
FOREIGN key (앨범번호) REFERENCES 앨범(앨범번호)
);
--alter table CONSTRAINT 곡PKs primary key(앨범번호, 디스크, 곡번호);
--table 곡 add CONSTRAINT 앨범번호 FOREIGN key (앨범번호) REFERENCES 곡(앨범번호);
set DEFINE off;
insert into 앨범 values('1', '조용필', '조용필', 11500, '1984-10-01', '벅스', 9.8);
insert into 앨범 values('2', '사랑하기 때문에', '유재하', 10400, '1987-08-20', 'KingPin', 9.7);
insert into 앨범 values('3', 'Break Up 2 Make Up', '지코(ZICO)', 700, '2016-01-25', 'CJ E&M MUSIC', 7.6);
insert into 앨범 values('4', '도깨비 OST Part 8', '정준일', 500, '2017-01-01', 'CJ E&M MUSIC', 9.5);
insert into 앨범 values('5', '도깨비 OST Part 9', '에일리', 600, '2017-01-07', 'CJ E&M MUSIC', 8);
select * from 곡;
insert into 곡 values('1', '1', '1', '돌아와요 부산항에', null);
insert into 곡 values('1', '1', '9', '해변의 여인', null); --1111
insert into 곡 values('1', '1', '11', '옛 일', null);
insert into 곡 values('1', '1', '12', '서러워 말아요', null);
insert into 곡 values('1', '1', '15', '생각이 나네', null);
insert into 곡 values('2', '1', '1', '우리들의 사랑', null);
insert into 곡 values('2', '1', '2', '그대 내 품에', null);
insert into 곡 values('2', '1', '9', '사랑하기 때문에', null);
insert into 곡 values('3', '1', '1', '너는 나 나는 너', null);
insert into 곡 values('3', '1', '2', '사랑이었다 (Feat. 루나 of f(x))', null);
insert into 곡 values('4', '1', '1', '첫 눈', null);
insert into 곡 values('4', '1', '2', '첫 눈', 'Inst.');
insert into 곡 values('5', '1', '1', '첫눈처럼 너에게 가겠다', '원곡');
insert into 곡 values('5', '1', '2', '첫눈처럼 너에게 가겠다', 'Inst.');
-- 1. '해변의 여인' 이라는 노래를 담고 있는 타이틀과 아티스트를 검색하라
select 타이틀, 아티스트 from 앨범, 곡
where 앨범.앨범번호 = 곡.앨범번호
and 곡명 = '해변의 여인';
-- 2. '그대 내 품에'라는 노래를 부른 아티스트를 찾아라
select 아티스트 from 앨범, 곡
where 앨범.앨범번호 = 곡.앨범번호
and 곡.곡명 = '그대 내 품에';
-- 3. 'Break Up 2 Make Up' 라는 이름을 가지는 앨범에 수록된 노래를 모두 검색하라
select 곡명 from 앨범, 곡
where 앨범.앨범번호 = 곡.앨범번호
and 앨범.타이틀 = 'Break Up 2 Make Up';
-- 4. 각 앨범에 수록된 타이틀별 수록곡의 개수를 검색하라
select 앨범.타이틀, count(곡.곡명) as "수록곡 수" from 앨범, 곡
where 앨범.앨범번호 = 곡.앨범번호
group by 앨범.타이틀;
-- 5. '사랑' 이라는 단어가 포함된 곡명을 가진 앨범의 타이틀별 수록곡의 개수를 검색하라
select 앨범.타이틀, count(곡.곡명) as "수록곡 수" from 앨범, 곡
where 앨범.앨범번호 = 곡.앨범번호
and 곡.곡명 like '%사랑%'
group by 앨범.타이틀;
-- 6. 타이틀과 곡명이 동일한 앨범의 노래 이름을 검색하라
select 곡.곡명 from 앨범, 곡
where 앨범.앨범번호 = 곡.앨범번호
and 곡.곡명 like 앨범.타이틀;
-- 7. 아티스트와 타이틀이 동일한 앨범의 타이틀을 검색하라
select DISTINCT 타이틀 from 앨범, 곡
where 앨범.앨범번호 = 곡.앨범번호
and 앨범.아티스트 like 앨범.타이틀;
-- 8. 동일한 곡명이 2개 이상 앨범에 존재하는 경우, 해당 곡명과 수록곡의 개수를 검색하라
select 곡.곡명, count(곡.곡명) as "수록곡 수" from 곡, 앨범
where 앨범.앨범번호 = 곡.앨범번호
group by 곡.곡명
having count(곡.곡명) >= 2
;