R, Databases & SQL

R DBI tutorial: connect R to SQLite, query with dbplyr and SQL — free 2-hour primer before R4DS.
Author

Aravind Hebbali

Published

September 26, 2026

Preface

Last verified: 2026-09-26 · R 4.5.2 · DBI · dbplyr 2.6.0 · RSQLite 2.4.6 · duckdb.

New here? Grab the one-page DBI cheatsheet, then work Chapters 1–5 in order — runnable code for each chapter lives in code/.

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Structure of the book

Chapter 1  DBI introduces the DBI package. Chapter 2  dbplyr explores data wrangling within database using the dplyr package. Chapters 3  SQL Basics and 4  SQL Advanced introduce basic and advanced SQL. Chapter 5  JOINs combines tables with JOINs in SQL and dbplyr.

Software information

The R session information when compiling this book is shown below:

sessionInfo()
R version 4.5.2 (2025-10-31 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 10 x64 (build 19045)

Matrix products: default
  LAPACK version 3.12.1

locale:
[1] LC_COLLATE=English_India.utf8  LC_CTYPE=English_India.utf8   
[3] LC_MONETARY=English_India.utf8 LC_NUMERIC=C                  
[5] LC_TIME=English_India.utf8    

time zone: Asia/Calcutta
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] htmlwidgets_1.6.4 compiler_4.5.2    fastmap_1.2.0     cli_3.6.5        
 [5] tools_4.5.2       htmltools_0.5.9   rmarkdown_2.30    knitr_1.50       
 [9] jsonlite_2.0.0    xfun_0.61         digest_0.6.39     rlang_1.2.0      
[13] evaluate_1.0.5   

We do not add prompts (> and +) to R source code in this book, and we comment out the text output with two hashes ## by default, as you can see from the R session information above. This is for your convenience when you want to copy and run the code (the text output will be ignored since it is commented out). Package names are in bold text (e.g., rmarkdown), and function names are followed by parentheses (e.g., bookdown::render_book()). The double-colon operator :: means accessing an object from a package.