SlideShare una empresa de Scribd logo
1 de 8
Descargar para leer sin conexión
Home Contents




Joining tables

In this part of the SQLite tutorial, we will join tables in SQLite.


The real power and benefits from relational databases come from joining tables. The SQL JOIN clause

combines records from two or more tables in a database. There are basically two types of joins. INNER

and OUTER.


In this part of the tutorial, we will work with Customers and Reservations tables.




  sqlite> SELECT * FROM Customers;




  CustomerId      Name




  ----------      -----------




  1               Paul Novak




  2               Terry Neils




  3               Jack Fonda




  4               Tom Willis


Values from the Customers table.




  sqlite> SELECT * FROM Reservations;




  Id   CustomerId        Day
--     ----------      ----------




  1      1               2009-22-11




  2      2               2009-28-11




  3      2               2009-29-11




  4      1               2009-29-11




  5      3               2009-02-12


Values from the Reservations tables.




Inner joins

The inner join is the most common type of joins. It is the default join also. The inner join selects only

those records from database tables that have matching values. We have three types of INNER JOINS.

INNER JOIN, NATURAL INNER JOIN and CROSS INNER JOIN. The INNER keyword can be omitted.




INNER JOIN



  sqlite> SELECT Name, Day FROM Customers AS C JOIN Reservations




                                  AS R ON C.CustomerId=R.CustomerId;




  Name             Day




  -----------      ----------




  Paul Novak       2009-22-11
Terry Neils     2009-28-11




  Terry Neils     2009-29-11




  Paul Novak      2009-29-11




  Jack Fonda      2009-02-12




In this SELECT statement, we have selected all customers, that have made some reservations. Note,

that we have omitted the INNER keyword.


The statement is equivalent to the following one:




  sqlite> SELECT Name, Day FROM Customers, Reservations




                                WHERE Customers.CustomerId = Reservations.CustomerId;




  Name            Day




  -----------     ----------




  Paul Novak      2009-22-11




  Terry Neils     2009-28-11




  Terry Neils     2009-29-11




  Paul Novak      2009-29-11
Jack Fonda       2009-02-12


We get the same data.




NATURAL INNER JOIN

The NATURAL INNER JOIN automatically uses all the matching column names for the join. In our

tables, we have a column named CustomerId in both tables.




  sqlite> SELECT Name, Day FROM Customers NATURAL JOIN Reservations;




  Name             Day




  -----------      ----------




  Paul Novak       2009-22-11




  Terry Neils      2009-28-11




  Terry Neils      2009-29-11




  Paul Novak       2009-29-11




  Jack Fonda       2009-02-12


We get the same data. The SQL statement is less verbose.




CROSS INNER JOIN

The CROSS INNER JOIN combines all records from one table with all records from another table. This

type of join has little practical value. It is also called a cartesian product of records.
sqlite> SELECT Name, Day FROM Customers CROSS JOIN Reservations;




  Name           Day




  -----------    ----------




  Paul Novak     2009-22-11




  Paul Novak     2009-28-11




  Paul Novak     2009-29-11




  Paul Novak     2009-29-11




  Paul Novak     2009-02-12




  Terry Neils    2009-22-11




  Terry Neils    2009-28-11




  Terry Neils    2009-29-11




  Terry Neils    2009-29-11




  Terry Neils    2009-02-12




  ...


The same result can be achieved with the following SQL statement:
SELECT Name, Day FROM Customers, Reservations;




Outer joins

An outer join does not require each record in the two joined tables to have a matching record. There

are three types of outer joins. Left outer joins, right outer joins, and full outer joins. SQLite only

supports left outer joins.




LEFT OUTER JOIN

The LEFT OUTER JOIN returns all values from the left table, even if there is no match with the right

table. It such rows, there will be NULL values. In other words, left outer join returns all the values from

the left table, plus matched values from the right table. Note, that the OUTER keyword can be omitted.




  sqlite> SELECT Name, Day FROM Customers LEFT JOIN Reservations




                                   ON Customers.CustomerID=Reservations.CustomerId;




  Name             Day




  -----------      ----------




  Paul Novak       2009-22-11




  Paul Novak       2009-29-11




  Terry Neils      2009-28-11




  Terry Neils      2009-29-11




  Jack Fonda       2009-02-12
Tom Willis      NULL


Here we have all customers with their reservations, plus a customer, who has no reservation. There is

NULL value in his row.


We can use the USING keyword to achieve the same result. The SQL statement will be less verbose.




  sqlite> SELECT Name, Day FROM Customers LEFT JOIN Reservations USING (CustomerId);




  Name            Day




  -----------     ----------




  Paul Novak      2009-22-11




  Paul Novak      2009-29-11




  Terry Neils     2009-28-11




  Terry Neils     2009-29-11




  Jack Fonda      2009-02-12




  Tom Willis      NULL


Same result, with shorter SQL statement.




NATURAL LEFT OUTER JOIN

The NATURAL LEFT OUTER JOIN automatically uses all the matching column names for the join.




  sqlite> SELECT Name, Day FROM Customers NATURAL LEFT OUTER JOIN Reservations;
Name             Day




  -----------      ----------




  Paul Novak       2009-22-11




  Paul Novak       2009-29-11




  Terry Neils      2009-28-11




  Terry Neils      2009-29-11




  Jack Fonda       2009-02-12




  Tom Willis       NULL


Same result, but with fewer key strokes.


In this part of the SQLite tutorial, we were joining tables.

Más contenido relacionado

Similar a Joining tables

Sq lite functions
Sq lite functionsSq lite functions
Sq lite functions
punu_82
 
May Woo Bi Portfolio
May Woo Bi PortfolioMay Woo Bi Portfolio
May Woo Bi Portfolio
maywoo
 
The sqlite3 commnad line tool
The sqlite3 commnad line toolThe sqlite3 commnad line tool
The sqlite3 commnad line tool
punu_82
 
The select statement
The select statementThe select statement
The select statement
punu_82
 
Oracle 10g Performance: chapter 00 sampling
Oracle 10g Performance: chapter 00 samplingOracle 10g Performance: chapter 00 sampling
Oracle 10g Performance: chapter 00 sampling
Kyle Hailey
 

Similar a Joining tables (20)

Assignment#06
Assignment#06Assignment#06
Assignment#06
 
Sq lite functions
Sq lite functionsSq lite functions
Sq lite functions
 
May Woo Bi Portfolio
May Woo Bi PortfolioMay Woo Bi Portfolio
May Woo Bi Portfolio
 
SQL
SQLSQL
SQL
 
02 Writing Executable Statments
02 Writing Executable Statments02 Writing Executable Statments
02 Writing Executable Statments
 
Data Warehouse , Data Cube Computation
Data Warehouse   , Data Cube ComputationData Warehouse   , Data Cube Computation
Data Warehouse , Data Cube Computation
 
chapter 8 SQL.ppt
chapter 8 SQL.pptchapter 8 SQL.ppt
chapter 8 SQL.ppt
 
Sql Server 2000
Sql Server 2000Sql Server 2000
Sql Server 2000
 
COIS 420 - Practice01
COIS 420 - Practice01COIS 420 - Practice01
COIS 420 - Practice01
 
Oracle Database features every developer should know about
Oracle Database features every developer should know aboutOracle Database features every developer should know about
Oracle Database features every developer should know about
 
Les01.ppt
Les01.pptLes01.ppt
Les01.ppt
 
Les01.pptx
Les01.pptxLes01.pptx
Les01.pptx
 
7. Nested Subqueries.pdf
7. Nested Subqueries.pdf7. Nested Subqueries.pdf
7. Nested Subqueries.pdf
 
Sql queries
Sql queriesSql queries
Sql queries
 
The sqlite3 commnad line tool
The sqlite3 commnad line toolThe sqlite3 commnad line tool
The sqlite3 commnad line tool
 
Sql statements function join
Sql statements function joinSql statements function join
Sql statements function join
 
5 Cool Things About SQL
5 Cool Things About SQL5 Cool Things About SQL
5 Cool Things About SQL
 
The select statement
The select statementThe select statement
The select statement
 
Oracle 10g Performance: chapter 00 sampling
Oracle 10g Performance: chapter 00 samplingOracle 10g Performance: chapter 00 sampling
Oracle 10g Performance: chapter 00 sampling
 
Constraints constraints of oracle data base management systems
Constraints  constraints of oracle data base management systemsConstraints  constraints of oracle data base management systems
Constraints constraints of oracle data base management systems
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

Joining tables

  • 1. Home Contents Joining tables In this part of the SQLite tutorial, we will join tables in SQLite. The real power and benefits from relational databases come from joining tables. The SQL JOIN clause combines records from two or more tables in a database. There are basically two types of joins. INNER and OUTER. In this part of the tutorial, we will work with Customers and Reservations tables. sqlite> SELECT * FROM Customers; CustomerId Name ---------- ----------- 1 Paul Novak 2 Terry Neils 3 Jack Fonda 4 Tom Willis Values from the Customers table. sqlite> SELECT * FROM Reservations; Id CustomerId Day
  • 2. -- ---------- ---------- 1 1 2009-22-11 2 2 2009-28-11 3 2 2009-29-11 4 1 2009-29-11 5 3 2009-02-12 Values from the Reservations tables. Inner joins The inner join is the most common type of joins. It is the default join also. The inner join selects only those records from database tables that have matching values. We have three types of INNER JOINS. INNER JOIN, NATURAL INNER JOIN and CROSS INNER JOIN. The INNER keyword can be omitted. INNER JOIN sqlite> SELECT Name, Day FROM Customers AS C JOIN Reservations AS R ON C.CustomerId=R.CustomerId; Name Day ----------- ---------- Paul Novak 2009-22-11
  • 3. Terry Neils 2009-28-11 Terry Neils 2009-29-11 Paul Novak 2009-29-11 Jack Fonda 2009-02-12 In this SELECT statement, we have selected all customers, that have made some reservations. Note, that we have omitted the INNER keyword. The statement is equivalent to the following one: sqlite> SELECT Name, Day FROM Customers, Reservations WHERE Customers.CustomerId = Reservations.CustomerId; Name Day ----------- ---------- Paul Novak 2009-22-11 Terry Neils 2009-28-11 Terry Neils 2009-29-11 Paul Novak 2009-29-11
  • 4. Jack Fonda 2009-02-12 We get the same data. NATURAL INNER JOIN The NATURAL INNER JOIN automatically uses all the matching column names for the join. In our tables, we have a column named CustomerId in both tables. sqlite> SELECT Name, Day FROM Customers NATURAL JOIN Reservations; Name Day ----------- ---------- Paul Novak 2009-22-11 Terry Neils 2009-28-11 Terry Neils 2009-29-11 Paul Novak 2009-29-11 Jack Fonda 2009-02-12 We get the same data. The SQL statement is less verbose. CROSS INNER JOIN The CROSS INNER JOIN combines all records from one table with all records from another table. This type of join has little practical value. It is also called a cartesian product of records.
  • 5. sqlite> SELECT Name, Day FROM Customers CROSS JOIN Reservations; Name Day ----------- ---------- Paul Novak 2009-22-11 Paul Novak 2009-28-11 Paul Novak 2009-29-11 Paul Novak 2009-29-11 Paul Novak 2009-02-12 Terry Neils 2009-22-11 Terry Neils 2009-28-11 Terry Neils 2009-29-11 Terry Neils 2009-29-11 Terry Neils 2009-02-12 ... The same result can be achieved with the following SQL statement:
  • 6. SELECT Name, Day FROM Customers, Reservations; Outer joins An outer join does not require each record in the two joined tables to have a matching record. There are three types of outer joins. Left outer joins, right outer joins, and full outer joins. SQLite only supports left outer joins. LEFT OUTER JOIN The LEFT OUTER JOIN returns all values from the left table, even if there is no match with the right table. It such rows, there will be NULL values. In other words, left outer join returns all the values from the left table, plus matched values from the right table. Note, that the OUTER keyword can be omitted. sqlite> SELECT Name, Day FROM Customers LEFT JOIN Reservations ON Customers.CustomerID=Reservations.CustomerId; Name Day ----------- ---------- Paul Novak 2009-22-11 Paul Novak 2009-29-11 Terry Neils 2009-28-11 Terry Neils 2009-29-11 Jack Fonda 2009-02-12
  • 7. Tom Willis NULL Here we have all customers with their reservations, plus a customer, who has no reservation. There is NULL value in his row. We can use the USING keyword to achieve the same result. The SQL statement will be less verbose. sqlite> SELECT Name, Day FROM Customers LEFT JOIN Reservations USING (CustomerId); Name Day ----------- ---------- Paul Novak 2009-22-11 Paul Novak 2009-29-11 Terry Neils 2009-28-11 Terry Neils 2009-29-11 Jack Fonda 2009-02-12 Tom Willis NULL Same result, with shorter SQL statement. NATURAL LEFT OUTER JOIN The NATURAL LEFT OUTER JOIN automatically uses all the matching column names for the join. sqlite> SELECT Name, Day FROM Customers NATURAL LEFT OUTER JOIN Reservations;
  • 8. Name Day ----------- ---------- Paul Novak 2009-22-11 Paul Novak 2009-29-11 Terry Neils 2009-28-11 Terry Neils 2009-29-11 Jack Fonda 2009-02-12 Tom Willis NULL Same result, but with fewer key strokes. In this part of the SQLite tutorial, we were joining tables.