No feedback found for this session
| Booking link | Date |
|---|---|
| An introduction to SQL | 10:00-11:30 Tue 20th January 2026 |
KIND learning network training materials by KIND learning network is licensed under CC BY-SA 4.0
November 27, 2025
No feedback found for this session
| Booking link | Date |
|---|---|
| An introduction to SQL | 10:00-11:30 Tue 20th January 2026 |
This introductory session aims to give you a quick and easy introduction to SQL. That will include:
## install and attach R packages
pkg <- c("dbplyr", "RSQLite", "palmerpenguins")
install.packages(setdiff(pkg, rownames(installed.packages())))
library(dbplyr)
library(dplyr)
library(palmerpenguins)
conn <- src_memdb() # create an sqlite db in memory
copy_to(conn, penguins, overwrite = T) # populate that db from RSource button
File menu)
Our db has one table, named penguins. A table is similar to an Excel sheet - a rectangular set of rows and columns containing our data. To preview our data, we’ll need to write a first line of SQL. Please add the following to the bottom of your SQL script:
| species | island | bill_length_mm | bill_depth_mm | flipper_length_mm | body_mass_g | sex | year |
|---|---|---|---|---|---|---|---|
| Adelie | Torgersen | 39.1 | 18.7 | 181 | 3750 | male | 2007 |
| Adelie | Torgersen | 39.5 | 17.4 | 186 | 3800 | female | 2007 |
| Adelie | Torgersen | 40.3 | 18.0 | 195 | 3250 | female | 2007 |
| Adelie | Torgersen | NA | NA | NA | NA | NA | 2007 |
| Adelie | Torgersen | 36.7 | 19.3 | 193 | 3450 | female | 2007 |
| Adelie | Torgersen | 39.3 | 20.6 | 190 | 3650 | male | 2007 |
| Adelie | Torgersen | 38.9 | 17.8 | 181 | 3625 | female | 2007 |
| Adelie | Torgersen | 39.2 | 19.6 | 195 | 4675 | male | 2007 |
| Adelie | Torgersen | 34.1 | 18.1 | 193 | 3475 | NA | 2007 |
| Adelie | Torgersen | 42.0 | 20.2 | 190 | 4250 | NA | 2007 |
SELECT keyword, which retrieves data from the database* means “show me everything!”FROM penguins specifies that we want everything from the penguins table. That specification is important, because most real-life SQL set-ups will have multiple tables of data; ends the line. Not essential, but good practiceCtrl + Shift + Enter in the source code pane to run your SQL scriptLIMIT 5 at the end of your query to produce a shorter preview of our data:| species | island | bill_length_mm | bill_depth_mm | flipper_length_mm | body_mass_g | sex | year |
|---|---|---|---|---|---|---|---|
| Adelie | Torgersen | 39.1 | 18.7 | 181 | 3750 | male | 2007 |
| Adelie | Torgersen | 39.5 | 17.4 | 186 | 3800 | female | 2007 |
| Adelie | Torgersen | 40.3 | 18.0 | 195 | 3250 | female | 2007 |
| Adelie | Torgersen | NA | NA | NA | NA | NA | 2007 |
| Adelie | Torgersen | 36.7 | 19.3 | 193 | 3450 | female | 2007 |
LIMIT keyword is one that only works in some types of SQLSELECT * keyword
* we’ve been using so far is a wildcard, which shows all the columns in your table| species | island |
|---|---|
| Adelie | Torgersen |
| Adelie | Torgersen |
| Adelie | Torgersen |
| Adelie | Torgersen |
| Adelie | Torgersen |
| Adelie | Torgersen |
| Adelie | Torgersen |
| Adelie | Torgersen |
| Adelie | Torgersen |
| Adelie | Torgersen |
AS:| species | landmass |
|---|---|
| Adelie | Torgersen |
| Adelie | Torgersen |
| Adelie | Torgersen |
| Adelie | Torgersen |
| Adelie | Torgersen |
| Adelie | Torgersen |
| Adelie | Torgersen |
| Adelie | Torgersen |
| Adelie | Torgersen |
| Adelie | Torgersen |
| landmass |
|---|
| Torgersen |
| Torgersen |
| Torgersen |
| Torgersen |
| Torgersen |
| Torgersen |
| Torgersen |
| Torgersen |
| Torgersen |
| Torgersen |
species and flipper_length_mm columns with new names of your choiceDISTINCT gathers the unique values in a column, or unique combinations of values across multiple columnsLike all our courses and sessions, this is a team effort, and I thank the network as a whole for their encouragements and contributions. Specific thanks in this case go to Amanda King (NHS GGC), Steven Knapman (NHS Fife), and James McMahon (Public Health Scotland), and to the members of the pilot cohort for this session.
Comments
--double-dash to comment a line, or part of a line/*and then*/slash-star to comment a multi-line chunk