From bcb850871ebf537ab1b614ff36d71bed622f3358 Mon Sep 17 00:00:00 2001 From: gzlupko Date: Sun, 17 Jan 2021 19:31:37 -0500 Subject: [PATCH 01/17] initial; added endpoint to AWS --- sql-project.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql-project.Rmd b/sql-project.Rmd index 99a7974..95ab5d7 100644 --- a/sql-project.Rmd +++ b/sql-project.Rmd @@ -16,7 +16,7 @@ library(RMySQL) db_user <- 'admin' db_password <- 'testsql!' db_name <- 'oudb' -db_host <- 'PASTE YOUR ENDPOINT HERE' +db_host <- 'database-1.c4tfqpjsbneq.us-east-2.rds.amazonaws.com' db_port <- 3306 mydb <- dbConnect(MySQL(), user = db_user, password = db_password, dbname = db_name, host = db_host, port = db_port) From 95afafac76fa65417b9c221a575b13c8d76b8e0a Mon Sep 17 00:00:00 2001 From: gzlupko Date: Sun, 17 Jan 2021 19:51:33 -0500 Subject: [PATCH 02/17] AWS connection established --- sql-project.Rmd | 1 + 1 file changed, 1 insertion(+) diff --git a/sql-project.Rmd b/sql-project.Rmd index 95ab5d7..410e165 100644 --- a/sql-project.Rmd +++ b/sql-project.Rmd @@ -11,6 +11,7 @@ Before you follow the directions below, please take a screenshot of your AWS con #install.packages("DBI", "RMySQL") library(DBI) +install.packages("RMySQL") library(RMySQL) db_user <- 'admin' From 01f88152df3104764b17e755f1a634821ddfadf2 Mon Sep 17 00:00:00 2001 From: Gian Zlupko <69553827+gzlupko@users.noreply.github.com> Date: Sun, 17 Jan 2021 19:58:25 -0500 Subject: [PATCH 03/17] Add files via upload --- AWS DB Instance .png | Bin 0 -> 51083 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 AWS DB Instance .png diff --git a/AWS DB Instance .png b/AWS DB Instance .png new file mode 100644 index 0000000000000000000000000000000000000000..6f501d5558b407ea5e48b4cd2d0565da9c07de1c GIT binary patch literal 51083 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%0AZu!-^AG7GHAg08yYyKio6%PG{V-j4sHDB`V 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 Date: Sun, 17 Jan 2021 19:59:17 -0500 Subject: [PATCH 04/17] test Git --- sql-project.Rmd | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sql-project.Rmd b/sql-project.Rmd index 410e165..03ee513 100644 --- a/sql-project.Rmd +++ b/sql-project.Rmd @@ -6,6 +6,8 @@ output: html_document Before you follow the directions below, please take a screenshot of your AWS console showing the running database and upload it to your repo. +(test Git) + ## Connect to AWS MySQL Database ```{r} #install.packages("DBI", "RMySQL") From 47db4e7231fac624a0359e363139b08488b064b1 Mon Sep 17 00:00:00 2001 From: gzlupko Date: Sun, 17 Jan 2021 20:19:43 -0500 Subject: [PATCH 05/17] created new student data sets --- sql-project.Rmd | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/sql-project.Rmd b/sql-project.Rmd index 03ee513..a604744 100644 --- a/sql-project.Rmd +++ b/sql-project.Rmd @@ -6,7 +6,6 @@ output: html_document Before you follow the directions below, please take a screenshot of your AWS console showing the running database and upload it to your repo. -(test Git) ## Connect to AWS MySQL Database ```{r} @@ -55,9 +54,27 @@ dbListTables(mydb) #Read a particular table dbReadTable(mydb, 'studentInfo') + #EXERCISE 1 #Make two toy data sets with at least three variables and at least 30 rows each in them. Have a mix of numeric and character variables. Transfer these dataframes to your SQL database using the DBI commands. Name the tables whatever you like. +# Table 1 - student test scores +studentNumber <- paste(letters, 1:40, sep = "") +test_scores <- rnorm(40, mean = 85, sd = 5) +testScores <- data.frame(cbind(studentNumber, test_scores)) + +# Table 2 - student Soc.Econ.Status + +student_ses <- sample(c("below average", "average", "above average"), 40, replace = TRUE) +studentSES <- data.frame(cbind(studentNumber, student_ses)) +View(studentSES) + +# Write new tables to DB +dbWriteTable(mydb, 'testScores', testScores) +dbWriteTable(mydb, 'studentSES', studentSES) + + + ``` ## Getting into SQL - READING From fff9963cf12d2235315c21446c453731510ebe99 Mon Sep 17 00:00:00 2001 From: gzlupko Date: Tue, 19 Jan 2021 21:34:35 -0500 Subject: [PATCH 06/17] exercise 2 complete --- sql-project.Rmd | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sql-project.Rmd b/sql-project.Rmd index a604744..62c2be5 100644 --- a/sql-project.Rmd +++ b/sql-project.Rmd @@ -12,7 +12,6 @@ Before you follow the directions below, please take a screenshot of your AWS con #install.packages("DBI", "RMySQL") library(DBI) -install.packages("RMySQL") library(RMySQL) db_user <- 'admin' @@ -103,8 +102,15 @@ dbGetQuery(mydb, "SELECT COUNT(*) FROM studentAssessment WHERE score > 50 AND id #EXERCISE 2 #Read one of your toy data tables, make sure the output is ordered in descending order, you rename one of the variables and the output is limited to the first 20 rows. +dbGetQuery(mydb, "SELECT test_scores AS 'Scores' FROM testScores ORDER BY test_scores DESC LIMIT 20;") + + #Read the other table according to a condition of one of the variables. + +dbGetQuery(mydb, "SELECT COUNT(*) FROM studentSES WHERE student_ses = 'average';") + + ``` ## Getting into SQL - UPDATING From 1ea053356d17e800158737da48d125a21f880a9d Mon Sep 17 00:00:00 2001 From: gzlupko Date: Tue, 19 Jan 2021 21:57:04 -0500 Subject: [PATCH 07/17] exercise 3 complete --- sql-project.Rmd | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/sql-project.Rmd b/sql-project.Rmd index 62c2be5..289f0b5 100644 --- a/sql-project.Rmd +++ b/sql-project.Rmd @@ -150,6 +150,25 @@ dbGetQuery(mydb, "SELECT * FROM studentAssessment ORDER BY id_student LIMIT 10;" #Insert a new row in one of your toy data tables leaving one variable empty. Change one value in your other table. Display your new tables. Delete the row you edited and the row you inserted. +dbGetQuery(mydb, "SELECT * FROM testScores LIMIT 10;") + +dbGetQuery(mydb, "INSERT INTO testScores(studentNumber, test_scores) VALUES ('aaa1', '0');") +dbGetQuery(mydb, "UPDATE testScores SET test_scores = 'NULL' WHERE studentNumber = 'aaa1';") +dbGetQuery(mydb, "SELECT * FROM testScores WHERE studentNumber = 'aaa1';") + +dbGetQuery(mydb, "SELECT * FROM studentSES LIMIT 10;") + +dbGetQuery(mydb, "UPDATE studentSES SET student_ses = 'above average' WHERE studentNumber = 'c3';") +dbGetQuery(mydb, "SELECT * FROM studentSES WHERE studentNumber = 'c3';") + + +# delete the row I inserted in testScores + +dbGetQuery(mydb, "DELETE FROM testScores WHERE studentNumber = 'aaa1';") + +# delete the row I edited in studentSES +dbGetQuery(mydb, "DELETE FROM studentSES WHERE studentNumber = 'c3';") + ``` ## Add/Deleting Table From ef4668a7a4a4210c577cd27681c493a62e3ffe96 Mon Sep 17 00:00:00 2001 From: gzlupko Date: Tue, 19 Jan 2021 22:17:34 -0500 Subject: [PATCH 08/17] exercise 4 complete --- sql-project.Rmd | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/sql-project.Rmd b/sql-project.Rmd index 289f0b5..f4f5004 100644 --- a/sql-project.Rmd +++ b/sql-project.Rmd @@ -179,6 +179,7 @@ dbGetQuery(mydb,"CREATE TABLE test ( student TEXT );") +# shows all tables in SQL database dbListTables(mydb) #Inserting data into the table @@ -203,9 +204,25 @@ dbGetQuery(mydb, "DROP TABLE IF EXISTS test;") #No error since it is only if it #EXERCISE 4 #Create a table that is exactly the same as your first toy data table but this time use SQL commands. Display your new table. Then delete the original table. +head(testScores) + + +dbGetQuery(mydb, "CREATE TABLE scores (studentNumber TEXT, test_scores INTEGER );" ) + +dbGetQuery(mydb,"INSERT INTO scores (studentNumber, test_scores) SELECT studentNumber, test_scores FROM testScores;") + +dbListTables(mydb) +dbGetQuery(mydb,"SELECT * FROM scores; " ) + +# delete original table + +dbGetQuery(mydb,"DROP TABLE testScores;") +dbListTables(mydb) + ``` + # NULL Value ```{r} #NULL is a state (similar to R), represents the lack of a value. But is not compatible with R backend so this code doesn't work as part of dbGetQuery() From 047636db52081bf637f5766c2898059781b88cd0 Mon Sep 17 00:00:00 2001 From: gzlupko Date: Tue, 19 Jan 2021 22:34:29 -0500 Subject: [PATCH 09/17] exercise 5 complete --- sql-project.Rmd | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/sql-project.Rmd b/sql-project.Rmd index f4f5004..ab53508 100644 --- a/sql-project.Rmd +++ b/sql-project.Rmd @@ -270,10 +270,36 @@ dbGetQuery(mydb,"INSERT INTO test2 (score, student) VALUES ('1', 'A');") #NULL is exempt dbGetQuery(mydb,"INSERT INTO test2 (score, student) VALUES (NULL, 'A');") dbGetQuery(mydb,"INSERT INTO test2 (score, student) VALUES (NULL, 'A');") +dbGetQuery(mydb, "SELECT * FROM test2;") +dbListTables(mydb) #EXERCISE 5 #Recreate one of your toy data tables with the constraint that for one of the integer variablesthe default value will be zero. Test your table by inserting some empty values. Display your new tables. Then delete your table. +head(testScores) + + +dbGetQuery(mydb,"CREATE TABLE scores2 ( + studentNumber TEXT, + test_scores INTEGER DEFAULT 0 + );") + +dbListTables(mydb) + +dbGetQuery(mydb,"INSERT INTO scores2 (studentNumber, test_scores) VALUES (NULL, 80 );") +dbGetQuery(mydb,"INSERT INTO scores2 (studentNumber, test_scores) VALUES ('Reginald', NULL );") + +# display new table +dbGetQuery(mydb, "SELECT * FROM scores2 ; ") + +# delete new table + +dbGetQuery(mydb, "DROP TABLE IF EXISTS scores2; ") +dbListTables(mydb) + + + + ``` From 7f98eed6c7d4237cc3349c4b658b56587fd8fbf9 Mon Sep 17 00:00:00 2001 From: gzlupko Date: Tue, 19 Jan 2021 22:35:37 -0500 Subject: [PATCH 10/17] deleted space --- sql-project.Rmd | 1 - 1 file changed, 1 deletion(-) diff --git a/sql-project.Rmd b/sql-project.Rmd index ab53508..e61b749 100644 --- a/sql-project.Rmd +++ b/sql-project.Rmd @@ -299,7 +299,6 @@ dbListTables(mydb) - ``` From 2375c0f0250f12c01c493ea4d280eac9fbe9d89e Mon Sep 17 00:00:00 2001 From: gzlupko Date: Mon, 25 Jan 2021 18:40:52 -0500 Subject: [PATCH 11/17] exercise 6 complete --- sql-project.Rmd | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/sql-project.Rmd b/sql-project.Rmd index e61b749..fb54b05 100644 --- a/sql-project.Rmd +++ b/sql-project.Rmd @@ -314,6 +314,21 @@ dbGetQuery(mydb, "ALTER TABLE studentAssessment DROP COLUMN email;") #EXERCISE 6 #Add a column to one of your toy data tables with a default value of 3. Display your new table. Delete this column. + + + +# add coolumn with default value +dbGetQuery(mydb, "ALTER TABLE studentSES ADD region INTEGER DEFAULT 3") + +# view new column +dbGetQuery(mydb, "SELECT * FROM studentSES LIMIT 10;") + +# delete new column +dbGetQuery(mydb, "ALTER TABLE studentSES DROP COLUMN region;") + +# view again to confirm drop +dbGetQuery(mydb, "SELECT * FROM studentSES LIMIT 10;") + ``` From d708767382ae1bd8f27ea49e8b1eeded4a9d39e5 Mon Sep 17 00:00:00 2001 From: gzlupko Date: Tue, 26 Jan 2021 16:17:59 -0500 Subject: [PATCH 12/17] exercise 7 complete --- sql-project.Rmd | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/sql-project.Rmd b/sql-project.Rmd index fb54b05..b1692cb 100644 --- a/sql-project.Rmd +++ b/sql-project.Rmd @@ -340,6 +340,7 @@ dbGetQuery(mydb,"CREATE TABLE test3 ( student TEXT );") + dbGetQuery(mydb,"INSERT INTO test3 (score, student) VALUES (1, 'A');") dbGetQuery(mydb,"INSERT INTO test3 (score, student) VALUES (5, 'B');") @@ -350,6 +351,32 @@ dbGetQuery(mydb, "DROP TABLE IF EXISTS test3;") #EXERCISE 7 #Create a new table with four variables and a primary key that is a sequential id value. +dbGetQuery(mydb,"CREATE TABLE studentMajors ( + id INTEGER AUTO_INCREMENT PRIMARY KEY, + major TEXT, + code INTEGER, + school TEXT, + campus TEXT + );") + + +dbGetQuery(mydb, "INSERT INTO studentMajors (major, code, school, campus) VALUES ('History', 1, 'JFK School of Government', 'North');") +dbGetQuery(mydb, "INSERT INTO studentMajors (major, code, school, campus) VALUES ('Engineering', 2, 'School of Engineering', 'North');") +dbGetQuery(mydb, "INSERT INTO studentMajors (major, code, school, campus) VALUES ('Biology', 3, 'Jane Austen Academy', 'Central');") +dbGetQuery(mydb, "INSERT INTO studentMajors (major, code, school, campus) VALUES ('Music Theory', 4, 'Central University Conservatory', 'Central');") + + +# view new table +dbGetQuery(mydb, "SELECT * FROM studentMajors;") + + +# delete new table +dbGetQuery(mydb, "DROP TABLE IF EXISTS studentMajors;") + + + + + ``` ## Filtering (WHERE) From a4d043b54403e3c18cb381cfd1bec263d6cf1478 Mon Sep 17 00:00:00 2001 From: gzlupko Date: Tue, 26 Jan 2021 16:38:55 -0500 Subject: [PATCH 13/17] added 3rd variable to toy tables --- sql-project.Rmd | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/sql-project.Rmd b/sql-project.Rmd index b1692cb..b3005bf 100644 --- a/sql-project.Rmd +++ b/sql-project.Rmd @@ -60,13 +60,17 @@ dbReadTable(mydb, 'studentInfo') # Table 1 - student test scores studentNumber <- paste(letters, 1:40, sep = "") test_scores <- rnorm(40, mean = 85, sd = 5) -testScores <- data.frame(cbind(studentNumber, test_scores)) - +course_title <- c("Calculus", "Physics", "Social Studies", "History", "Biology") +courses <- sample(course_title, size = 40, replace = TRUE) +testScores <- data.frame(cbind(studentNumber, test_scores, courses)) +head(testScores) # Table 2 - student Soc.Econ.Status student_ses <- sample(c("below average", "average", "above average"), 40, replace = TRUE) -studentSES <- data.frame(cbind(studentNumber, student_ses)) -View(studentSES) +region_names <- c("South Coast", "New Seattle", "Kantucky", "Texico") +regions <- sample(region_names, size = 40, replace = TRUE) +studentSES <- data.frame(cbind(studentNumber, student_ses, regions)) + # Write new tables to DB dbWriteTable(mydb, 'testScores', testScores) @@ -362,7 +366,7 @@ dbGetQuery(mydb,"CREATE TABLE studentMajors ( dbGetQuery(mydb, "INSERT INTO studentMajors (major, code, school, campus) VALUES ('History', 1, 'JFK School of Government', 'North');") dbGetQuery(mydb, "INSERT INTO studentMajors (major, code, school, campus) VALUES ('Engineering', 2, 'School of Engineering', 'North');") -dbGetQuery(mydb, "INSERT INTO studentMajors (major, code, school, campus) VALUES ('Biology', 3, 'Jane Austen Academy', 'Central');") +dbGetQuery(mydb, "INSERT INTO studentMajors (major, code, school, campus) VALUES ('Biology', 3, 'Jane Goodall Academy', 'Central');") dbGetQuery(mydb, "INSERT INTO studentMajors (major, code, school, campus) VALUES ('Music Theory', 4, 'Central University Conservatory', 'Central');") @@ -386,6 +390,7 @@ dbGetQuery(mydb, "SELECT id_student, date_submitted FROM studentAssessment WHERE #OR Statement dbGetQuery(mydb, "SELECT id_student, date_submitted FROM studentAssessment WHERE date_submitted > 550 OR date_submitted < 2 ORDER BY date_submitted DESC;") + #AND Statement dbGetQuery(mydb, "SELECT id_student, date_submitted FROM studentAssessment WHERE date_submitted > 550 AND id_student = 325750 ORDER BY date_submitted DESC;") @@ -407,6 +412,10 @@ dbGetQuery(mydb, "SELECT id_student, gender, region FROM studentInfo WHERE regio #EXERCISE 8 #Query one of your original toy data tables, for two different conditions. +db + + + ``` ## Removing Duplicates From a6395d2b768593bc2365fc851cd23802eebf3ffa Mon Sep 17 00:00:00 2001 From: gzlupko Date: Tue, 26 Jan 2021 16:45:18 -0500 Subject: [PATCH 14/17] exercise 8 complete --- sql-project.Rmd | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sql-project.Rmd b/sql-project.Rmd index b3005bf..77aa5fd 100644 --- a/sql-project.Rmd +++ b/sql-project.Rmd @@ -111,7 +111,6 @@ dbGetQuery(mydb, "SELECT test_scores AS 'Scores' FROM testScores ORDER BY test_s #Read the other table according to a condition of one of the variables. - dbGetQuery(mydb, "SELECT COUNT(*) FROM studentSES WHERE student_ses = 'average';") @@ -412,7 +411,10 @@ dbGetQuery(mydb, "SELECT id_student, gender, region FROM studentInfo WHERE regio #EXERCISE 8 #Query one of your original toy data tables, for two different conditions. -db +dbGetQuery(mydb, "SELECT * FROM testScores LIMIT 10;") + +dbGetQuery(mydb, "SELECT test_scores, studentNumber FROM testScores WHERE courses LIKE 'c%' AND + studentNumber LIKE 'a%';") From 672a933e5a7631b3a0c454b46c1224d801387db2 Mon Sep 17 00:00:00 2001 From: gzlupko Date: Tue, 26 Jan 2021 16:54:34 -0500 Subject: [PATCH 15/17] exercise 9 complete --- sql-project.Rmd | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sql-project.Rmd b/sql-project.Rmd index 77aa5fd..0f0cb90 100644 --- a/sql-project.Rmd +++ b/sql-project.Rmd @@ -416,6 +416,8 @@ dbGetQuery(mydb, "SELECT * FROM testScores LIMIT 10;") dbGetQuery(mydb, "SELECT test_scores, studentNumber FROM testScores WHERE courses LIKE 'c%' AND studentNumber LIKE 'a%';") +dbGetQuery(mydb, "SELECT studentNumber, test_scores, courses FROM testScores WHERE test_scores > 85 ORDER BY test_scores DESC;") + ``` @@ -429,6 +431,16 @@ dbGetQuery(mydb, "SELECT DISTINCT region, gender FROM studentInfo;") #EXERCISE 9 #Insert a duplicate row into one of your toy data tables. Then query the table without including duplicates. + +# insert duplicate +dbGetQuery(mydb, "INSERT INTO studentSES (studentNumber, student_ses, regions) VALUES ('a1', 'below average', 'Kantucky');") + +# query without duplicate + +dbGetQuery(mydb, "SELECT DISTINCT studentNumber, student_ses, regions FROM studentSES;") + + + ``` ## Conditional Expressions (non-standard) From 015dcc95a1100d8d42846ce0cc30b7e8d622f669 Mon Sep 17 00:00:00 2001 From: gzlupko Date: Tue, 26 Jan 2021 17:41:24 -0500 Subject: [PATCH 16/17] exercise 10 complete --- sql-project.Rmd | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/sql-project.Rmd b/sql-project.Rmd index 0f0cb90..bbb4f89 100644 --- a/sql-project.Rmd +++ b/sql-project.Rmd @@ -320,7 +320,7 @@ dbGetQuery(mydb, "ALTER TABLE studentAssessment DROP COLUMN email;") -# add coolumn with default value +# add column with default value dbGetQuery(mydb, "ALTER TABLE studentSES ADD region INTEGER DEFAULT 3") # view new column @@ -512,6 +512,37 @@ dbGetQuery(mydb, "SELECT * FROM left_table #EXERCISE 10 # Create a common id variable in your two toy data tables. Then join those tables so that your query returns all the values from one table and only those that match from the other. +dbListTables(mydb) + +# add new field and values to first toy table +dbGetQuery(mydb, "ALTER TABLE testScores ADD school_name TEXT;") +dbGetQuery(mydb, "UPDATE testScores SET school_name = 'Zakopane' WHERE courses LIKE 'C%';") +dbGetQuery(mydb, "UPDATE testScores SET school_name = 'Zakopane' WHERE courses LIKE 'B%';") + + +# add new field and columns to second toy table + +dbGetQuery(mydb, "ALTER TABLE studentSES ADD school_name TEXT;") +dbGetQuery(mydb, "UPDATE studentSES SET school_name = 'Zakopane' WHERE regions LIKE '_a%';") +dbGetQuery(mydb, "UPDATE studentSES SET school_name = 'Milec Liceum' WHERE regions LIKE 'N%';") + +# view new additions to tables + +dbGetQuery(mydb, "SELECT * FROM studentSES LIMIT 10;") +dbGetQuery(mydb, "SELECT * FROM testScores LIMIT 10;") + + +# select all rows from testScores and only those schools named 'Zakopane' from studentSES + + +dbGetQuery(mydb, "SELECT * + FROM testScores + LEFT JOIN studentSES + ON testScores.school_name = studentSES.school_name;") + + + + ``` ```{r} #Now disconnect from your database From 0875563fbca105ea3e11d399bf8b1479fdb7a43e Mon Sep 17 00:00:00 2001 From: gzlupko Date: Wed, 27 Jan 2021 08:58:20 -0500 Subject: [PATCH 17/17] title update --- sql-project.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql-project.Rmd b/sql-project.Rmd index bbb4f89..ad5431f 100644 --- a/sql-project.Rmd +++ b/sql-project.Rmd @@ -1,6 +1,6 @@ --- title: "sql-workshop" -author: "Charles Lang" +author: "Gian Zlupko" output: html_document ---