0% found this document useful (0 votes)
78 views

SQL Master Document

The document contains examples of SQL queries on sample tables containing data about artists, songs, invoices, and other information. The queries demonstrate basic SELECT statements to retrieve data from tables, along with WHERE clauses to filter rows, ORDER BY to sort results, and TOP to limit the number of rows returned.

Uploaded by

JuliaGunevič
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
78 views

SQL Master Document

The document contains examples of SQL queries on sample tables containing data about artists, songs, invoices, and other information. The queries demonstrate basic SELECT statements to retrieve data from tables, along with WHERE clauses to filter rows, ORDER BY to sort results, and TOP to limit the number of rows returned.

Uploaded by

JuliaGunevič
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 122

SELECT

SELECT description +-------------------------------------+


FROM grid; | description |
|-------------------------------------|
| Severe Weather Thunderstorms |
| Severe Weather Thunderstorms |
| Severe Weather Thunderstorms |
| Fuel Supply Emergency Coal |
| Physical Attack Vandalism |
| Physical Attack Vandalism |
| Physical Attack Vandalism |
| Severe Weather Thunderstorms |
| Severe Weather Thunderstorms |
| Suspected Physical Attack |
| Physical Attack Vandalism |
| ... |
+-------------------------------------+
SELECT +-----------+----------------------+
artist_id, | artist_id | artist_name |
artist_name |-----------+----------------------|
FROM | 1 | AC/DC |
artist; | 2 | Accept |
| 3 | Aerosmith |
| 4 | Alanis Morissette |
| 5 | Alice In Chains |
| 6 | Antônio Carlos Jobim |
| 7 | Apocalyptica |
| 8 | Audioslave |
| 9 | BackBeat |
| 10 | Billy Cobham |
+-----------+----------------------+
SELECT description, event_year, event_date
FROM grid;

SELECT
description,
event_year,
event_date
FROM
grid;
-- Return 5 rows +-----------------------+
SELECT TOP(5) artist | artist |
FROM artists; |-----------------------|
| AC/DC |

-- Return top 5% of rows | Accept |


SELECT TOP(5) PERCENT artist | Aerosmith |
FROM artists; | Alanis Morissette |
| Alice in Chains |
+-----------------------+
-- Return all rows in the table -- Return unique rows
SELECT nerc_region SELECT DISTINCT nerc_region
FROM grid; FROM grid;

+-------------+ +-------------+
| nerc_region | | nerc_region |
|-------------| |-------------|
| RFC | | NPCC |
| RFC | | NPCC RFC |
| MRO | | RFC |
| MRO | | ERCOT |
| .... | | ... |
+-------------+ +-------------+
-- Return all rows
SELECT *
FROM grid;
SELECT demand_loss_mw AS lost_demand SELECT description AS cause_of_outage
FROM grid; FROM grid;

+-------------+ +------------------------------+
| lost_demand | | cause_of_outage |
|-------------| |------------------------------|
| 424 | | Severe Weather Thunderstorms |
| 217 | | Fuel Supply Emergency Coal |
| 494 | | Physical Attack Vandalism |
| 338 | | Suspected Physical Attack |
| 3900 | | Electrical System Islanding |
| 3300 | +------------------------------+
+-------------+
ORDER BY
SELECT TOP (10) prod_id, year_intro
FROM products
-- Order in ascending order
ORDER BY year_intro, product_id;

+------------+-------------+
| product_id | year_intro |
|------------+-------------|
| 36 | 1981 |
| 37 | 1982 |
| 38 | 1983 |
| 39 | 1984 |
| 40 | 1984 |
| 41 | 1984 |
| 52 | 1985 |
| 43 | 1986 |
| 44 | 1987 |
| 54 | 1987 |
+------------+-------------+
SELECT TOP (10) product_id, year_intro
FROM products
-- Order year_intro in descending order
ORDER BY year_intro DESC, product_id;

+------------+-------------+
| product_id | year_intro |
|------------+-------------|
| 158 | 2015 |
| 173 | 2015 |
| 170 | 2014 |
| 171 | 2014 |
| 172 | 2014 |
| 144 | 2013 |
| 146 | 2013 |
| 147 | 2013 |
| 148 | 2013 |
| 149 | 2013 |
+------------+-------------+
SELECT SELECT
TOP (10) channels, TOP (10) channels,
year_intro year_intro
FROM products FROM products
-- Order in different directions -- Both columns in descending order
ORDER BY ORDER BY
year_intro DESC, year_intro DESC,
channels; channels DESC;

+-------------+------------+ +-------------+------------+
| channels | year_intro | | channels | year_intro |
|-------------+------------| |-------------+------------|
| 35 | 2015 | | 74 | 2015 |
| 74 | 2015 | | 35 | 2015 |
| 29 | 2014 | | 48 | 2014 |
| 45 | 2014 | | 45 | 2014 |
| 48 | 2014 | | 29 | 2014 |
| 12 | 2013 | | 837 | 2013 |
| 13 | 2013 | | 642 | 2013 |
| 14 | 2013 | | 561 | 2013 |
| 22 | 2013 | | 491 | 2013 |
| 24 | 2013 | | 198 | 2013 |
+-------------+------------+ +-------------+------------+
SELECT city_id, name_alias SELECT city_id, name_alias
FROM invoice FROM invoice
-- Ordering text (Ascending order) -- Ordering text (Descending order)
ORDER BY name_alias; ORDER BY name_alias DESC;

+-------------+----------------+ +-------------+----------------+
| city_id | name_alias | | city_id | name_alias |
|-------------+----------------| |-------------+----------------|
| 48 | Amsterdam | | 33 | Yellowknife |
| 59 | Bangalore | | 32 | Winnipeg |
| 36 | Berlin | | 49 | Warsaw |
| 38 | Berlin | | 7 | Vienne |
| 42 | Bordeaux | | 15 | Vancouver |
| 23 | Boston | | 27 | Tucson |
| 13 | Brasília | | 29 | Toronto |
| 8 | Brussels | | 2 | Stuttgart |
| 45 | Budapest | | 51 | Stockholm |
| 56 | Buenos Aires | | 55 | Sydney |
+-------------+----------------+ +-------------+----------------+
SELECT customer_id, total
FROM invoice
WHERE total > 15;

+-------------+------------+
| customer_id | total |
|-------------+------------|
| 57 | 17.91 |
| 7 | 18.86 |
| 45 | 21.86 |
+-------------+------------+
-- Rows with points greater than 10
WHERE points > 10

-- Rows with points less than 10


WHERE points < 10

-- Rows with points greater than or equal to 10


WHERE points >= 10

-- Rows with points less than or equal to 20


WHERE points <= 20

-- Character data type


WHERE country = 'Spain'

-- Date data type


WHERE event_date = '2012-01-02'
SELECT customer_id, total
FROM invoice
-- Testing for non-equality
WHERE total <> 10;

+------------+-------+
| customerid | total |
|------------+-------|
| 2 | 1.98 |
| 4 | 3.96 |
| 8 | 5.94 |
| 14 | 8.91 |
| 23 | 13.86 |
| 37 | 0.99 |
+------------+-------+
SELECT customer_id, total SELECT customer_id, total
FROM invoice FROM invoice
WHERE total BETWEEN 20 AND 30; WHERE total NOT BETWEEN 20 AND 30;

+------------+--------+ +------------+--------+
| customerid | total | | customerid | total |
|------------+--------| |------------+--------|
| 45 | 21.86 | | 2 | 1.98 |
| 46 | 21.86 | | 4 | 3.96 |
| 26 | 23.86 | | 8 | 5.94 |
| 6 | 25.86 | | 14 | 8.91 |
+------------+--------+ +------------+--------+
SELECT SELECT
TOP (6) total, TOP (6) total,
billing_state billing_state
FROM invoice FROM invoice
WHERE billing_state IS NULL; WHERE billing_state IS NOT NULL;

+-------+---------------+ +--------+---------------+
| total | billing_state | | total | billing_state |
|-------+---------------| |--------+---------------|
| 1.98 | NULL | | 8.91 | AB |
| 3.96 | NULL | | 13.96 | MA |
| 5.94 | NULL | | 5.94 | Dublin |
| 0.99 | NULL | | 0.99 | CA |
| 1.98 | NULL | | 1.98 | WA |
| 1.98 | NULL | | 1.98 | CA |
+-------+---------------+ +-------+----------------+
SELECT song, artist SELECT song, artist
FROM songlist FROM songlist
WHERE WHERE
artist = 'AC/DC'; artist = 'AC/DC'
AND release_year < 1980;

+-------------------------+--------+
| song | artist | +-----------------------------+--------+
|-------------------------+--------| | song | artist |
| Baby, Please Don't Go | AC/DC | |-----------------------------+--------|
| Back In Black | AC/DC | | Dirty Deeds Done Dirt Cheap | AC/DC |
| Big Gun | AC/DC | | Highway To Hell | AC/DC |
| CAN'T STOP ROCK'N'ROLL | AC/DC | | It's A Long Way To The Top | AC/DC |
| Girls Got Rhythm | AC/DC | | Let There Be Rock | AC/DC |
| Hard As A Rock | AC/DC | | Night Prowler | AC/DC |
| Have a Drink On Me | AC/DC | | T.N.T. | AC/DC |
| Hells Bells | AC/DC | | Touch Too Much | AC/DC |
+-------------------------+--------+ | Whole Lotta Rosie | AC/DC |
+-----------------------------+--------+
SELECT * SELECT *
FROM songlist FROM songlist
WHERE WHERE
release_year = 1994 release_year = 1994
AND artist = 'Green Day'; AND artist = 'Green Day'
AND song = 'Basket Case';
SELECT
song,
artist,
release_year
FROM songlist
WHERE release_year = 1994;

+----------------------+---------------------+--------------+
| song | artist | release_year |
|----------------------+---------------------+---------------
| Black Hole Sun | Soundgarden | 1994 |
| Fell On Black Days | Soundgarden | 1994 |
| Spoonman | Soundgarden | 1994 |
| Big Empty | Stone Temple Pilots | 1994 |
| Interstate Love Song | Stone Temple Pilots | 1994 |
| Vasoline | Stone Temple Pilots | 1994 |
+----------------------+---------------------+--------------+
SELECT
song,
artist,
release_year
FROM songlist
WHERE
release_year = 1994
OR release_year > 2000;

+----------------------+---------------------+--------------+
| song | artist | release_year |
|----------------------+---------------------+---------------
| Doom And Gloom | Rolling Stones | 2012 |
| Remedy | Seether | 2005 |
| 45 | Shinedown | 2003 |
| Black Hole Sun | Soundgarden | 1994 |
| Fell On Black Days | Soundgarden | 1994 |
| Spoonman | Soundgarden | 1994 |
| It's Been Awhile | Staind | 2001 |
| Big Empty | Stone Temple Pilots | 1994 |
| Interstate Love Song | Stone Temple Pilots | 1994 |
| Vasoline | Stone Temple Pilots | 1994 |
+----------------------+---------------------+--------------+
SELECT song SELECT song
FROM songlist FROM songlist
WHERE WHERE
artist = 'Green Day' artist = 'Green Day'
AND release_year = 1994; AND release_year > 2000;

+--------------------+ +----------------------------+
| song | | song |
|--------------------| |----------------------------|
| Basket Case | | Boulevard Of Broken Dreams |
| Longview | | Holiday (Live) |
| When I Come Around | | Holiday |
+--------------------+ +----------------------------+
SELECT song +-------------------------------------+
FROM songlist | song |
WHERE |-------------------------------------|
artist = 'Green Day' | Doom And Gloom |
AND release_year = 1994 | Remedy |
OR release_year > 2000; | 45 |
| It's Been Awhile |
| Goodbye Daughters of the Revolution |
| Gold On The Ceiling |
| Lonely Boy |
| Seven Nation Army |
| Get Together |
| Vertigo |
| When I'm Gone |
| ... |
| ... |
+-------------------------------------+
SELECT * SELECT *
FROM songlist FROM songlist
WHERE WHERE
artist = 'Green Day' artist = 'Green Day'
AND release_year = 1994 AND release_year = 1994;
OR release_year > 2000;

SELECT *
FROM songlist
WHERE
release_year > 2000;
SELECT song +--------------------------------------+
FROM songlist | song |
WHERE |--------------------------------------|
artist = 'Green Day' | Basket Case |
AND ( | Boulevard Of Broken Dreams |
release_year = 1994 | Holiday (Live) |
OR release_year > 2000 | Holiday / Boulevard of Broken Dreams |
); | Longview |
| When I Come Around |
+--------------------------------------+

SELECT song
FROM songlist
WHERE
(
artist = 'Green Day'
AND release_year = 1994
)
OR (
artist = 'Green Day'
AND release_year > 2000
);
SELECT song, artist SELECT song, release_year
FROM songlist FROM songlist
WHERE WHERE
artist IN ('Van Halen', 'ZZ Top') release_year IN (1985, 1991, 1992);
ORDER BY song;

+------------------------+--------------+
+----------------------------------+-----------+ | song | release_year |
| song | artist | |------------------------+--------------|
|----------------------------------+-----------| | Addicted to Love | 1985 |
| (Oh) Pretty Woman | Van Halen | | Don't You | 1985 |
| 1984/jump | Van Halen | | Come As You Are | 1991 |
| A Fool for Your Stockings | ZZ Top | | Money for Nothing | 1985 |
| Ain't Talkin' 'bout Love | Van Halen | | Walk of Life | 1985 |
| And the Cradle Will Rock... | Van Halen | | Man On the Moon | 1992 |
| Arrested For Driving While Blind | ZZ Top | | Breaking the Girl | 1992 |
| Atomic Punk | Van Halen | | You Belong to the City | 1985 |
+----------------------------------+-----------+ | Enter Sandman | 1991 |
| In Bloom | 1991 |
+------------------------+--------------+
SELECT song SELECT artist
FROM songlist FROM songlist
WHERE song LIKE 'a%'; WHERE artist LIKE 'f%';

+------------------------+ +---------------+
| song | | artist |
|------------------------| |---------------|
| Addicted to Love | | Faces |
| Ain't Too Proud to Beg | | Faith No More |
+------------------------+ +---------------+
SUM()

SELECT
SUM(affected_customers) AS total_affected
FROM grid;

+----------------+
| total_affected |
|----------------|
| 70143996 |
+----------------+
SELECT
SUM(affected_customers) AS total_affected
FROM grid;

SELECT
SUM (affected_customers) AS total_affected,
SUM (demand_loss_mw) AS total_loss
FROM grid;

+----------------+------------+
| total_affected | total_loss |
|----------------+------------|
| 70143996 | 177888 |
+----------------+------------+
SELECT
SUM (affected_customers) AS total_affected,
(demand_loss_mw) AS total_loss
FROM grid;

Msg 8120, Level 16, State 1, Line 6


Column 'grid_demand_loss_mw' is invalid in the select list because
it is not contained in either an aggregate function or the GROUP BY clause.
SELECT SELECT
SUM (affected_customers), SUM (affected_customers) AS total_affected,
SUM (demand_loss_mw) SUM (demand_loss_mw) AS total_loss
FROM grid; FROM grid;

+------------------+------------------+ +----------------+------------+
| (No column name) | (No column name) | | total_affected | total_loss |
|------------------+------------------| |----------------+------------|
| 70143996 | 177888 | | 70143996 | 177888 |
+------------------+------------------+ +----------------+------------+
SELECT
COUNT(affected_customers) AS count_affected
FROM grid;

+----------------+
| count_affected |
|----------------|
| 807 |
+----------------+
SELECT
COUNT(DISTINCT affected_customers) AS unique_count_affected
FROM grid;

+-----------------------+
| unique_count_affected |
|-----------------------|
| 280 |
+-----------------------+
SELECT SELECT
MIN(affected_customers) AS min_affected_customers MIN(affected_customers) AS min_affected_customers
FROM grid; FROM grid
WHERE affected_customers > 0;

+------------------------+
| min_affected_customers | +------------------------+
|------------------------| | min_affected_customers |
| 0 | |------------------------|
+------------------------+ | 1 |
+------------------------+
SELECT
MAX(affected_customers) AS max_affected_customers
FROM grid;

+------------------------+
| max_affected_customers |
|------------------------|
| 4645572 |
+------------------------+
SELECT
AVG(affected_customers) AS avg_affected_customers
FROM grid;

+------------------------+
| avg_affected_customers |
|------------------------|
| 86919 |
+------------------------+
SELECT
description,
LEN(description) AS description_length
FROM grid;

+----------------+-----------------------------------+
| description | description_length |
|-------------------------------+--------------------|
| Severe Weather Thunderstorms | 29 |
| Severe Weather Thunderstorms | 29 |
| Severe Weather Thunderstorms | 29 |
| Fuel Supply Emergency Coal | 27 |
| Physical Attack Vandalism | 26 |
+----------------+-----------------------------------+
SELECT
description,
LEFT(description, 20) AS first_20_left
FROM grid;

+-------------------------------+-----------------------+
| description | first_20_left |
|-------------------------------+-----------------------|
| Severe Weather Thunderstorms | Severe Weather Thun |
| Severe Weather Thunderstorms | Severe Weather Thun |
| Severe Weather Thunderstorms | Severe Weather Thun |
| Fuel Supply Emergency Coal | Fuel Supply Emergenc |
| Physical Attack Vandalism | Physical Attack Van |
+-------------------------------+-----------------------+
SELECT
description,
RIGHT(description, 20) AS last_20
FROM grid;

+-------------------------------+----------------------+
| description | last_20 |
|-------------------------------+----------------------|
| Severe Weather Thunderstorms | ather Thunderstorms |
| Severe Weather Thunderstorms | ather Thunderstorms |
| Severe Weather Thunderstorms | ather Thunderstorms |
| Fuel Supply Emergency Coal | pply Emergency Coal |
| Physical Attack Vandalism | al Attack Vandalism |
+-------------------------------+----------------------+
SELECT
CHARINDEX ('_', url) AS char_location,
url
FROM courses;

+---------------+-------------------------------------+
| char_location | url |
|---------------+-------------------------------------|
| 34 | datacamp.com/courses/introduction_ |
| 34 | datacamp.com/courses/intermediate_ |
| 29 | datacamp.com/courses/writing_ |
| 29 | datacamp.com/courses/joining_ |
| 27 | datacamp.com/courses/intro_ |
+---------------+-------------------------------------+
SELECT
SUBSTRING(url, 12, 12) AS target_section,
url
FROM courses;

+------------------+----------------------------------+
| target_section | url |
+------------------+----------------------------------+
| datacamp.com |https//www.datacamp.com/courses |
+------------------+----------------------------------+
SELECT
TOP(5) REPLACE(url, '_', '-') AS replace_with_hyphen
FROM courses;

+-------------------------------------+
| replace_with_hyphen |
+-------------------------------------|
| datacamp.com/courses/introduction- |
| datacamp.com/courses/intermediate- |
| datacamp.com/courses/writing- |
| datacamp.com/courses/joining- |
| datacamp.com/courses/intro- |
+-------------------------------------+
SELECT
SUM(demand_loss_mw) AS lost_demand
FROM grid;

+-------------+
| lost_demand |
+-------------+
| 177888 |
+-------------+
SELECT
SUM(demand_loss_mw) AS lost_demand,
description
FROM grid;

Msg 8120, Level 16, State 1, Line 1


Column 'grid.description' is invalid in the select list because it is not contained in
either an aggregate function or the GROUP BY clause.
SELECT
SUM(demand_loss_mw) AS lost_demand,
description
FROM grid
GROUP BY description;

+----------- -+-------------------------------------------------------+
| lost_demand | description |
+-------------+-------------------------------------------------------+
| NULL | Actual Physical Attack |
| NULL | Cold Weather Event |
| NULL | Cyber Event with Potential to Cause Impact |
| 40 | Distribution Interruption |
| 2 | Distribution System Interruption |
| NULL | Earthquake |
| NULL | Electrical Fault at Generator |
| 338 | Electrical System Islanding |
| 24514 | Electrical System Separation Islanding |
| 15 | Electrical System Separation Islanding Severe Weather |
+-------------+-------------------------------------------------------+
SELECT
SUM(demand_loss_mw) AS lost_demand,
description
FROM grid
WHERE
description LIKE '%storm'
AND demand_loss_mw IS NOT NULL
GROUP BY description;

+----------- -+--------------------------------------------+
| lost_demand | description |
|-------------+--------------------------------------------|
| 996 | Ice Storm |
| 420 | Load Shed Severe Weather Lightning Storm |
| 332 | Major Storm |
| 3 | Severe Weather Thunderstorm |
| 413 | Severe Weather Wind Storm |
| 4171 | Severe Weather Winter Storm |
| 1352 | Winter Storm |
+-------------+--------------------------------------------+
SELECT

WHERE

GROUP BY
SELECT
SUM(demand_loss_mw) AS lost_demand,
description
FROM grid
WHERE
description LIKE '%storm'
AND demand_loss_mw IS NOT NULL
GROUP BY description;

+----------- -+--------------------------------------------+
| lost_demand | description |
+-------------+--------------------------------------------+
| 996 | Ice Storm |
| 420 | Load Shed Severe Weather Lightning Storm |
| 332 | Major Storm |
| 3 | Severe Weather Thunderstorm |
| 413 | Severe Weather Wind Storm |
| 4171 | Severe Weather Winter Storm |
| 1352 | Winter Storm |
+-------------+--------------------------------------------+
SELECT
SUM(demand_loss_mw) AS lost_demand,
description
FROM grid
WHERE
description LIKE '%storm'
AND demand_loss_mw IS NOT NULL
GROUP BY description
HAVING SUM(demand_loss_mw) > 1000;

+----------- -+--------------------------------------------+
| lost_demand | description |
|-------------+--------------------------------------------|
| 4171 | Severe Weather Winter Storm |
| 1352 | Winter Storm |
+-------------+--------------------------------------------+
GROUP BY

WHERE

HAVING GROUP BY
+-----------+-------------------+
| artist_id | name |
|-----------+-------------------|
| 1 | AC/DC |
| 2 | Accept |
| 3 | Aerosmith |
| 4 | Alanis Morissette |
| 5 | Alice In Chains |
+-----------+-------------------+

artist_id
+----------+-------------------------+-----------+
| album_id | title | artist_id |
|----------+-------------------------+-----------|
| 1 | For Those About To Rock | 1 |
| 2 | Balls to the Wall | 2 |
| 3 | Restless and Wild | 2 |
| 4 | Let There Be Rock | 1 |
| 5 | Big Ones | 3 |
+----------+-------------------------+-----------+

album_id

artist_id
artist album

+-----------+-------------------+ +----------+-------------------------+-----------+
| artist_id | name | | album_id | title | artist_id |
|-----------+-------------------| |----------+-------------------------+-----------|
| 1 | AC/DC | | 1 | For Those About To Rock | 1 |
| 2 | Accept | | 2 | Balls to the Wall | 2 |
| 3 | Aerosmith | | 3 | Restless and Wild | 2 |
| 4 | Alanis Morissette | | 4 | Let There Be Rock | 1 |
| 5 | Alice In Chains | | 5 | Big Ones | 3 |
+-----------+-------------------+ +----------+-------------------------+-----------+

artist_id artist
artist album

+-----------+-------------------+ +----------+-------------------------+-----------+
| artist_id | name | | album_id | title | artist_id |
|-----------+-------------------| |----------+-------------------------+-----------|
| 1 | AC/DC | | 1 | For Those About To Rock | 1 |
| 2 | Accept | | 2 | Balls to the Wall | 2 |
| 3 | Aerosmith | | 3 | Restless and Wild | 2 |
| 4 | Alanis Morissette | | 4 | Let There Be Rock | 1 |
| 5 | Alice In Chains | | 5 | Big Ones | 3 |
+-----------+-------------------+ +----------+-------------------------+-----------+

artist_id artist_id
+----------+-------------------------+-----------+-------------+
| album_id | title | artist_id | artist_name |
|----------+---------------------------------------+-----------|
| 1 | For Those About To Rock | 1 | AC/DC |
| 4 | Let There Be Rock | 1 | AC/DC |
+----------+-------------------------+-----------+-------------|

album

artist

artist_id
SELECT
album_id,
title,
album.artist_id,
name AS artist_name
FROM album
INNER JOIN artist ON artist.artist_id = album.artist_id
WHERE album.artist_id = 1;

+----------+-------------------------+-----------+-------------+
| album_id | title | artist_id | artist_name |
|----------+---------------------------------------+-----------|
| 1 | For Those About To Rock | 1 | AC/DC |
| 4 | Let There Be Rock | 1 | AC/DC |
+----------+-------------------------+-----------+-------------|
SELECT
table_A.columnX,
table_A.columnY,
table_B.columnZ
FROM table_A
INNER JOIN table_B ON table_A.foreign_key = table_B.primary_key;
SELECT
album_id,
title,
album.artist_id,
name AS artist_name
FROM album
INNER JOIN artist on artist.artist_id = album.artist_id;

+----------+---------------------------------------+-----------+
| album_id | title | artist_id | artist_name |
|----------+---------------------------------------+-----------|
| 1 | For Those About To Rock | 1 | AC/DC |
| 4 | Let There Be Rock | 1 | AC/DC |
| 2 | Balls To The Wall | 2 | Accept |
| 3 | Restless and Wild | 2 | Accept |
+----------+---------------------------------------+-----------+

album artist
SELECT
table_A.columnX,
table_A.columnY,
table_B.columnZ, table_C columnW
FROM table_A
INNER JOIN table_B ON table_B.foreign_key = table_A.primary_key
INNER JOIN table_C ON table_C.foreign_key = table_B.primary_key;
LEFT RIGHT
LEFT RIGHT
+------------+----------+ +------------+------------+
| Patient_ID | Admitted | | Patient_ID | Discharged |
|------------+----------| |------------+------------|
| 1 | 1 | | 1 | 1 |
| 2 | 1 | | 3 | 1 |
| 3 | 1 | | 4 | 1 |
| 4 | 1 | +------------+------------+
| 5 | 1 |
+------------+----------+

+------------+----------+------------| +------------+----------+------------|
| Patient_ID | Admitted | Discharged | | Patient_ID | Admitted | Discharged |
|------------+----------|------------| |------------+----------|------------|
| 1 | 1 | 1 | | 1 | 1 | 1 |
| 3 | 1 | 1 | | 2 | 1 | NULL |
| 4 | 1 | 1 | | 3 | 1 | 1 |
+------------+----------+------------+ | 4 | 1 | 1 |
| 5 | 1 | NULL |
+------------+----------+------------+
SELECT
Admitted.Patient_ID,
Admitted,
Discharged
FROM Admitted
LEFT JOIN Discharged ON Discharged.Patient_ID = Admitted.Patient_ID;
SELECT
Admitted.Patient_ID,
Admitted,
Discharged
FROM Admitted
LEFT JOIN Discharged ON Discharged.Patient_ID = Admitted.Patient_ID;

+------------+----------+------------|
| Patient_ID | Admitted | Discharged |
|------------+----------|------------|
| 1 | 1 | 1 |
| 2 | 1 | NULL |
| 3 | 1 | 1 |
| 4 | 1 | 1 |
| 5 | 1 | NULL |
+------------+----------+------------+
SELECT
Admitted.Patient_ID,
Admitted,
Discharged
FROM Discharged
RIGHT JOIN Admitted ON Admitted.Patient_ID = Discharged.Patient_ID;
SELECT
Admitted.Patient_ID,
Admitted,
Discharged
FROM Discharged
RIGHT JOIN Admitted ON Admitted.Patient_ID = Discharged.Patient_ID;

+------------+----------+------------|
| Patient_ID | Admitted | Discharged |
|------------+----------|------------|
| 1 | 1 | 1 |
| 2 | 1 | NULL |
| 3 | 1 | 1 |
| 4 | 1 | 1 |
| 5 | 1 | NULL |
+------------+----------+------------+
INNER JOIN

LEFT JOIN RIGHT JOIN

NULL

LEFT JOIN RIGHT JOIN


SELECT SELECT
album_id, album_id,
title, title,
artist_id artist_id
FROM album FROM album
WHERE artist_id IN (1, 3) WHERE artist_id IN (1, 4, 5)

+------------+-------------------------+------------| +------------+-------------------------+------------|
| album_id | title | artist_id | | album_id | title | artist_id |
|------------+-------------------------|------------| |------------+-------------------------|------------|
| 1 | For Those About To Rock | 1 | | 1 | For Those About To Rock | 1 |
| 4 | Let There Be Rock | 1 | | 4 | Let There Be Rock | 1 |
| 5 | Big Ones | 3 | | 6 | Jagged Little Pill | 4 |
+------------+----------+---------------------------+ | 7 | Facelift | 5 |
+------------+-------------------------+------------+
SELECT +------------+-------------------------+------------|
album_id, | album_id | title | artist_id |
title, |------------+-------------------------|------------|
artist_id | 1 | For Those About To Rock | 1 |
FROM album | 4 | Let There Be Rock | 1 |
WHERE artist_id IN (1, 3) | 5 | Big Ones | 3 |
UNION | 6 | Jagged Little Pill | 4 |
SELECT | 7 | Facelift | 5 |
album_id, +------------+-------------------------+------------+
title,
artist_id
FROM album
WHERE artist_id IN (1, 4, 5);
SELECT +------------+-------------------------+------------|
album_id, | album_id | title | artist_id |
title, |------------+-------------------------|------------|
artist_id | 1 | For Those About To Rock | 1 |
FROM album | 4 | Let There Be Rock | 1 |
WHERE artist_id IN (1, 3) | 5 | Big Ones | 3 |
UNION ALL | 1 | For Those About To Rock | 1 |
SELECT | 4 | Let There Be Rock | 1 |
album_id, | 6 | Jagged Little Pill | 4 |
title, | 7 | Facelift | 5 |
artist_id +------------+-------------------------+------------+
FROM album
WHERE artist_id IN (1, 4, 5);
SELECT +------------+-------------------------+------------|
album_id AS ALBUM_ID, | ALBUM_ID | ALBUM_TITLE | ARTIST_ID |
title AS ALBUM_TITLE, |------------+-------------------------|------------|
artist_id AS ARTIST_ID | 1 | For Those About To Rock | 1 |
FROM album | 4 | Let There Be Rock | 1 |
WHERE artist_id IN(1, 3) | 5 | Big Ones | 3 |
UNION ALL | 1 | For Those About To Rock | 1 |
SELECT | 4 | Let There Be Rock | 1 |
album_id AS ALBUM_ID, | 6 | Jagged Little Pill | 4 |
title AS ALBUM_TITLE, | 7 | Facelift | 5 |
artist_id AS ARTIST_ID +------------+-------------------------+------------+
FROM album
WHERE artist_id IN(1, 4, 5)
UNION UNION ALL

UNION

UNION ALL
SELECT
CREATE TABLE unique table name

CREATE TABLE test_table(


test_date date,
test_name varchar(20),
test_int int
)
YYYY-MM-DD YYYY-MM-DD hh:mm:ss

1 TRUE 0 FALSE NULL

char varchar nvarchar


INSERT INTO table_name

INSERT INTO table_name (col1, col2, col3)

INSERT INTO table_name (col1, col2, col3)


VALUES
('value1', 'value2', value3)
INSERT INTO table_name (col1, col2, col3)
SELECT
column1,
column2,
column3
FROM other_table
WHERE
-- conditions apply

SELECT *
UPDATE table
SET column = value
WHERE
-- Condition(s);

WHERE

UPDATE table
SET
column1 = value1,
column2 = value2
WHERE
-- Condition(s);
DELETE
FROM table
WHERE
-- Conditions

TRUNCATE TABLE table_name


SELECT *
FROM artist
WHERE name = 'AC/DC'; SELECT *
FROM artist
WHERE name = @my_artist;

SELECT *
FROM artist
WHERE name = 'U2';
DECLARE @

DECLARE @test_int INT

DECLARE @my_artist VARCHAR(100)


DECLARE @test_int INT

SET @test_int = 5

@my_artist

DECLARE @my_artist varchar(100)

SET @my_artist = 'AC/DC'


DECLARE @my_artist varchar(100)
DECLARE @my_album varchar(300);

SET @my_artist = 'AC/DC'


SET @my_album = 'Let There Be Rock' ;

SELECT --
FROM --
WHERE artist = @my_artist
AND album = @my_album;

DECLARE @my_artist varchar(100)


DECLARE @my_album varchar(300);

SET @my_artist = 'U2'


SET @my_album = 'Pop' ;

SELECT --
FROM --
WHERE artist = @my_artist
AND album = @my_album;
SELECT
col1,
col2,
col3 INTO #my_temp_table
FROM my_existing_table
WHERE
-- Conditions

#my_temp_table

-- Remove table manually


DROP TABLE #my_temp_table
SELECT

ORDER BY

WHERE HAVING

SUM COUNT MIN MAX AVG

LEFT RIGHT LEN SUBSTRING


GROUP BY

INNER JOIN LEFT JOIN RIGHT JOIN

UNION UNION ALL

You might also like