-
Notifications
You must be signed in to change notification settings - Fork 1.2k
SQL DQL Course
DQL Course Overview
Below you can find the ordered content of the topic, in a linear progression
The linear progression of content aims to cover all content, course by course, workout by workout as follows:
- first course is the only core one, denoted by its manifest
- the next course is denoted by the first item of the next array in each course manifest
- each course has its order of workouts designated by the sections field in the same aforementioned manifest
1. what-is-sql
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | what-is-sql | ✅ | 👶 introduction | read-single-table.0: 10 | ✅ | ✅ | ❌ | ✅ |
2 | what-is-an-rdbms | ✅ | 👶 introduction | connect-client.0: 10 | ✅ | ✅ | ❌ | ✅ |
3 | what-is-a-database-server | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ❌ | ❌ |
4 | database-server-types | ✅ | 👶 introduction | connect-client.2: 5 | ✅ | ✅ | ❌ | ✅ |
5 | what-is-a-database-client | ✅ | 👶 introduction | connect-client.0: 10 connect-client.1: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | sql-practice-what-is-sql | sqlfiddle | 👶 introduction | read-single-table.2: 1000 | ✅ |
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | select-all | ✅ | 👶 introduction | read-single-table.0: 10 | ✅ | ✅ | ❌ | ✅ |
2 | select-cols | ✅ | 👶 introduction | read-single-table.0: 10 read-single-table.2: 10 |
✅ | ❌ | ❌ | ❌ |
3 | select-where | ✅ | 👶 introduction | read-single-table.0: 10 read-single-table.1: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | sql-practice-select-1 | sqlfiddle | 👶 introduction | read-single-table.0: 1000 | ✅ |
2 | sql-practice-select-2 | sqlfiddle | 👶 introduction | read-single-table.0: 1000 read-single-table.2: 1000 |
✅ |
3 | sql-practice-where-comparison | sqlfiddle | 👶 introduction | read-single-table.0: 1000 read-single-table.1: 1000 |
✅ |
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | select | ✅ | 👶 introduction 💪 workout |
read-single-table.0: 10 read-single-table.1: 10 |
✅ | ✅ | ✅ | ✅ |
2 | where | ✅ | 👶 introduction 💪 workout |
read-single-table.0: 10 read-single-table.1: 10 read-single-table.2: 10 |
✅ | ✅ | ✅ | ✅ |
3 | where-2 | ✅ | 👶 introduction 💪 workout |
read-single-table.0: 10 read-single-table.1: 10 read-single-table.2: 10 |
✅ | ✅ | ✅ | ✅ |
4 | where-3 | ✅ | 💪 workout | read-single-table.0: 10 read-single-table.1: 10 read-single-table.2: 10 |
✅ | ✅ | ✅ | ✅ |
5 | order-by-clause | ✅ | 👶 introduction 💪 workout |
read-single-table.0: 10 read-single-table.3: 10 |
✅ | ✅ | ✅ | ✅ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | sql-practice-select | sqlfiddle | 👶 introduction 💪 workout |
read-single-table.0: 1000 read-single-table.1: 1000 |
✅ |
2 | sql-practice-order-results | sqlfiddle | 👶 introduction 💪 workout |
read-single-table.0: 1000 read-single-table.1: 1000 read-single-table.3: 1000 |
✅ |
3 | sql-practice-string-matching | sqlfiddle | 👶 introduction 💪 workout |
read-single-table.0: 1000 read-single-table.1: 1000 |
✅ |
Game:
4. write
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | insert | ✅ | 👶 introduction 💪 workout |
write.0: 10 | ✅ | ✅ | ❌ | ✅ |
2 | update-clause | ✅ | 👶 introduction 💪 workout |
write.3: 10 | ✅ | ✅ | ❌ | ✅ |
3 | delete-clause | ✅ | 👶 introduction 💪 workout |
write.5: 10 | ✅ | ✅ | ❌ | ✅ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | sql-practice-insert | sqlfiddle | 👶 introduction | write.0: 1000 | ✅ |
2 | sql-practice-update | sqlfiddle | 👶 introduction 💪 workout |
write.3: 1000 | ✅ |
3 | sql-practice-delete | sqlfiddle | 👶 introduction 💪 workout |
write.5: 1000 | ✅ |
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | group-by-clause | ✅ | 💪 workout | aggregate-single-table.3: 10 | ✅ | ✅ | ❌ | ✅ |
2 | sum-clause | ✅ | 💪 workout | aggregate-single-table.0: 10 | ✅ | ✅ | ❌ | ✅ |
3 | count-clause | ✅ | 💪 workout | aggregate-single-table.0: 10 | ✅ | ✅ | ❌ | ✅ |
4 | min-and-max-clauses | ✅ | 💪 workout | aggregate-single-table.1: 10 | ✅ | ✅ | ❌ | ✅ |
5 | distinct-clause | ✅ | 💪 workout | aggregate-single-table.0: 10 | ✅ | ✅ | ❌ | ✅ |
6 | avg-clause | ✅ | 💪 workout | aggregate-single-table.0: 10 | ✅ | ✅ | ❌ | ✅ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | sql-practice-aggregate-single-table | sqlfiddle | 👶 introduction 💪 workout 🦑 deep |
read-single-table.2: 1000 aggregate-single-table.0: 1000 |
✅ |
2 | sql-practice-aggregate-single-table-2 | sqlfiddle | 👶 introduction 💪 workout 🦑 deep |
aggregate-single-table.0: 1000 | ✅ |
3 | sql-practice-aggregate-table-min-and-max | sqlfiddle | 👶 introduction 💪 workout 🦑 deep |
aggregate-single-table.1: 1000 | ✅ |
4 | sql-practice-aggregate-table-max-filter | sqlfiddle | 👶 introduction 💪 workout 🦑 deep |
aggregate-single-table.1: 1000 | ✅ |
5 | sql-practice-aggregate-group | sqlfiddle | 👶 introduction 💪 workout 🦑 deep |
aggregate-single-table.0: 1000 aggregate-single-table.3: 1000 |
✅ |
6 | sql-practice-aggregate-average | sqlfiddle | 👶 introduction 💪 workout 🦑 deep |
aggregate-single-table.1: 1000 aggregate-single-table.3: 1000 |
✅ |
Game:
6. joins
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | inner-join | ✅ | 👶 introduction 💪 workout |
read-multiple-tables.0: 10 | ✅ | ✅ | ✅ | ✅ |
2 | left-and-right-joins | ✅ | 👶 introduction 💪 workout |
read-multiple-tables.0: 10 | ✅ | ✅ | ✅ | ✅ |
3 | full-join | ✅ | 🦑 deep 💪 workout |
read-multiple-tables.0: 10 | ✅ | ✅ | ✅ | ✅ |
4 | multiple-joins | ✅ | 💪 workout 🦑 deep |
read-multiple-tables.0: 10 read-multiple-tables.1: 10 |
✅ | ✅ | ✅ | ✅ |
5 | union | ✅ | 💪 workout 🦑 deep |
read-multiple-tables.0: 10 | ✅ | ✅ | ✅ | ✅ |
Exercises:
no | name | type | aspects | standards | done |
---|---|---|---|---|---|
1 | sql-practice-join-multiple-tables | sqlfiddle | 💪 workout 🦑 deep |
read-multiple-tables.0: 1000 aggregate-multiple-tables.0: 1000 |
✅ |
2 | sql-practice-average-aggregate-multiple-tables | sqlfiddle | 💪 workout 🦑 deep |
read-multiple-tables.0: 1000 aggregate-multiple-tables.0: 1000 |
✅ |
3 | sql-practice-max-aggregate-multiple-tables | sqlfiddle | 💪 workout 🦑 deep |
read-multiple-tables.0: 1000 aggregate-multiple-tables.0: 1000 |
✅ |
4 | sql-practice-min-max-multiple-tables | sqlfiddle | 💪 workout 🦑 deep |
read-multiple-tables.0: 1000 aggregate-multiple-tables.0: 1000 |
✅ |
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | connection-strings | ✅ | 💪 workout | connect-client.0: 10 connect-client.1: 10 connect-client.2: 10 connect-client.3: 10 |
✅ | ✅ | ❌ | ✅ |
2 | gui-client | ✅ | 💪 workout | connect-client.0: 10 connect-client.1: 10 |
✅ | ✅ | ❌ | ✅ |
3 | command-line-client | ✅ | 💪 workout | connect-client.0: 10 connect-client.1: 10 |
✅ | ✅ | ❌ | ✅ |
4 | python-database-packages | ✅ | 💪 workout | connect-client.0: 10 connect-client.1: 10 |
✅ | ✅ | ❌ | ✅ |
5 | node-database-packages | ✅ | 💪 workout | connect-client.0: 10 connect-client.1: 10 |
✅ | ✅ | ❌ | ✅ |
6 | java-database-packages | ✅ | 💪 workout | connect-client.0: 10 connect-client.1: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
✅ - At least one insight covers this
❌ - Nothing covers this
🛠️ - This standard has no objectives yet
- ✅ Connect any database client to a database server on a local host
- ✅ Connect any database client to a database server on a remote host
- ✅ Break down connection URIs into their component elements (protocol, hostname, credentials, port, database name, etc)
- ✅ Assemble connection URIs from component elements
- ✅ Use the SELECT command to get data from a table
- ✅ Use the WHERE clause to filter rows of data from a table
- ✅ Filter the columns returned by a SELECT command
- ✅ Use the ORDER BY command to sort a result set by the value of a column, or multiple columns
- ✅ Use INNER, LEFT, RIGHT, OUTER, and JOIN to relate data across multiple tables
- ✅ Write a query to relate two tables using a join table
- ❌ Write a query to relate a table to itself using a join table
- ✅ Use the COUNT, SUM, AVG functions to reduce a set to a single value
- ✅ Use the MAX, MIN functions to search for the boundaries of set of data
- ❌ Combine multiple columns' values in the aggregation of a set of data
- ✅ Use GROUP BY to aggregate data in subsets of data
- ❌ Aggregate data using the GROUP BY statement and the COUNT, SUM, and AVG to collate information across related tables
- ❌ Use MAX and MIN to look at the boundaries of a subset of data that is distributed across multiple tables
- ❌ Use columns from related tables to aggregate a compound value
- ✅ Insert a single row of data using the INSERT command
- ❌ Insert multiple rows of data using the INSERT command
- ❌ Populate a table with the INSERT INTO command
- ✅ Update 1 or more columns of data with the UPDATE command
- ❌ Use a WHERE clause with the UPDATE command to conditionally update rows of data
- ✅ Delete data with the DELETE command
- ❌ Use a WHERE clause with the DELETE command to conditionally delete rows of data
Given the insights are tagged with aspects, we can filter over the linear content progression and create learning sub-paths.
These sub-path progressions will most likely not cover all content, but they will ensure and enforce an unified learning experience, tailor for the user wish.
For example, a user might be interested in new additions and updates of a language, rather than introduction lessions. Note that these sub-paths don't take games into consideration
If you are being introduced to the topic for the first time
Insights:
- what-is-sql
- what-is-an-rdbms
- what-is-a-database-server
- database-server-types
- what-is-a-database-client
- select-all
- select-cols
- select-where
- select
- where
- where-2
- order-by-clause
- insert
- update-clause
- delete-clause
- inner-join
- left-and-right-joins
Exercises:
- sql-practice-what-is-sql
- sql-practice-select-1
- sql-practice-select-2
- sql-practice-where-comparison
- sql-practice-select
- sql-practice-order-results
- sql-practice-string-matching
- sql-practice-insert
- sql-practice-update
- sql-practice-delete
- sql-practice-aggregate-single-table
- sql-practice-aggregate-single-table-2
- sql-practice-aggregate-table-min-and-max
- sql-practice-aggregate-table-max-filter
- sql-practice-aggregate-group
- sql-practice-aggregate-average
Theory put into practice/that’s how you achieve X points
Insights:
- select
- where
- where-2
- where-3
- order-by-clause
- insert
- update-clause
- delete-clause
- group-by-clause
- sum-clause
- count-clause
- min-and-max-clauses
- distinct-clause
- avg-clause
- inner-join
- left-and-right-joins
- full-join
- multiple-joins
- union
- connection-strings
- gui-client
- command-line-client
- python-database-packages
- node-database-packages
- java-database-packages
Exercises:
- sql-practice-select
- sql-practice-order-results
- sql-practice-string-matching
- sql-practice-update
- sql-practice-delete
- sql-practice-aggregate-single-table
- sql-practice-aggregate-single-table-2
- sql-practice-aggregate-table-min-and-max
- sql-practice-aggregate-table-max-filter
- sql-practice-aggregate-group
- sql-practice-aggregate-average
- sql-practice-join-multiple-tables
- sql-practice-average-aggregate-multiple-tables
- sql-practice-max-aggregate-multiple-tables
- sql-practice-min-max-multiple-tables
Prerequisite knowledge consisting of 2 or more 👶/💪 workouts
Insights:
Exercises:
- sql-practice-aggregate-single-table
- sql-practice-aggregate-single-table-2
- sql-practice-aggregate-table-min-and-max
- sql-practice-aggregate-table-max-filter
- sql-practice-aggregate-group
- sql-practice-aggregate-average
- sql-practice-join-multiple-tables
- sql-practice-average-aggregate-multiple-tables
- sql-practice-max-aggregate-multiple-tables
- sql-practice-min-max-multiple-tables
Recently added/gained traction feature
Stories, obscure details that don’t specifically relate to a learning objective
✅ All content has been tagged with aspects.
Want to contribute to this wiki? Go right ahead! If it has to do with how the Enki software ecosystem works, or editorial guidelines for how to write, let us handle that. Anything else, edit away!
Curriculum Format:
- Topic Documentation
- Course Documentation
- Workout Documentation
- Insight Documentation
- Glossary Documentation
Contributor Resources:
Curriculum overview:
Topic pages: