diff --git a/Day1_Answers.md b/Day1_Answers.md new file mode 100644 index 0000000..b732da4 --- /dev/null +++ b/Day1_Answers.md @@ -0,0 +1,56 @@ +CREATE TABLE album ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + title VARCHAR(128) NOT NULL, + release_year INTEGER +); + +CREATE TABLE artist ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name VARCHAR(128) NOT NULL +); + +CREATE TABLE track ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + title VARCHAR(128) NOT NULL, + album_id INTEGER NOT NULL, + FOREIGN KEY(album_id) REFERENCES album(id) +); + +CREATE TABLE artist_albums ( + artist_id INTEGER, + album_id INTEGER, + FOREIGN KEY(artist_id) REFERENCES artist(id), + FOREIGN KEY(album_id) REFERENCES album(id) +); + +SELECT * FROM album; + +SELECT * FROM album WHERE release_year >= 1975 AND release_year < 1990; + +SELECT * FROM album WHERE title LIKE "Super D%"; + +SELECT * FROM album WHERE release_year IS NULL; + +SELECT track.title FROM track, album + WHERE track.album_id = album.id AND album.title = "Super Funky Album"; + +SELECT track.title AS "Track Title" FROM track, album + WHERE track.album_id = album.id AND album.title = "Super Funky Album"; + +SELECT album.title FROM album, artist_album, artist + WHERE artist_album.album_id = album.id AND + artist_album.artist_id = artist.id AND + artist.name = "Han Solo"; + +SELECT AVG(release_year) FROM album; + +SELECT AVG(release_year) FROM album, artist_album, artist + WHERE artist_album.album_id = album.id AND + artist_album.artist_id = artist.id AND + artist.name = "Leia and the Ewoks"; + +SELECT COUNT(*) FROM artist; + +SELECT COUNT(*) FROM track, album + WHERE track.album_id = album.id AND + album.title = "Super Dubstep Album"; diff --git a/README.md b/README.md index a6d7c7c..5c86aae 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@ # SQL + See [the Lambda page on Relational Databases](https://github.com/LambdaSchool/Relational-Databases) for more information. (Note that page is for PostgreSQL, but the SQL information is valid here.) ## SQLite - +sql SQLite is a popular, simple SQL database. You can launch into a memory-only DB by running: diff --git a/music.db b/music.db new file mode 100644 index 0000000..41c90ca Binary files /dev/null and b/music.db differ diff --git a/notes.sql b/notes.sql new file mode 100644 index 0000000..3745783 --- /dev/null +++ b/notes.sql @@ -0,0 +1,46 @@ +PRAGMA foreign_keys = ON; + +DROP TABLE IF EXISTS note; +DROP TABLE IF EXISTS author; + +CREATE TABLE note ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + author_id INTEGER, + title VARCHAR(128), + content TEXT, + created_on DATETIME, + FOREIGN KEY(author_id) REFERENCES author(id) ON DELETE CASCADE +); + +CREATE TABLE author ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name VARCHAR(128) +); + +INSERT INTO author (name) VALUES ("Author Name 1"); +INSERT INTO author (name) VALUES ("Author Name 2"); +INSERT INTO author (name) VALUES ("Author Name 3"); +INSERT INTO author (name) VALUES ("Author Name 4"); +INSERT INTO author (name) VALUES ("Author Name 5"); + +INSERT INTO note (author_id, title, content, created_on) VALUES (1, "Author 1 Note 1", "A1N1 Content", CURRENT_TIMESTAMP); +INSERT INTO note (author_id, title, content, created_on) VALUES (1, "Author 1 Note 2", "A1N2 Content", CURRENT_TIMESTAMP); +INSERT INTO note (author_id, title, content, created_on) VALUES (3, "Author 3 Note 1", "A3N1 Content", CURRENT_TIMESTAMP); +INSERT INTO note (author_id, title, content, created_on) VALUES (4, "Author 4 Note 1", "A4N1 Content", CURRENT_TIMESTAMP); +INSERT INTO note (author_id, title, content, created_on) VALUES (5, "Author 5 Note 1", "A5N1 Content", CURRENT_TIMESTAMP); +INSERT INTO note (author_id, title, content, created_on) VALUES (5, "Author 5 Note 2", "A5N2 Content", CURRENT_TIMESTAMP); +INSERT INTO note (author_id, title, content, created_on) VALUES (5, "Author 5 Note 3", "A5N3 Content", CURRENT_TIMESTAMP); + +SELECT title, content FROM note, author + WHERE note.author_id = author.id AND + author.name = "Author Name 5"; + +SELECT name FROM note, author + WHERE note.author_id = author.id AND + note.id = 6; + +SELECT name, COUNT(*) FROM note, author + WHERE note.author_id = author.id + GROUP BY author_id; + +DELETE FROM author WHERE id = 3; \ No newline at end of file diff --git a/setup.sql b/setup.sql index 94bf2cf..1d2b6b0 100644 --- a/setup.sql +++ b/setup.sql @@ -1,3 +1,28 @@ +CREATE TABLE album ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + title VARCHAR(128) NOT NULL, + release_year INTEGER +); + +CREATE TABLE artist ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name VARCHAR(128) NOT NULL +); + +CREATE TABLE track ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + title VARCHAR(128) NOT NULL, + album_id INTEGER NOT NULL, + FOREIGN KEY(album_id) REFERENCES album(id) +); + +CREATE TABLE artist_album ( + artist_id INTEGER, + album_id INTEGER, + FOREIGN KEY(artist_id) REFERENCES artist(id), + FOREIGN KEY(album_id) REFERENCES album(id) +); + INSERT INTO album (title, release_year) VALUES ("Super Awesome Album", 1990); INSERT INTO album (title) VALUES ("Super Funky Album"); INSERT INTO album (title, release_year) VALUES ("Super Disco Album", 1978);