**제 풀이는 개인적으로 푼 것이라 가장 알맞는 정답이 아닐 수 있습니다.
틀린 부분이 있다면 댓글로 살포시 알려주세요~**
2.1 데이터베이스 생성
생성 과정은 생략하겠습니다. 이전 게시물을 참고해주세요.
2.2 테이블 생성
테이블 이름 | 열 이름 | 데이터 형식 | 제약조건 | 기본키 | 외래키 | FK테이블 | FK열 |
앨범 | 앨범번호 | INT | NOT NULL | PK | |||
타이틀 | VARCHAR(30) | NOT NULL | |||||
아티스트 | VARCHAR(30) | ||||||
가격 | INT | ||||||
발매일 | DATETIME | ||||||
배급 | VARCHAR(30) | ||||||
별점 | DECIMAL(4,1) |
CREATE TABLE 앨범
(앨범번호 INT NOT NULL PRIMARY KEY
,타이틀 VARCHAR(30) NOT NULL
,아티스트 VARCHAR(30) NOT NULL
,가격 INT
,발매일 DATETIME
,배급 VARCHAR(30)
,별점 DECIMAL(4,1));
타이틀 이름 | 열 이름 | 데이터 형식 | 제약조건 | 기본키 | 외래키 | FK테이블 | FK열 |
곡 | 앨범번호 | INT | NOT NULL | PK | FK | 앨범 | 앨범번호 |
디스크 | INT | NOT NULL | |||||
곡번호 | INT | NOT NULL | |||||
곡명 | VARCHAR(50) | ||||||
구분 | VARCHAR(10) |
CREATE TABLE 곡
(앨범번호 INT NOT NULL
,디스크 INT NOT NULL
,곡번호 INT NOT NULL
,곡명 VARCHAR(50)
,구분 VARCHAR(10)
,FOREIGN KEY(앨범번호) REFERENCES 앨범(앨범번호));
2.3 데이터 입력
예제와 똑같이 데이터를 입력합니다.
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);
INSERT INTO 곡(앨범번호,디스크,곡번호,곡명) VALUES(1,1,1,'돌아와요 부산항에');
INSERT INTO 곡(앨범번호,디스크,곡번호,곡명) VALUES(1,1,9,'해변의 여인');
INSERT INTO 곡(앨범번호,디스크,곡번호,곡명) VALUES(1,1,11,'옛 일');
INSERT INTO 곡(앨범번호,디스크,곡번호,곡명) VALUES(1,1,12,'서러워 말아요');
INSERT INTO 곡(앨범번호,디스크,곡번호,곡명) VALUES(1,1,15,'생각이 나네');
INSERT INTO 곡(앨범번호,디스크,곡번호,곡명) VALUES(2,1,1,'우리들의 사랑');
INSERT INTO 곡(앨범번호,디스크,곡번호,곡명) VALUES(2,1,2,'그대 내 품에');
INSERT INTO 곡(앨범번호,디스크,곡번호,곡명) VALUES(2,1,9,'사랑하기 때문에');
INSERT INTO 곡(앨범번호,디스크,곡번호,곡명) VALUES(3,1,1,'너는 나 나는 너');
INSERT INTO 곡(앨범번호,디스크,곡번호,곡명) VALUES(3,1,2,'사랑이었다 (Feat. 루나 of f(x))');
INSERT INTO 곡(앨범번호,디스크,곡번호,곡명) VALUES(4,1,1,'첫 눈');
INSERT INTO 곡(앨범번호,디스크,곡번호,곡명,구분) VALUES(4,1,2,'첫 눈','Inst.');
INSERT INTO 곡(앨범번호,디스크,곡번호,곡명,구분) VALUES(5,1,1,'첫눈처럼 너에게 가겠다','원곡');
INSERT INTO 곡(앨범번호,디스크,곡번호,곡명,구분) VALUES(5,1,2,'첫눈처럼 너에게 가겠다','Inst.');
2.4 데이터 검색
① '해변의 여인'이라는 노래를 담고 있는 타이틀과 아티스트를 검색하라.
SELECT a.타이틀, a.아티스트
FROM 앨범 a, 곡 b
WHERE b.앨범번호 = a.앨범번호
AND b.곡명 = '해변의 여인';
② '그대내품에'라는 노래를 부른 아티스트를 검색하라.
SELECT a.아티스트
FROM 앨범 a, 곡 b
WHERE b.앨범번호 = a.앨범번호
AND b.곡명 = '그대 내 품에';
③ 'Break Up 2 Make Up'이라는 이름을 가지고 있는 앨범에 수록된 노래를 모두 검색하라.
SELECT b.곡명
FROM 앨범 a, 곡 b
WHERE b.앨범번호 = a.앨범번호
AND a.타이틀 = 'Break Up 2 Make Up';
④ 각 앨범에 수록된 타이틀별 수록곡의 개수를 검색하라.
SELECT a.타이틀, COUNT(b.앨범번호) AS '수록곡 수'
FROM 앨범 a, 곡 b
WHERE b.앨범번호 = a.앨범번호
GROUP BY a.타이틀;
⑤ '사랑'이라는 단어가 포함된 곡명을 가진 앨범의 타이틀별 수록곡의 개수를 검색하라.
SELECT a.타이틀, COUNT(b.앨범번호) AS '수록곡 수'
FROM 앨범 a, 곡 b
WHERE b.앨범번호 = a.앨범번호
AND b.곡명 LIKE '%사랑%'
GROUP BY a.타이틀;
⑥ 타이틀과 곡명이 동일한 앨범의 노래 이름을 검색하라.
SELECT b.곡명
FROM 앨범 a, 곡 b
WHERE b.앨범번호 = a.앨범번호
AND b.곡명 = a.타이틀;
⑦ 예를 들어 그룹 'Blur'가 'Blur'라는 이름의 앨범을 발매할 수 있다. 이와 같이 아티스트와 타이틀이 동일한 앨범의 타이틀을 검색하라.
SELECT 타이틀
FROM 앨범
WHERE 아티스트 = 타이틀;
⑧ 동일한 곡명이 2개 이상 앨범에 존재하는 경우, 해당 곡명과 수록 곡의 개수를 검색하라.
SELECT 곡명, COUNT(앨범번호) AS '수록곡 수'
FROM 곡
GROUP BY 곡명
HAVING COUNT(곡명)>1;
'데이터베이스' 카테고리의 다른 글
[MySQL] 날짜와 시간의 다양한 형식 (0) | 2022.05.15 |
---|---|
[기초가 든든한 데이터베이스] 실습문제풀이 03 (CHAPTER 09, 영화정보 데이터베이스 구축 및 활용) (0) | 2020.07.23 |
[기초가 든든한 데이터베이스] 실습문제풀이 01 (CHAPTER 09, 국가정보 데이터베이스 구축 및 활용) (0) | 2020.07.19 |