Sei sulla pagina 1di 21

BIT3

DATA6212
KHANYISANI SIKHAKHANE 16006935
Contents
QUESTION 1.............................................................................................................................................2
QUESTION 2.............................................................................................................................................4
QUESTION 3.............................................................................................................................................7
QUESTION 4.............................................................................................................................................9
QUESTION 5...........................................................................................................................................11
QUESTION 6...........................................................................................................................................13
QUESTION 7...........................................................................................................................................15
QUESTION 8...........................................................................................................................................17
QUESTION 9...........................................................................................................................................19
QUESTION 1
CREATE SCHEMA [A_16006935];
CREATE DATABASE MUSIC_COLLECTION
USE MUSIC_COLLECTION

CREATE TABLE A_16006935.ALBUMS (


ALBUM_ID VARCHAR(5) PRIMARY KEY NOT NULL,
ALBUM_TITLE VARCHAR(40) NOT NULL
);

CREATE TABLE A_16006935.TRACKS (


TRACK_ID VARCHAR(5) PRIMARY KEY NOT NULL,
TRACK_NAME VARCHAR(40) NOT NULL,
TRACK_DURATION DECIMAL(18,1) NOT NULL
);

DROP TABLE TRACKS

CREATE TABLE A_16006935.ALBUM_TRACKS (


TRACK_ID VARCHAR(5) NOT NULL,
ALBUM_ID VARCHAR(5) NOT NULL,
PRIMARY KEY(TRACK_ID,ALBUM_ID),
FOREIGN KEY (TRACK_ID) REFERENCES TRACKS(TRACK_ID),
FOREIGN KEY (ALBUM_ID) REFERENCES ALBUMS(ALBUM_ID)
);

CREATE TABLE A_16006935.ARTISTS (


ARTIST_ID VARCHAR(5) PRIMARY KEY NOT NULL,
ARTIST_NAME VARCHAR(40) NOT NULL
);

CREATE TABLE A_16006935.TRACK_ARTISTS (


TRACK_ID VARCHAR(5) NOT NULL,
ARTIST_ID VARCHAR(5) NOT NULL,
PRIMARY KEY (TRACK_ID,ARTIST_ID),
FOREIGN KEY (TRACK_ID) REFERENCES TRACKS(TRACK_ID),
FOREIGN KEY (ARTIST_ID) REFERENCES ARTISTS(ARTIST_ID)
);
QUESTION 2
INSERT INTO A_16006935.ALBUMS
VALUES ('AL001','Now That''s What I Call Music');
INSERT INTO A_16006935.ALBUMS
VALUES ('AL002','Now Dance 11');

INSERT INTO A_16006935.TRACKS


VALUES ('TR001','Silence','3.5');
INSERT INTO A_16006935.TRACKS
VALUES ('TR002','Rain','4');
INSERT INTO A_16006935.TRACKS
VALUES ('TR003','Too Good At Goodbyes','4.5');
INSERT INTO A_16006935.TRACKS
VALUES ('TR004','Find You','3.5');
INSERT INTO A_16006935.TRACKS
VALUES ('TR005','If I Could Find','2.5');
INSERT INTO A_16006935.TRACKS
VALUES ('TR006','Let Me Go Now','3');
INSERT INTO A_16006935.TRACKS
VALUES ('TR007','Friends','3.5');
INSERT INTO A_16006935.TRACKS
VALUES ('TR008','What About Us','4');

INSERT INTO A_16006935.ALBUM_TRACKS


VALUES ('TR001','AL001');
INSERT INTO A_16006935.ALBUM_TRACKS
VALUES ('TR001','AL002');
INSERT INTO A_16006935.ALBUM_TRACKS
VALUES ('TR002','AL001');
INSERT INTO A_16006935.ALBUM_TRACKS
VALUES ('TR003','AL001');
INSERT INTO A_16006935.ALBUM_TRACKS
VALUES ('TR004','AL001');
INSERT INTO A_16006935.ALBUM_TRACKS
VALUES ('TR005','AL001');
INSERT INTO A_16006935.ALBUM_TRACKS
VALUES ('TR005','AL002');
INSERT INTO A_16006935.ALBUM_TRACKS
VALUES ('TR006','AL002');
INSERT INTO A_16006935.ALBUM_TRACKS
VALUES ('TR007','AL002');
INSERT INTO A_16006935.ALBUM_TRACKS
VALUES ('TR008','AL002');

INSERT INTO A_16006935.ARTISTS


VALUES ('AR001','Marshmallow');
INSERT INTO A_16006935.ARTISTS
VALUES ('AR002','Khalid');
INSERT INTO A_16006935.ARTISTS
VALUES ('AR003','The Script');
INSERT INTO A_16006935.ARTISTS
VALUES ('AR004','Sam Smith');
INSERT INTO A_16006935.ARTISTS
VALUES ('AR005','Nick Jonas');
INSERT INTO A_16006935.ARTISTS
VALUES ('AR006','Goldfish');
INSERT INTO A_16006935.ARTISTS
VALUES ('AR007','Method');
INSERT INTO A_16006935.ARTISTS
VALUES ('AR008','Justin Bieber');
INSERT INTO A_16006935.ARTISTS
VALUES ('AR009','Bloodpop');
INSERT INTO A_16006935.ARTISTS
VALUES ('AR010','Pink');
INSERT INTO A_16006935.ARTISTS
VALUES ('AR011','Elvis Presley');

INSERT INTO A_16006935.TRACK_ARTISTS


VALUES ('TR001','AR001');
INSERT INTO A_16006935.TRACK_ARTISTS
VALUES ('TR001','AR002');
INSERT INTO A_16006935.TRACK_ARTISTS
VALUES ('TR002','AR003');
INSERT INTO A_16006935.TRACK_ARTISTS
VALUES ('TR003','AR004');
INSERT INTO A_16006935.TRACK_ARTISTS
VALUES ('TR004','AR005');
INSERT INTO A_16006935.TRACK_ARTISTS
VALUES ('TR005','AR006');
INSERT INTO A_16006935.TRACK_ARTISTS
VALUES ('TR006','AR007');
INSERT INTO A_16006935.TRACK_ARTISTS
VALUES ('TR007','AR008');
INSERT INTO A_16006935.TRACK_ARTISTS
VALUES ('TR007','AR009');
INSERT INTO A_16006935.TRACK_ARTISTS
VALUES ('TR008','AR010');
QUESTION 3
UPDATE A_16006935.ARTISTS
SET ARTIST_NAME='Marshmallow'
WHERE ARTIST_ID='AR001';
QUESTION 4
SELECT T1.ARTIST_NAME, T2.TRACK_NAME
FROM A_16006935.ARTISTS T1
LEFT JOIN A_16006935.TRACK_ARTISTS T3 ON T3.ARTIST_ID = T1.ARTIST_ID
LEFT JOIN A_16006935.TRACKS T2 ON T3.TRACK_ID = T2.TRACK_ID
WHERE T1.ARTIST_ID = T3.ARTIST_ID
AND T2.TRACK_ID = T3.TRACK_ID
ORDER BY ARTIST_NAME ASC
QUESTION 5
SELECT A.ALBUM_TITLE, SUM(TRACK_DURATION) AS [ALBUM LENGTH IN MINUTES]
FROM A_16006935.ALBUMS A
INNER JOIN A_16006935.ALBUM_TRACKS AT ON AT.ALBUM_ID = A.ALBUM_ID
INNER JOIN A_16006935.TRACKS T ON T.TRACK_ID = AT.TRACK_ID
WHERE ALBUM_TITLE = 'Now That''s What I Call Music'
GROUP BY ALBUM_TITLE
ORDER BY [ALBUM LENGTH IN MINUTES]
QUESTION 6
SELECT A.ARTIST_ID, A.ARTIST_NAME
FROM A_16006935.ARTISTS A
LEFT JOIN A_16006935.TRACK_ARTISTS TA ON TA.ARTIST_ID = A.ARTIST_ID
LEFT JOIN A_16006935.TRACKS T ON T.TRACK_ID = TA.TRACK_ID
WHERE T.TRACK_ID IS NULL
QUESTION 7
DELETE FROM A_16006935.ARTISTS
WHERE ARTIST_ID='AR011'
QUESTION 8
SELECT T1.TRACK_NAME AS 'TRACK NAME', COUNT (*) AS 'NUMBER OF ALBUMS'
FROM A_16006935.TRACKS T1
INNER JOIN A_16006935.ALBUM_TRACKS AT ON T1.TRACK_ID = AT.TRACK_ID
WHERE T1.TRACK_NAME IN ('If I Could Find','Silence')
GROUP BY T1.TRACK_NAME, AT.TRACK_ID
HAVING COUNT(*) <=6
ORDER BY T1.TRACK_NAME ASC
QUESTION 9
SELECT DISTINCT T1.TRACK_NAME AS 'TRACK NAME', MAX(T1.TRACK_DURATION) AS 'TRACK DURATION'
FROM A_16006935.TRACKS T1
INNER JOIN A_16006935.TRACKS T2 ON T1.TRACK_DURATION = T2.TRACK_DURATION
WHERE T1.TRACK_NAME <> T2.TRACK_NAME
GROUP BY T1.TRACK_DURATION, T1.TRACK_NAME
ORDER BY MAX(T1.TRACK_DURATION) ASC

Potrebbero piacerti anche