
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Explore the complete SQL bootcamp with Snowflake, including setup, fundamentals, DDL and DML, data loading, querying, performance optimization, and advanced topics like window functions, UDFs, and semi-structured data.
Maximize learning with hands on SQL demonstrations and section folders, practice in the Snowflake UI, and reinforce concepts through quizzes and spaced repetition. Set goals and engage in the Q&A.
Provision a Snowflake trial account and explore a private sandbox to run Ansi standard sql, navigate the Snowflake ui, and write and execute queries in interactive worksheets.
Explore the evolution of SQL from Codd's relational model to modern SQL, including relational tables, OLTP, OLAP, ETL, data warehouse, and the ANSI SQL 86 standard.
Explore how SQL evolved from traditional relational systems to power data lakes and cloud analytics, and why modern platforms like Snowflake unify data storage, processing, and analytics.
Explore how Snowflake functions as a cloud native data platform, uniting data warehouse, data lake, and data science capabilities in a scalable, sql-driven service.
Snowflake is built from scratch for the cloud, not a retrofitted technology, with a cloud native architecture designed for the query engine, storage format, metadata store, and caching.
Snowflake operates as a pure SaaS product with no infrastructure management, offers pay-as-you-use access, automatic weekly updates, and automatic data optimization during loading via the UI and connectors.
Explore Snowflake's multi-cluster shared data architecture, featuring centralized storage, compute with virtual warehouses, and cloud services, enabling independent scaling and workload isolation in a service oriented cloud platform.
Explore the anatomy of a SQL statement in Snowflake, from select and from clauses to where predicates and expressions, and map ANSI standard SQL across the eight broad classes.
Explore the Snowflake object model, from databases and schemas to tables, streams, stages, and pipes, and learn how account level objects configure users and compute clusters.
Explore how Snowflake blends RBAC with discretionary access control to grant granular privileges on securable objects. Learn about system defined roles and how to switch roles in a session.
Master the create statement in Snowflake, using generic syntax to create tables, views, functions, and account-level objects, with if not exists and replace options.
Set the worksheet context by selecting role, warehouse, database, and schema to define the namespace, then use the use command to switch context for subsequent statements and create statements.
Learn how to create account-level objects in Snowflake, including virtual warehouses and databases, using create statements. Configure warehouse size, suspend settings, auto resume, and optional descriptions to manage compute resources.
Explore Snowflake's create statement for tables, covering five methods: inline column definitions, create table as select, stage-based definitions, like, and clone; review data types and constraints.
Explore how data types define column structure and permitted values in Snowflake, including numeric, string/binary, boolean, date/time, semi-structured, and geospatial types, with vendor nuances.
Explain numeric data types like number and float, detailing precision and scale, fixed versus floating point, and how Snowflake handles integers, decimals, and rounding.
Discover how string data types store utf-8 characters up to 16 MB per column, with 1–4 bytes per character, affecting max length and limits for employee id, name, and comments.
Learn how the boolean data type in Snowflake stores true, false, or null, its role in column definitions and where clauses, and how it marks on/off settings and missing values.
Store temporal data in Snowflake using date, time, and timestamp types instead of strings, supporting ISO date formats, nanoseconds precision, and date-time functions with a 1582-9999 range.
Explore Snowflake's semi-structured data types, including JSON, XML, ORC, Parquet, and Avro, and learn to store arrays, objects, and variants in a single table column for flexible querying.
Explore the geography data type in Snowflake, use GeoJSON coordinates and the distance function to measure distances between points like the Parthenon and Taj Mahal.
Explore sql constraints, including primary key, not null, unique, check, and foreign key, and understand how Snowflake enforces only not null and uses constraints for metadata and compatibility.
Master the Snowflake alter command to modify metadata and properties, set account, session, and object parameters, and manage time travel retention across databases, schemas, and tables.
Master alter statements and parameters by resizing and controlling a virtual warehouse, renaming objects, and configuring table, database, and account settings with set, unset, and use actions.
Use the show statement to list databases, tables, and users you have privileges to see, with like patterns and an optional in keyword to limit scope.
Explore how the describe statement returns detailed metadata for specific objects, especially table schemas, including column data types, constraints, and comments, similar to show.
Learn to use the drop command to remove databases, schemas, tables, and tags in Snowflake, with if exists and data retention time, plus ondrop for possible restoration.
Learn essential SQL styling conventions to write clear, maintainable Snowflake queries, including case rules, indentation, naming conventions, and commenting practices.
Master the insert statement in Snowflake, adding one or more rows with values or a select, using optional overwrite with delete privileges and optional column subsets.
Explore the update statement to modify data in a table, set single or multiple columns, and filter updates with a where clause, including joins for mapping.
Master delete from syntax to remove rows, using where and using clauses to target primary keys or subqueries, and leverage time travel to recover deleted data.
Truncate quickly removes all rows from a table while preserving its structure, privileges, and constraints, with optional if exists and table. It also removes load metadata to prevent duplicate files.
Master the merge statement to perform inserts, updates, and deletes in a single operation using a target and source table, a join condition, and when matched or not matched logic.
Explore Snowflake data loading with bulk loading via copy into table, staging raw data files, and using a file format object to interpret and transform data for querying.
Learn how Snowflake uses internal and external stage objects to stage data files, including user, table, and named stages, and how to upload, inspect, and manage stage contents with put, list, and remove commands.
Copy into table loads data from a stage into a Snowflake table, storing it in a columnar format for querying with support for CSV, JSON, Avro, ORC, Parquet, and XML.
Learn how snowflake uses file format objects to load csv, json, avro, orc, parquet, and xml files from a stage, with options for header skipping and compression.
Create a csv file format with comma delimiter, header skip, null handling, and date format for Snowflake batch loading. Upload to stage and copy into table to load 1000 rows.
Master the select clause by exploring literals, expressions, and built-in or user defined functions to derive non-persistent results, apply aliases with as, and utilize system functions.
Learn the from clause by selecting data from a single table, applying aliases, and using distinct, limit, and offset, while exploring joins, subqueries, and views.
Explore how the where clause filters a select query using predicates, comparison and logical operators to refine results with and, or, and not.
Engage in hands-on practice with the where clause, using comparison operators, and, or, not, and grouping with parentheses; learn like and in patterns, then preview order by.
Sort query results with the order by clause, using ascending or descending order and handling nulls; use a sort key from the projection and explore top ten grossing films.
Explore Snowflake scalar functions, including numeric, string, and temporal examples such as absolute, concat, and date casting, and apply them in select and where clauses.
Explore aggregate functions that process multiple rows to a single value, including sum and max. See how where and group by enable aggregation over subsets of data and distinct counts.
Explore how to create and use user defined functions (udfs) in Snowflake, including scalar and tabular forms, language options, and function overloading.
Leverage the group by clause to create aggregated summaries by quarter, genre, or year, applying count, max, min, average, and sum, and explore rollup and having filters for deeper insights.
Learn how the having clause filters grouped results after aggregation, and how combining where and having differs from where alone, with director averages and action-film examples.
Explore a real-world tpc-h data model for a global wholesaler, featuring customers, orders, line item, and item tables, and learn joining and set operations in Snowflake.
Explore subqueries, wrapped in parentheses and embedded in the from clause, with outer and inner statements, aliasing, and where filters to compute the most recent customer key.
Classify subqueries by their resultset, distinguishing scalar single-value outputs from tabular multi-row results, and use in for single-column multi-row queries to enable joins.
Learn about correlated and uncorrelated subqueries. See how the outer query links to subquery results for orders and customers via where clause, and why correlated subqueries can be resource intensive.
Master uncorrelated and correlated subqueries, using scalar and tabular results to filter top 1% orders by 99th percentile, and apply in, any, all, not equals, and exists operators.
Master joining multiple tables using inner join, on conditions, and aliases, linking customers, orders, and line items via primary and foreign keys, including subqueries, for more complex queries.
Examine left, right, full, and cross joins using customer and orders data to reveal unmatched rows, null values, and how cross joins produce Cartesian products with potentially enormous results.
Explore set operators in SQL, including union and intersect, and see how set theory underpins these operations. Compare set operations with joins, and learn multi-column handling and casting basics.
Master set operators between two select statements in a compound query, including union, union all, intersect, minus, and except, with precedence, data types, and the Tcph dataset example.
Explore sql conditional expressions in Snowflake by using the if function to convert boolean values into readable text, and learn how case, ifnull, and coalesce shape dynamic outputs.
Explore the SQL standard case expression to build conditional logic in select statements. Learn search and simple case forms with when, then, else, and null handling.
Explore how to handle null values using ifnull and coalesce, replacing nulls with meaningful defaults and selecting the first non-null value in Snowflake and other vendors.
Explore conditional expressions in SQL bootcamp: build labels for customers by years since first order using subqueries, case, if, and coalesce, and map order status to readable forms.
Explore the view object, a named select statement that yields a queryable schema without storing data, enabling joins, where clauses, and pre-aggregation while restricting access to sensitive columns.
Master explicit data type conversions in snowflake with cast, the as keyword, and the double colon, preserve precision with decimal types, and use tridecimal to return null on conversion failure.
Learn to analyze Snowflake query performance with the query history for 14 days, programmatic views and table functions, and the query profile to pinpoint costly operations in an operator tree.
Understand sql query execution order, starting with the from clause and join, then where, group by, having, then select distinct, order by, and limit, early where filtering reduces data.
Explore best practices for joining tables, ensuring unique join keys to avoid duplicate rows and incorrect sums. Understand table relationships and how to obtain latest prices.
Use limit with order by to reduce intermediate results and avoid spilling to local storage, speeding queries on large tables. Place a single order by at the top level.
Group by rows that share values, illustrated by country, and assess cardinality to optimize performance; high cardinality like unique id or timestamp can slow queries—adjust grouping or leverage Snowflake features.
Learn to use explain to generate execution plans, analyze query operations, and optimize Snowflake performance through micro partition pruning, clustering, and avoiding full table scans and cartesian joins.
Explore snowflake caching strategies—metadata cache, results cache, and local disk cache—and how they store metadata and query results to boost performance.
Understand materialized views in Snowflake: pre-computed, persisted query results for fast access. Recognize materialized views incur storage and compute costs and support only a single table, no joins or udfs.
Explore how window functions relate each row to its city window, enabling row-level calculations like sums and averages. Distinguish order-insensitive and order-sensitive windows defined with over and partition by.
Explore order-sensitive window functions in Snowflake, using rank, dense_rank, and row_number with an order by clause to perform top n analysis and understand ties and gaps.
Explore order-insensitive window functions and their outputs across city windows, including average, sum, max, min, count, and count distinct, plus calculating a transaction's share of monthly totals.
Master cumulative and sliding window frames in sql to compute running totals and moving averages by month, using partition by, order by, and unbounded preceding.
Master common table expressions (CTEs) with the with clause to modularize queries and reference them as named intermediate results, then compare against derived table subqueries for readability.
Explore how common table expressions (CTEs) organize complex SQL queries by aggregating user transactions, improving readability, maintainability, and reusability, with hands-on practice on Snowflake marketplace datasets.
Define recursive ctes to traverse hierarchical data, using an anchor and a recursive statement joined by union all, to display each employee with their manager's name.
Learn how transactions group statements into a single unit using begin, commit, and rollback, enforcing atomicity and acid properties like consistency, isolation, and durability in Snowflake and Unistore.
Explore how Snowflake implements transactions, from implicit single-statement behavior to explicit begin, commit, and rollback, and learn autocommit, session context, and acid principles.
Discover how Snowflake stores Unicode text using UTF-8, how code points drive sorting and equality, and how collation customizes order to follow English language rules.
Apply custom string collations at account, database, schema, and table levels using default DDL collations, the collate function, and the collate infix operator in queries.
Explore collation specifiers in Snowflake, including locale variations, case sensitivity, accent and punctuation handling, first letter preference, case conversion, and space trimming.
Explore collation precedence in Snowflake, from collate function to account level, and see how each level overrides the next, plus performance implications like micro partition pruning.
Discover user defined functions (udfs) in snowflake, using sql, javascript, python, scala, or java to create scalar or table functions with proper parameters, return types, and bodies.
learn how stored procedures in snowflake bundle administrative statements with signatures, parameters, and optional returns, distinguishing from UDFs, using JavaScript or Snowpark to execute dynamic SQL.
Explore semi-structured data concepts—flexible schemas, nested data, and collections like JSON and XML—plus how Snowflake extends SQL with semi-structured data types and functions.
Discover how Snowflake ingests semi-structured formats like json and xml into a table with variant, array, and object types, using elt, schema inference, and column-name matching.
Learn to access semi-structured data in Snowflake with dot and bracket notation on a variant column, including arrays and strings, and cast results to SQL types for joins and comparisons.
Explore Snowflake's semi-structured data functions, including flatten and lateral flatten, to explode arrays and objects, produce normalized rows, and query with sequence, key, path, index, and value.
Learn to load and transform semi-structured JSON data in Snowflake using ELT and ETL techniques, map JSON elements to columns, flatten arrays, and apply conversions.
Learn how to work with binary semi-structured formats like Parquet in Snowflake, including columnar storage, encoding, compression, metadata, and end-to-end loading from stage to table.
Put your new SQL and Snowflake skills into practice, and share feedback to help future courses improve. Continue learning as you explore and apply your knowledge.
This course is an independent, unofficial training resource and is not endorsed or sponsored by Snowflake Inc.
Welcome to The Ultimate SQL & Snowflake Data Analysis Bootcamp! The only course you need to learn one of the most in-demand data analysis skills in today’s workplace: SQL!
If we look at our modern data landscape we can see SQL everywhere, powering relational databases like SQL Server, MySQL, and PostgreSQL. Enabling cloud-based data analysis through platforms like BigQuery and Snowflake and even serving as interfaces for Big Data tools like Spark (with Spark SQL) and Hadoop.
This course offers a one-stop SQL shop for students of any skill level to learn all the essential data analysis SQL syntax and SQL features, grounded in a deep understanding of how SQL has evolved to meet modern demands, such as cloud computing and Big Data.
Using the powerful cloud-native data platform Snowflake, we’ll analyse synthetic and real-world data through a combination of bite-sized theory lectures and hands-on exercises — equipping you with everything you need to become a SQL expert fit for the world of data analysis!
We accomplish this using a FREE Snowflake trial account, which takes just a few minutes to set up!
Why Choose This Course?
6+ hours of high-quality content comprised of bite-sized videos of around 5 minutes, so you get what you need without the fluff!
Theory lectures that include architectural diagrams, graphics, code snippets, and overview slides to bookmark and study.
Interactive hands-on content in the Snowflake UI with a focus on ANSI-standard SQL code.
Experience working with and understanding both synthetic and real-world data.
A folder full of SQL code to accompany hands-on videos that you can run, edit and share!
A review quiz at the end of each section to reinforce the practical and theoretical concepts you've just studied.
Learn SQL in the context of modern data challenges like Big Data and the Cloud.
The perspective of a SQL professional instructor through the Q&A section.
Earn a certificate of completion when you complete the course to showcase your expertise.
What Will You Cover?
1. Course Setup
Create a free Snowflake trial account.
Download the hands-on SQL code.
Learn study methods to help it all go in and stay in!
2. Introduction to SQL and Snowflake
Learn about SQL's historical context and how it fits into the modern data landscape.
Have a crash course on Snowflake, the cloud-native data platform we'll be using for the course.
Have an introduction to the technical aspects of the SQL language.
Additional database concepts like the object model and access control.
3. Data Definition Language (DDL)
Learn SQL statements used to create and modify objects: CREATE, USE, SHOW, DESCRIBE, DROP & ALTER.
Learn about Data Types.
Learn about Constraints.
Have an introduction to SQL Syntax Best Practices.
4. Data Manipulation Language (DML)
Learn about SQL statements to generate and modify data: INSERT, UPDATE, DELETE, TRUNCATE & MERGE.
Learn the process of loading large amounts of data with Snowflake features: Stages, File Formats, COPY INTO <table>.
5. Query Fundamentals
Learn the many individual clauses of the select statement in detail: SELECT, FROM, WHERE, ORDER BY, GROUP BY & HAVING.
Learn about scalar and aggregate SQL functions.
Have an introduction to User-defined functions.
6. Intermediate Querying
Learn to combine table attributes with the JOIN clause.
Learn to modularise our SQL code with Subqueries.
Learn about Set Operators to compare result sets.
Learn about Conditional Expressions to control the flow of our data.
Learn about the View database object.
Learn about how to convert from one data type to another with Casting.
7. SQL Query Performance
Learn about the database Order Of Execution to help conceptualise how the database engine processes statements.
Learn about best practices when using different SQL clauses: JOIN, ORDER BY, WHERE and GROUP BY.
Learn how to use the EXPLAIN command and Snowflake's Query Profile Tool.
Learn about Snowflake-specific features for improving query performance: Caching and Materialized Views.
8. Advanced SQL Features
Learn about Window Functions and Window Frames.
Learn about Common Table Expressions (CTEs) and Recursive CTEs.
Learn about Transactions.
Learn about Collation.
Learn about User-defined Functions (UDFs) and Stored Procedures.
9. Processing Semi-structured Data
Have a crash course into what semi-structured data is.
Learn how to load semi-structured data and what their unique considerations are.
Learn how to query and access semi-structured data.
Learn what functions are unique for accessing semi-structured data.
Learn what are the unique considerations for loading binary semi-structured data.
One last thing - I'd love to hear from you! Share your experience taking the course by messaging me on Udemy or through LinkedIn. You can find me by searching 'Tom Bailey • Udemy Instructor'.
Ready to transform your data analysis SQL skills? Enrol now to get lifetime access to this comprehensive course and start mastering SQL for the modern data landscape today!