Bird
Raised Fist0
R Programmingprogramming~5 mins

Database connections (DBI, RSQLite) in R Programming - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the DBI package in R?
DBI provides a common interface to connect and interact with databases in R, allowing you to send queries and retrieve data in a consistent way.
Click to reveal answer
beginner
How do you create a connection to an SQLite database using RSQLite?
Use dbConnect(RSQLite::SQLite(), dbname = "path_to_db.sqlite") to open a connection to an SQLite database file.
Click to reveal answer
beginner
What function do you use to run a SQL query and get results as a data frame in R?
Use dbGetQuery(connection, "SQL query") to send a query and get the results directly as a data frame.
Click to reveal answer
beginner
Why is it important to close a database connection in R?
Closing a connection with dbDisconnect(connection) frees resources and avoids locking the database, which helps keep your system stable.
Click to reveal answer
beginner
What does the function dbListTables() do?
It lists all the tables available in the connected database, helping you see what data you can access.
Click to reveal answer
Which function opens a connection to an SQLite database in R?
AdbOpen(RSQLite::SQLite(), "mydb.sqlite")
BconnectSQLite("mydb.sqlite")
CdbConnect(RSQLite::SQLite(), dbname = "mydb.sqlite")
DopenDB("mydb.sqlite")
How do you retrieve query results as a data frame in R?
AdbSendQuery(connection, "SELECT * FROM table")
BdbGetQuery(connection, "SELECT * FROM table")
CdbFetch(connection, "SELECT * FROM table")
DdbReadTable(connection, "table")
What is the purpose of dbDisconnect()?
ATo close the database connection
BTo open a new database connection
CTo list tables in the database
DTo execute a SQL query
Which package provides the interface to connect to databases in R?
ADBI
Bdplyr
Cggplot2
Dtidyr
What does dbListTables(connection) return?
AThe connection status
BThe number of rows in a table
CThe structure of a table
DA list of table names in the database
Explain how to connect to an SQLite database in R and retrieve data from a table.
Think about opening a door (connection) and then reading a book (query data).
You got /4 concepts.
    Describe why it is important to close a database connection after use in R.
    Imagine leaving a room open or closed after you finish using it.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of dbConnect() in R when working with databases?
      easy
      A. To run a SQL query and get results
      B. To close an open database connection
      C. To open a connection to a database
      D. To create a new table in the database

      Solution

      1. Step 1: Understand the role of dbConnect()

        dbConnect() is used to start a connection between R and a database so they can communicate.
      2. Step 2: Differentiate from other functions

        dbDisconnect() closes connections, dbGetQuery() runs queries, and dbExecute() changes data. Only dbConnect() opens the connection.
      3. Final Answer:

        To open a connection to a database -> Option C
      4. Quick Check:

        dbConnect() = open connection [OK]
      Hint: Remember: Connect opens, Disconnect closes [OK]
      Common Mistakes:
      • Confusing dbConnect() with dbDisconnect()
      • Thinking dbConnect() runs queries
      • Assuming dbConnect() creates tables
      2. Which of the following is the correct syntax to connect to an SQLite database file named mydata.sqlite using DBI in R?
      easy
      A. dbConnect(SQLite::RSQLite(), file = "mydata.sqlite")
      B. dbConnect(SQLite, "mydata.sqlite")
      C. dbConnect(RSQLite, dbname = "mydata.sqlite")
      D. dbConnect(RSQLite::SQLite(), dbname = "mydata.sqlite")

      Solution

      1. Step 1: Identify correct function usage

        The correct way is to call dbConnect() with the driver RSQLite::SQLite() and specify the database file with dbname.
      2. Step 2: Check each option

        dbConnect(RSQLite::SQLite(), dbname = "mydata.sqlite") uses the correct driver and argument name. Options B, C, and D misuse the driver or argument names.
      3. Final Answer:

        dbConnect(RSQLite::SQLite(), dbname = "mydata.sqlite") -> Option D
      4. Quick Check:

        Correct driver and dbname argument = dbConnect(RSQLite::SQLite(), dbname = "mydata.sqlite") [OK]
      Hint: Use RSQLite::SQLite() and dbname for file [OK]
      Common Mistakes:
      • Using wrong driver syntax
      • Using 'file' instead of 'dbname'
      • Omitting the namespace RSQLite::
      3. What will be the output of the following R code?
      library(DBI)
      con <- dbConnect(RSQLite::SQLite(), ":memory:")
      dbExecute(con, "CREATE TABLE test (id INTEGER, name TEXT)")
      dbExecute(con, "INSERT INTO test VALUES (1, 'Alice'), (2, 'Bob')")
      res <- dbGetQuery(con, "SELECT name FROM test WHERE id = 2")
      print(res)
      dbDisconnect(con)
      medium
      A. name 1 Bob
      B. id name 1 2 Bob
      C. Error: no such table: test
      D. NULL

      Solution

      1. Step 1: Understand the code flow

        The code creates an in-memory SQLite database, makes a table 'test', inserts two rows, then queries the name where id=2.
      2. Step 2: Predict the query result

        The query selects the 'name' column for id=2, which is 'Bob'. The printed result is a data frame with one row and one column 'name' containing 'Bob'.
      3. Final Answer:

        name 1 Bob -> Option A
      4. Quick Check:

        Query returns name 'Bob' for id=2 [OK]
      Hint: SELECT returns matching rows as data frame [OK]
      Common Mistakes:
      • Expecting full row instead of selected column
      • Confusing dbExecute with dbGetQuery output
      • Forgetting to disconnect connection
      4. Identify the error in the following R code snippet that tries to connect to an SQLite database and run a query:
      library(DBI)
      con <- dbConnect(RSQLite::SQLite(), "mydb.sqlite")
      result <- dbGetQuery(con, "SELECT * FROM users")
      dbDisconnect(con)
      medium
      A. dbDisconnect() should be called before dbGetQuery()
      B. The database file name should be passed as dbname argument, not directly
      C. dbGetQuery() cannot be used with SQLite
      D. The library DBI is not needed for SQLite connections

      Solution

      1. Step 1: Check dbConnect() usage

        The SQLite file name must be passed as dbname = "mydb.sqlite", not as a positional argument.
      2. Step 2: Verify other function calls

        Calling dbGetQuery() before dbDisconnect() is correct. dbGetQuery() works with SQLite. The DBI library is required.
      3. Final Answer:

        The database file name should be passed as dbname argument, not directly -> Option B
      4. Quick Check:

        Use dbname= for file in dbConnect() [OK]
      Hint: Always name dbname argument in dbConnect() [OK]
      Common Mistakes:
      • Passing file name without dbname=
      • Disconnecting before query
      • Thinking DBI is unnecessary
      5. You want to create a new SQLite database in R, add a table named employees with columns id (integer) and name (text), insert three employees, and then retrieve all names. Which sequence of commands correctly achieves this?
      hard
      A. con <- dbConnect(RSQLite::SQLite(), dbname = "company.sqlite") dbExecute(con, "CREATE TABLE employees (id INTEGER, name TEXT)") dbExecute(con, "INSERT INTO employees VALUES (1, 'Anna'), (2, 'Ben'), (3, 'Cara')") names <- dbGetQuery(con, "SELECT name FROM employees") dbDisconnect(con) print(names)
      B. con <- dbConnect(RSQLite::SQLite(), "company.sqlite") dbExecute(con, "CREATE employees (id INTEGER, name TEXT)") dbExecute(con, "INSERT INTO employees VALUES (1, 'Anna'), (2, 'Ben'), (3, 'Cara')") names <- dbGetQuery(con, "SELECT name FROM employees") dbDisconnect(con) print(names)
      C. con <- dbConnect(RSQLite::SQLite(), dbname = "company.sqlite") dbExecute(con, "CREATE TABLE employees (id TEXT, name INTEGER)") dbExecute(con, "INSERT INTO employees VALUES (1, 'Anna'), (2, 'Ben'), (3, 'Cara')") names <- dbGetQuery(con, "SELECT id FROM employees") dbDisconnect(con) print(names)
      D. con <- dbConnect(RSQLite::SQLite(), dbname = "company.sqlite") dbExecute(con, "CREATE TABLE employees (id INTEGER, name TEXT)") dbExecute(con, "INSERT INTO employees VALUES (1, 'Anna')") dbExecute(con, "INSERT INTO employees VALUES (2, 'Ben')") dbExecute(con, "INSERT INTO employees VALUES (3, 'Cara')") names <- dbGetQuery(con, "SELECT id FROM employees") dbDisconnect(con) print(names)

      Solution

      1. Step 1: Identify correct sequence

        Use dbConnect(RSQLite::SQLite(), dbname = "company.sqlite"), CREATE TABLE employees (id INTEGER, name TEXT), multi-row INSERT INTO employees VALUES (1, 'Anna'), (2, 'Ben'), (3, 'Cara'), SELECT name FROM employees.
      2. Step 2: Eliminate distractors

        B: No dbname=, missing TABLE. C: Wrong types (name INTEGER fails insert), selects id. D: Selects id instead of name.
      3. Final Answer:

        dbConnect(RSQLite::SQLite(), dbname = "company.sqlite"), correct CREATE TABLE, multi-row INSERT, SELECT name -> Option A
      4. Quick Check:

        dbname=, id INTEGER name TEXT, INSERT 3 rows, SELECT name [OK]
      Hint: Insert multiple rows in one dbExecute for efficiency [OK]
      Common Mistakes:
      • Passing file name without dbname=
      • Wrong SQL syntax for CREATE TABLE
      • Mixing column types (id TEXT instead of INTEGER)
      • Selecting id instead of name
      • Forgetting to disconnect
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard