데이터베이스 구축 실습(음악정보)

min seung moon·2021년 4월 26일
0

Oracle

목록 보기
21/23

1. 음악 정보 DB 테이블 생성

SQL> CREATE TABLE album (
  2  aNumber    NUMBER(6)       NOT NULL        PRIMARY KEY,
  3  title      VARCHAR2(30)    NOT NULL,
  4   artist     VARCHAR2(30),
  5  price      number(6),
  6   aData      date,
  7  dist       varchar2(30),
  8   score      float(6)
  9  );
SQL> create table song (
  2  aNumber    NUMBER(6)       NOT NULL,
  3  disk       number(6)       not null,
  4   sNumber    number(6),
  5  songname   varchar2(50),
  6   div        varchar2(10),
  7   foreign key(aNumber) references album(aNumber),
  8  constraint songPK primary key(aNumber, disk, sNumber)
  9  );

2. 음악 정보 DB 데이터 입력


SQL> insert into album values (numberSQE.nextVal, 'true', 'avicii', 10400, '1987-08-20', '아일랜드레코드', 10.0);

1 row created.

SQL> insert into album values (numberSQE.nextVal, 'faded', 'Alan walker', 700, '2015-12-03', 'mer musikk', 9.5);

1 row created.

SQL> insert into album values (numberSQE.nextVal, 'Pray for the wicked', 'Panic! At the disco', 500, '2018-06-22', 'DCD2', 9.4);

1 row created.

SQL> insert into album values (numberSQE.nextVal, 'Get your heart on', 'Simple plan', 600, '2011-06-21', 'atlantic', 9.0);

1 row created.
SQL> insert into song values(1, 1, 1, 'Wainting for love',NULL);

1 row created.

SQL> insert into song values(1, 1, 5, 'For a better day',NULL);

1 row created.

SQL> insert into song values(2, 1, 1, 'Wake me up',NULL);

1 row created.

SQL> insert into song values(2, 1, 3, 'Hey brother',NULL);

1 row created.

SQL> insert into song values(3, 1, 1, 'Faded',NULL);

1 row created.

SQL> insert into song values(3, 1, 4, 'The Spectre',NULL);

1 row created.

SQL> insert into song values(4, 1, 3, 'Hey look ma, i made it',NULL);

1 row created.

SQL> insert into song values(4, 1, 4, 'High hopes',NULL);

1 row created.

SQL> insert into song values(5, 1, 1, 'You suck at love',NULL);

1 row created.

3. 음악정보 DB 데이터 검색

01. 'waiting for love'라는 노래를 담고 있는 타이틀과 아티스트를 검색하라.

-- 1.
select a.title, a.artist from song s inner join album a on a.aNumber = s.aNumber where s.songname = 'Wainting for love';

02. 'faded'라는 노래를 부른 아티스트를 검색하라

-- 2.
select a.artist from song s inner join album a on a.aNumber = s.aNumber where s.songname = 'Faded';

03. 'pray for the wicked'이라는 이름을 가지고 있는 앨범에 수록된 노래를 모두 검색하라

-- 3.
select s.songname from album a inner join song s on a.aNumber = s.aNumber where a.title = 'Pray for the wicked';

04. 'atlantic'이라는 이름을 가지고 있는 배급사에서 발매한 노래를 모두 검색하라

--4.
select s.songname from album a inner join song s on a.aNumber = s.aNumber where dist = 'atlantic';

05. 각 앨범에 수록된 타이틀별 수록곡의 개수를 검색하라

--5.
select a.title, count(s.aNumber) from album a inner join song s on s.aNumber = a.aNumber group by a.title;

06. 'y'이라는 단어가 포함된 곡명을 가진 앨범의 타이틀별 수록곡의 개수를 검색하라

--6.
select a.title, count(s.aNumber) from song s inner join album a on a.aNumber = s.aNumber where s.songname like '%y%'  group by a.title;

07. 타이틀과 곡명이 동일한 앨범의 노래 이름을 검색하라

--7.
select songname from album a inner join song s on a.aNumber = s.aNumber where upper(a.title) = upper(s.songname);SQL> insert into song values(5, 1, 3, 'Jet lag',NULL);

08. 금액이 만원 이상인 타이틀에 존재하는 곡명을 검색하라

-- 8.
select s.songname from album a inner join song s on a.aNumber = s.aNumber where a.price >= 10000;
profile
아직까지는 코린이!

0개의 댓글