SlideShare a Scribd company logo
INTRO TO SQL
Bootcamp (https://tdmdal.github.io/mma-sql/)
September 21, 2020 Prepared by Jay / TDMDAL
What’s SQL (Structured Query Language)
• Most widely used database (DB) language
• a domain specific language (managing data stored in relational DB)
• Not a proprietary language
• Open specifications/standards
• All major DBMS (DB Mgmt. System ) vendors implement ANSI Standard SQL
• However, SQL Extensions are usually DB specific
• Powerful despite simplicity
ANSI - American National Standards Institute
What’s DB and DB Management System
• What’s a database: A collection of data in an organized way
• Relational DB
• tables
• columns/fields/variables and datatypes
• rows/records/observations
• primary key, foreign key, constraints and relationships (discuss later)
• What is DBMS (DB Management System)?
• A software system that manages/maintains relational DBs
• e.g. MySQL, MariaDB, PostgreSQL, SQLite, Microsoft SQL Server, Oracle, etc.
Connect to a DB and use SQL – DB Client
• DB specific management client
• command-line console
• GUI client (e.g. DB Browser for SQLite, MySQL Workbench, MS SSMS)
• Generic DB client can connect to different DBs through connectors
• GUI client (e.g. DBeaver, Navicat)
• Programming language (e.g. Python + SQLAlchemy + DBAPI (e.g. SQLite,
MySQL, PostgreSQL, etc.), R + dbplyr)
Beyond a relational DB language
• SAS’s PROC SQL
• Spark’s SparkSQL
• Apache Spark is a big data computing framework
• Hive’s HiveQL, an SQL-like query language
• Apache Hive is a distributed data warehouse (data warehouse?)
• Google BigQuery’s SQL
• BigQuery is Google’s data warehouse (analyze petabytes of data at ease)
ref. Database vs data warehouse; Data warehouse vs data lake
note: NoSQL DB?
SQL Hands-on Exercises (Learning-by-doing)
• Course website: https://tdmdal.github.io/mma-sql/
• Google Colab
• Google’s Jupyter Notebook
• A notebook can contain live code, equations, visualizations and narrative text
• Why SQLite?
• a small, fast, self-contained, high-reliability, full-featured, SQL DB engine
• perfect for learning SQL
Preparation For RSM8411 (MMA, Fall 2020)
• A different setup (a more advanced/powerful DBMS)
• Microsoft SQL Server Express, a mini/desktop version of MS SQL Server
• SQL Server Management Studio (SSMS), a GUI client for MS SQL Server
• Get-started resources for this setup: see our bootcamp website
• Please make sure you have the above setup installed
• Set it up before the end of this bootcamp
• Email me if you have trouble with installation
• SQL syntax difference between SQLite and MS SQL
• For 99% of what we will learn in this bootcamp, they are the same
Categories
CategoryID
CategoryName
Description
Picture
Customers
CustomerID
CompanyName
ContactName
ContactTitle
Address
City
Region
PostalCode
Country
Phone
Fax
Employees
EmployeeID
LastName
FirstName
Title
TitleOfCourtesy
BirthDate
HireDate
Address
City
Region
PostalCode
Country
HomePhone
Extension
Photo
Notes
ReportsTo
PhotoPath
OrderDetails
OrderID
ProductID
UnitPrice
Quantity
Discount
Orders
OrderID
CustomerID
EmployeeID
OrderDate
RequiredDate
ShippedDate
ShipVia
Freight
ShipName
ShipAddress
ShipCity
ShipRegion
ShipPostalCode
ShipCountry
Products
ProductID
ProductName
SupplierID
CategoryID
QuantityPerUnit
UnitPrice
UnitsInStock
UnitsOnOrder
ReorderLevel
Discontinued
Shippers
ShipperID
CompanyName
Phone
Suppliers
SupplierID
CompanyName
ContactName
ContactTitle
Address
City
Region
PostalCode
Country
Phone
Fax
HomePage
Northwind DB
Primary key, foreign key, constraints and
relationships
Hands-on Part 1: Warm up
• Retrieve data: SELECT...FROM...
• Sort retrieved data: SELECT...FROM...ORDER BY...
• Filter data: SELECT...FROM...WHERE...
• IN, NOT, LIKE and % wildcard
• Create calculated fields
• mathematical calculations (e.g. +, -, *, /)
• data manipulation functions (e.g. DATE(), ||)
Hands-on Part 2: Summarize and Group Data
• Summarize data using aggregate functions (e.g. COUNT(), MIN(), MAX(),
and AVG()).
• Group data and filter groups: SELECT...FROM...GROUP
BY...HAVING...
• SELECT clause ordering: SELECT...FROM...WHERE...GROUP
BY...HAVING...ORDER BY...
• Filter data by subquery:
SELECT...FROM...WHERE...(SELECT...FROM...)
Hands-on Part 2: Join Tables
• Inner join: SELECT...FROM...INNER JOIN...ON...
• Left join: SELECT...FROM...LEFT JOIN...ON...
• Other join variations.
Join – Inner Join
Table1 Table2
SELECT *
FROM Table1
INNER JOIN Table2
ON Table1.pk = Table2.fk;
pk t1c1
1 a
2 b
fk t2c1
1 c
1 d
3 e
pk t1c1 fk t2c1
1 a 1 c
1 a 1 d
Table1 Table2
Join – Left (Outer) Join
SELECT *
FROM Table1
LEFT JOIN Table2
ON Table1.pk = Table2.fk;
Table1 Table2
pk t1c1
1 a
2 b
fk t2c1
1 c
1 d
3 e
pk t1c1 fk t2c1
1 a 1 c
1 a 1 d
2 b null null
Table1 Table2
Join - Left (Outer) Join With Exclusion
Table1 Table2
pk t1c1
1 a
2 b
fk t2c1
1 c
1 d
3 e
Table1 Table2
SELECT *
FROM Table1
LEFT JOIN Table2
ON Table1.pk = Table2.fk
WHERE Table2.fk is NULL;
pk t1c1 fk t2c1
2 b null null
Join – Right Outer Join*
SELECT *
FROM Table2
LEFT JOIN Table1
ON Table2.fk = Table1.pk
---------------------------
SELECT *
FROM Table1
RIGHT JOIN Table2
ON Table1.pk = Table2.fk;
Table2
pk t1c1
1 a
2 b
fk t2c1
1 c
1 d
3 e
pk t1c1 fk t2c1
1 a 1 c
1 a 1 d
null null 3 e
Table1 Table2
Table1
SQLite doesn’t
support this
RIGHT JOIN key
word, but some
DBMSs do (e.g.
MySQL).
Join - Right Outer Join With Exclusion*
Table1 Table2
pk t1c1
1 a
2 b
fk t2c1
1 c
1 d
3 e
Table1 Table2
SELECT *
FROM Table2
LEFT JOIN Table1
ON Table2.fk = Table1.pk
WHERE Table1.pk is NULL;
---------------------------
SELECT *
FROM Table1
RIGHT JOIN Table2
ON Table1.pk = Table2.fk
WHERE Table1.pk is NULL;
pk t1c1 fk t2c1
2 b null null
pk t1c1 fk t2c1
null null 3 e
SQLite doesn’t
support this RIGHT
JOIN key word, but
some DBMSs do (e.g.
MySQL).
Join – Full Outer Join
pk t1c1
1 a
2 b
fk t2c1
1 c
1 d
3 e
Table1 Table2
SELECT pk, t1c1, fk, t2c1
FROM Table1
LEFT JOIN Table2
ON Table1.pk = Table2.fk
UNION
SELECT pk, t1c1, fk, t2c1
FROM Table2
LEFT JOIN Table1
ON Table2.fk = Table1.pk;
Table1 Table2
pk t1c1 fk t2c1
1 a 1 c
1 a 1 d
2 b null null
null null 3 e
Note: Some DBMS support FULL OUTER JOIN keyword (e.g. MS SQL) so you don’t need to do it the above way.
Join – Full Outer Join With Exclusion*
pk t1c1
1 a
2 b
fk t2c1
1 c
1 d
3 e
Table1 Table2
SELECT pk, t1c1, fk, t2c1
FROM Table1
LEFT JOIN Table2
ON Table1.pk = Table2.fk
WHERE Table2.fk is NULL
UNION
SELECT pk, t1c1, fk, t2c1
FROM Table2
LEFT JOIN Table1
ON Table2.fk = Table1.pk
WHERE Table1.pk is NULL;
Table1 Table2
pk t1c1 fk t2c1
2 b null null
null null 3 e
Others
• CTE and temporary table
• Self-join
• CASE keyword
• UNION keyword
Many things we didn’t cover
• Insert data (INSERT INTO…VALUES…; INSERT INTO…SELECT…FROM…)
• Update data (UPDATE…SET…WHERE…)
• Delete data (DELETE FROM…WHERE…)
• Manipulate tables (CREATE TABLE…; ALTER TABLE…; DROP TABLE…)
• Views (CREATE VIEW…AS…)
The list goes on and on
• Stored procedures
• Functions
• Transaction processing
• Cursors (going through table row by row)
• WINDOW function
• Query optimization
• DB permissions & security
• …
Ref. A stack overflow discussion on What is “Advanced” SQL.

More Related Content

Similar to sql_bootcamp.pdf (20)

PDF
Modern Database Management 11th Edition Hoffer Solutions Manual
bardhdinci22
 
PPTX
Relational Database Management System
Mian Abdul Raheem
 
PPTX
Dbms sql-final
NV Chandra Sekhar Nittala
 
PDF
Modern Database Management 11th Edition Hoffer Solutions Manual
lgcbapjxey5187
 
PDF
SQL Overview
Stewart Rogers
 
PPTX
Concept of Structured Query Language (SQL) in SQL server as well as MySql. BB...
Rohan Byanjankar
 
PDF
Sql overview-1232931296681161-1
sagaroceanic11
 
DOCX
SQL report
Ahmad Zahid
 
PDF
Modern Database Management 11th Edition Hoffer Solutions Manual
sxofmpd282
 
PPTX
DDL,DML,SQL Functions and Joins
Ashwin Dinoriya
 
PDF
Oracle Material.pdf
rajeshkathavarayan
 
PPT
Sql Server 2000
Om Vikram Thapa
 
PDF
RDBMS SQL Basics
David Gloyn-Cox
 
PPTX
MS SQL - Database Programming Concepts by RSolutions
RSolutions
 
PPT
Mysql 120831075600-phpapp01
sagaroceanic11
 
PPT
Chap 7
Karan Patil
 
PPTX
Sql slid
pacatarpit
 
PPTX
Advanced_SQL_Presentation_Template.pptx
SARASCHANDRA MAVALLAPALLI
 
PPTX
Database Overview
Livares Technologies Pvt Ltd
 
PPTX
SQL_Presentation.ppt basic version 12.32
pranathi051101
 
Modern Database Management 11th Edition Hoffer Solutions Manual
bardhdinci22
 
Relational Database Management System
Mian Abdul Raheem
 
Modern Database Management 11th Edition Hoffer Solutions Manual
lgcbapjxey5187
 
SQL Overview
Stewart Rogers
 
Concept of Structured Query Language (SQL) in SQL server as well as MySql. BB...
Rohan Byanjankar
 
Sql overview-1232931296681161-1
sagaroceanic11
 
SQL report
Ahmad Zahid
 
Modern Database Management 11th Edition Hoffer Solutions Manual
sxofmpd282
 
DDL,DML,SQL Functions and Joins
Ashwin Dinoriya
 
Oracle Material.pdf
rajeshkathavarayan
 
Sql Server 2000
Om Vikram Thapa
 
RDBMS SQL Basics
David Gloyn-Cox
 
MS SQL - Database Programming Concepts by RSolutions
RSolutions
 
Mysql 120831075600-phpapp01
sagaroceanic11
 
Chap 7
Karan Patil
 
Sql slid
pacatarpit
 
Advanced_SQL_Presentation_Template.pptx
SARASCHANDRA MAVALLAPALLI
 
Database Overview
Livares Technologies Pvt Ltd
 
SQL_Presentation.ppt basic version 12.32
pranathi051101
 

Recently uploaded (20)

PDF
KEY ANSWERS WEEK 2 oyoi uyioyi iyioy iyiyi iyy
saryanto21
 
PPTX
MIPs_Presentation_Design_to_Detection.pptx
lebaleba
 
PPTX
AIR POLLUTION FOR SCIENCE 5TH 2021 LELVIS.pptx
lelviscastellanos
 
PDF
Plant-Propagation-Cutting-and-Layering.pdf
pritammurmu553
 
PDF
Tandem training modules (tester first draft).pdf
nataschang1
 
PPTX
animal-research-and-alternatives methods
biggdaad011
 
PPTX
weather sample outline presentation.pptx
AmgadMaher5
 
PPTX
Use_of_PPEs_Storyboard safety bdgnfgnccx
Arun Phoke
 
PDF
Anthony "Tony" Mattei - Passionate About Ecological Restoration
Anthony "Tony" Mattei
 
PPTX
原版澳洲拉筹伯大学毕业证(LTU毕业证书)如何办理
Taqyea
 
PPT
How Plant Viruses Spread: Modes of Transmission
Ravikumar Vaniya
 
PPTX
AI_in_Agriculture_Visual_Presentation.pptx
deepakprasath02
 
PDF
NRE 323 Temperature of the Two Lake Slideshows
Rowan Sales
 
PPTX
Kamaraj | PPT https://share.google/YQdH7cCYVgCN6JiVs
geolinegeorge2005
 
PPTX
一比一原版(UVIC毕业证书)维克大学-加泰罗尼亚中央大学毕业证如何办理
Taqyea
 
PPTX
MY BEAUTIFUL CPP NALCO ANGUL ODISHA.pptx
santosh27161
 
PPTX
Water_hammer_jojojo_momomo___gowentrgone.pptx
spmiirfan7
 
PDF
INDUS VALLEY SCHOOL OF ART AND ARCHITECTURE
shahid4405027
 
PDF
Dr. Philippe Smith - A Climate Data Analyst
Dr. Philippe Smith
 
PPTX
原版约翰霍普金斯大学毕业证办理流程JHULetter成绩单防伪怎么办
Taqyea
 
KEY ANSWERS WEEK 2 oyoi uyioyi iyioy iyiyi iyy
saryanto21
 
MIPs_Presentation_Design_to_Detection.pptx
lebaleba
 
AIR POLLUTION FOR SCIENCE 5TH 2021 LELVIS.pptx
lelviscastellanos
 
Plant-Propagation-Cutting-and-Layering.pdf
pritammurmu553
 
Tandem training modules (tester first draft).pdf
nataschang1
 
animal-research-and-alternatives methods
biggdaad011
 
weather sample outline presentation.pptx
AmgadMaher5
 
Use_of_PPEs_Storyboard safety bdgnfgnccx
Arun Phoke
 
Anthony "Tony" Mattei - Passionate About Ecological Restoration
Anthony "Tony" Mattei
 
原版澳洲拉筹伯大学毕业证(LTU毕业证书)如何办理
Taqyea
 
How Plant Viruses Spread: Modes of Transmission
Ravikumar Vaniya
 
AI_in_Agriculture_Visual_Presentation.pptx
deepakprasath02
 
NRE 323 Temperature of the Two Lake Slideshows
Rowan Sales
 
Kamaraj | PPT https://share.google/YQdH7cCYVgCN6JiVs
geolinegeorge2005
 
一比一原版(UVIC毕业证书)维克大学-加泰罗尼亚中央大学毕业证如何办理
Taqyea
 
MY BEAUTIFUL CPP NALCO ANGUL ODISHA.pptx
santosh27161
 
Water_hammer_jojojo_momomo___gowentrgone.pptx
spmiirfan7
 
INDUS VALLEY SCHOOL OF ART AND ARCHITECTURE
shahid4405027
 
Dr. Philippe Smith - A Climate Data Analyst
Dr. Philippe Smith
 
原版约翰霍普金斯大学毕业证办理流程JHULetter成绩单防伪怎么办
Taqyea
 
Ad

sql_bootcamp.pdf

  • 1. INTRO TO SQL Bootcamp (https://tdmdal.github.io/mma-sql/) September 21, 2020 Prepared by Jay / TDMDAL
  • 2. What’s SQL (Structured Query Language) • Most widely used database (DB) language • a domain specific language (managing data stored in relational DB) • Not a proprietary language • Open specifications/standards • All major DBMS (DB Mgmt. System ) vendors implement ANSI Standard SQL • However, SQL Extensions are usually DB specific • Powerful despite simplicity ANSI - American National Standards Institute
  • 3. What’s DB and DB Management System • What’s a database: A collection of data in an organized way • Relational DB • tables • columns/fields/variables and datatypes • rows/records/observations • primary key, foreign key, constraints and relationships (discuss later) • What is DBMS (DB Management System)? • A software system that manages/maintains relational DBs • e.g. MySQL, MariaDB, PostgreSQL, SQLite, Microsoft SQL Server, Oracle, etc.
  • 4. Connect to a DB and use SQL – DB Client • DB specific management client • command-line console • GUI client (e.g. DB Browser for SQLite, MySQL Workbench, MS SSMS) • Generic DB client can connect to different DBs through connectors • GUI client (e.g. DBeaver, Navicat) • Programming language (e.g. Python + SQLAlchemy + DBAPI (e.g. SQLite, MySQL, PostgreSQL, etc.), R + dbplyr)
  • 5. Beyond a relational DB language • SAS’s PROC SQL • Spark’s SparkSQL • Apache Spark is a big data computing framework • Hive’s HiveQL, an SQL-like query language • Apache Hive is a distributed data warehouse (data warehouse?) • Google BigQuery’s SQL • BigQuery is Google’s data warehouse (analyze petabytes of data at ease) ref. Database vs data warehouse; Data warehouse vs data lake note: NoSQL DB?
  • 6. SQL Hands-on Exercises (Learning-by-doing) • Course website: https://tdmdal.github.io/mma-sql/ • Google Colab • Google’s Jupyter Notebook • A notebook can contain live code, equations, visualizations and narrative text • Why SQLite? • a small, fast, self-contained, high-reliability, full-featured, SQL DB engine • perfect for learning SQL
  • 7. Preparation For RSM8411 (MMA, Fall 2020) • A different setup (a more advanced/powerful DBMS) • Microsoft SQL Server Express, a mini/desktop version of MS SQL Server • SQL Server Management Studio (SSMS), a GUI client for MS SQL Server • Get-started resources for this setup: see our bootcamp website • Please make sure you have the above setup installed • Set it up before the end of this bootcamp • Email me if you have trouble with installation • SQL syntax difference between SQLite and MS SQL • For 99% of what we will learn in this bootcamp, they are the same
  • 8. Categories CategoryID CategoryName Description Picture Customers CustomerID CompanyName ContactName ContactTitle Address City Region PostalCode Country Phone Fax Employees EmployeeID LastName FirstName Title TitleOfCourtesy BirthDate HireDate Address City Region PostalCode Country HomePhone Extension Photo Notes ReportsTo PhotoPath OrderDetails OrderID ProductID UnitPrice Quantity Discount Orders OrderID CustomerID EmployeeID OrderDate RequiredDate ShippedDate ShipVia Freight ShipName ShipAddress ShipCity ShipRegion ShipPostalCode ShipCountry Products ProductID ProductName SupplierID CategoryID QuantityPerUnit UnitPrice UnitsInStock UnitsOnOrder ReorderLevel Discontinued Shippers ShipperID CompanyName Phone Suppliers SupplierID CompanyName ContactName ContactTitle Address City Region PostalCode Country Phone Fax HomePage Northwind DB
  • 9. Primary key, foreign key, constraints and relationships
  • 10. Hands-on Part 1: Warm up • Retrieve data: SELECT...FROM... • Sort retrieved data: SELECT...FROM...ORDER BY... • Filter data: SELECT...FROM...WHERE... • IN, NOT, LIKE and % wildcard • Create calculated fields • mathematical calculations (e.g. +, -, *, /) • data manipulation functions (e.g. DATE(), ||)
  • 11. Hands-on Part 2: Summarize and Group Data • Summarize data using aggregate functions (e.g. COUNT(), MIN(), MAX(), and AVG()). • Group data and filter groups: SELECT...FROM...GROUP BY...HAVING... • SELECT clause ordering: SELECT...FROM...WHERE...GROUP BY...HAVING...ORDER BY... • Filter data by subquery: SELECT...FROM...WHERE...(SELECT...FROM...)
  • 12. Hands-on Part 2: Join Tables • Inner join: SELECT...FROM...INNER JOIN...ON... • Left join: SELECT...FROM...LEFT JOIN...ON... • Other join variations.
  • 13. Join – Inner Join Table1 Table2 SELECT * FROM Table1 INNER JOIN Table2 ON Table1.pk = Table2.fk; pk t1c1 1 a 2 b fk t2c1 1 c 1 d 3 e pk t1c1 fk t2c1 1 a 1 c 1 a 1 d Table1 Table2
  • 14. Join – Left (Outer) Join SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.pk = Table2.fk; Table1 Table2 pk t1c1 1 a 2 b fk t2c1 1 c 1 d 3 e pk t1c1 fk t2c1 1 a 1 c 1 a 1 d 2 b null null Table1 Table2
  • 15. Join - Left (Outer) Join With Exclusion Table1 Table2 pk t1c1 1 a 2 b fk t2c1 1 c 1 d 3 e Table1 Table2 SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.pk = Table2.fk WHERE Table2.fk is NULL; pk t1c1 fk t2c1 2 b null null
  • 16. Join – Right Outer Join* SELECT * FROM Table2 LEFT JOIN Table1 ON Table2.fk = Table1.pk --------------------------- SELECT * FROM Table1 RIGHT JOIN Table2 ON Table1.pk = Table2.fk; Table2 pk t1c1 1 a 2 b fk t2c1 1 c 1 d 3 e pk t1c1 fk t2c1 1 a 1 c 1 a 1 d null null 3 e Table1 Table2 Table1 SQLite doesn’t support this RIGHT JOIN key word, but some DBMSs do (e.g. MySQL).
  • 17. Join - Right Outer Join With Exclusion* Table1 Table2 pk t1c1 1 a 2 b fk t2c1 1 c 1 d 3 e Table1 Table2 SELECT * FROM Table2 LEFT JOIN Table1 ON Table2.fk = Table1.pk WHERE Table1.pk is NULL; --------------------------- SELECT * FROM Table1 RIGHT JOIN Table2 ON Table1.pk = Table2.fk WHERE Table1.pk is NULL; pk t1c1 fk t2c1 2 b null null pk t1c1 fk t2c1 null null 3 e SQLite doesn’t support this RIGHT JOIN key word, but some DBMSs do (e.g. MySQL).
  • 18. Join – Full Outer Join pk t1c1 1 a 2 b fk t2c1 1 c 1 d 3 e Table1 Table2 SELECT pk, t1c1, fk, t2c1 FROM Table1 LEFT JOIN Table2 ON Table1.pk = Table2.fk UNION SELECT pk, t1c1, fk, t2c1 FROM Table2 LEFT JOIN Table1 ON Table2.fk = Table1.pk; Table1 Table2 pk t1c1 fk t2c1 1 a 1 c 1 a 1 d 2 b null null null null 3 e Note: Some DBMS support FULL OUTER JOIN keyword (e.g. MS SQL) so you don’t need to do it the above way.
  • 19. Join – Full Outer Join With Exclusion* pk t1c1 1 a 2 b fk t2c1 1 c 1 d 3 e Table1 Table2 SELECT pk, t1c1, fk, t2c1 FROM Table1 LEFT JOIN Table2 ON Table1.pk = Table2.fk WHERE Table2.fk is NULL UNION SELECT pk, t1c1, fk, t2c1 FROM Table2 LEFT JOIN Table1 ON Table2.fk = Table1.pk WHERE Table1.pk is NULL; Table1 Table2 pk t1c1 fk t2c1 2 b null null null null 3 e
  • 20. Others • CTE and temporary table • Self-join • CASE keyword • UNION keyword
  • 21. Many things we didn’t cover • Insert data (INSERT INTO…VALUES…; INSERT INTO…SELECT…FROM…) • Update data (UPDATE…SET…WHERE…) • Delete data (DELETE FROM…WHERE…) • Manipulate tables (CREATE TABLE…; ALTER TABLE…; DROP TABLE…) • Views (CREATE VIEW…AS…)
  • 22. The list goes on and on • Stored procedures • Functions • Transaction processing • Cursors (going through table row by row) • WINDOW function • Query optimization • DB permissions & security • … Ref. A stack overflow discussion on What is “Advanced” SQL.