86
Web Programming with Python and JavaScript

Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

Web Programming with Python and JavaScript

Page 2: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

SQL, Models, and Migrations

Page 3: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

Data

Page 4: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

origin destination duration

New York London 415

Shanghai Paris 760

Istanbul Tokyo 700

New York Paris 435

Moscow Paris 245

Lima New York 455

Page 5: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

SQL

Page 6: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

Database Management Systems

• MySQL

• PostgreSQL

• SQLite

• ...

Page 7: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

SQLite Types

• TEXT

• NUMERIC

• INTEGER

• REAL

• BLOB

Page 8: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

MySQL Types

• CHAR(size) • VARCHAR(size) • SMALLINT • INT • BIGINT • FLOAT • DOUBLE • ...

Page 9: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

CREATE TABLE

Page 10: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

CREATE TABLE flights ( id INTEGER PRIMARY KEY AUTOINCREMENT, origin TEXT NOT NULL, destination TEXT NOT NULL, duration INTEGER NOT NULL );

Page 11: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

CREATE TABLE flights ( id INTEGER PRIMARY KEY AUTOINCREMENT, origin TEXT NOT NULL, destination TEXT NOT NULL, duration INTEGER NOT NULL );

Page 12: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

CREATE TABLE flights ( id INTEGER PRIMARY KEY AUTOINCREMENT, origin TEXT NOT NULL, destination TEXT NOT NULL, duration INTEGER NOT NULL );

Page 13: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

CREATE TABLE flights ( id INTEGER PRIMARY KEY AUTOINCREMENT, origin TEXT NOT NULL, destination TEXT NOT NULL, duration INTEGER NOT NULL );

Page 14: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

CREATE TABLE flights ( id INTEGER PRIMARY KEY AUTOINCREMENT, origin TEXT NOT NULL, destination TEXT NOT NULL, duration INTEGER NOT NULL );

Page 15: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

CREATE TABLE flights ( id INTEGER PRIMARY KEY AUTOINCREMENT, origin TEXT NOT NULL, destination TEXT NOT NULL, duration INTEGER NOT NULL );

Page 16: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

CREATE TABLE flights ( id INTEGER PRIMARY KEY AUTOINCREMENT, origin TEXT NOT NULL, destination TEXT NOT NULL, duration INTEGER NOT NULL );

Page 17: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

Constraints

• CHECK • DEFAULT • NOT NULL • PRIMARY KEY • UNIQUE • ...

Page 18: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

INSERT

Page 19: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

INSERT INTO flights (origin, destination, duration) VALUES ("New York", "London", 415);

Page 20: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

INSERT INTO flights (origin, destination, duration) VALUES ("New York", "London", 415);

Page 21: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

INSERT INTO flights (origin, destination, duration) VALUES ("New York", "London", 415);

Page 22: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

INSERT INTO flights (origin, destination, duration) VALUES ("New York", "London", 415);

Page 23: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

INSERT INTO flights (origin, destination, duration) VALUES ("New York", "London", 415);

Page 24: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

INSERT INTO flights (origin, destination, duration) VALUES ("New York", "London", 415);

Page 25: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

SELECT

Page 26: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT * FROM flights;

Page 27: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT * FROM flights;

Page 28: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT origin, destination FROM flights;

Page 29: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT origin, destination FROM flights;

Page 30: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT * FROM flights WHERE id = 3;

Page 31: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT * FROM flights WHERE id = 3;

Page 32: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT * FROM flights WHERE origin = "New York";

Page 33: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT * FROM flights WHERE origin = "New York";

Page 34: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT * FROM flights WHERE duration > 500;

Page 35: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT * FROM flights WHERE duration > 500;

Page 36: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT * FROM flights WHERE duration > 500 AND destination = "Paris";

Page 37: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT * FROM flights WHERE duration > 500 AND destination = "Paris";

Page 38: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT * FROM flights WHERE duration > 500 OR destination = "Paris";

Page 39: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT * FROM flights WHERE duration > 500 OR destination = "Paris";

Page 40: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT * FROM flights WHERE origin IN ("New York", "Lima");

Page 41: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT * FROM flights WHERE origin IN ("New York", "Lima");

Page 42: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT * FROM flights WHERE origin LIKE "%a%";

Page 43: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

SELECT * FROM flights WHERE origin LIKE "%a%";

Page 44: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

Functions

• AVERAGE • COUNT • MAX • MIN • SUM • ...

Page 45: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

UPDATE

Page 46: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

UPDATE flights SET duration = 430 WHERE origin = "New York" AND destination = "London";

Page 47: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

UPDATE flights SET duration = 430 WHERE origin = "New York" AND destination = "London";

Page 48: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

UPDATE flights SET duration = 430 WHERE origin = "New York" AND destination = "London";

Page 49: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

UPDATE flights SET duration = 430 WHERE origin = "New York" AND destination = "London";

Page 50: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

UPDATE flights SET duration = 430 WHERE origin = "New York" AND destination = "London";

Page 51: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

UPDATE flights SET duration = 430 WHERE origin = "New York" AND destination = "London";

Page 52: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

DELETE

Page 53: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

DELETE FROM flights WHERE destination = "Tokyo";

Page 54: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

DELETE FROM flights WHERE destination = "Tokyo";

Page 55: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

DELETE FROM flights WHERE destination = "Tokyo";

Page 56: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

DELETE FROM flights WHERE destination = "Tokyo";

Page 57: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

DELETE FROM flights WHERE destination = "Tokyo";

Page 58: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

Other Clauses

• LIMIT • ORDER BY • GROUP BY • HAVING • ...

Page 59: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

Foreign Keys

Page 60: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

flights

Page 61: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin origin_code destination destination_code duration

1 New York JFK London LHR 415

2 Shanghai PVG Paris CDG 760

3 Istanbul IST Tokyo NRT 700

4 New York JFK Paris CDG 435

5 Moscow SVO Paris CDG 245

6 Lima LIM New York JFK 455

flights

Page 62: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id code city

1 JFK New York

2 PVG Shanghai

3 IST Istanbul

4 LHR London

5 SVO Moscow

6 LIM Lima

7 CDG Paris

8 NRT Tokyo

airports

Page 63: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin destination duration

1 New York London 415

2 Shanghai Paris 760

3 Istanbul Tokyo 700

4 New York Paris 435

5 Moscow Paris 245

6 Lima New York 455

flights

Page 64: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id origin_id destination_id duration

1 1 4 415

2 2 7 760

3 3 8 700

4 1 7 435

5 5 7 245

6 6 1 455

flights

Page 65: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id first last flight_id

1 Harry Potter 1

2 Ron Weasley 1

3 Hermione Granger 2

4 Draco Malfoy 4

5 Luna Lovegood 6

6 Ginny Weasley 6

passengers

Page 66: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

id first last

1 Harry Potter

2 Ron Weasley

3 Hermione Granger

4 Draco Malfoy

5 Luna Lovegood

6 Ginny Weasley

people

Page 67: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

person_id flight_id

1 1

2 1

2 4

3 2

4 4

5 6

6 6

passengers

Page 68: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

JOIN

Page 69: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

first last origin

Harry Potter New York

Ron Weasley New York

Hermione Granger Shanghai

Draco Malfoy New York

Luna Lovegood Lima

Ginny Weasley Lima

SELECT first, origin, destination FROM flights JOIN passengers

ON passengers.flight_id = flights.id;

Page 70: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

JOINs

• JOIN / INNER JOIN • LEFT OUTER JOIN • RIGHT OUTER JOIN • FULL OUTER JOIN

Page 71: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

CREATE INDEX

Page 72: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

CREATE INDEX name_index ON passengers (last);

Page 73: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

SQL Injection

Page 74: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

Username:

Password:

Page 75: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

SELECT * FROM users WHERE username = username AND password = password;

Page 76: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

Username:

harry

Password:

12345

Page 77: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

SELECT * FROM users WHERE username = username AND password = password;

Page 78: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

SELECT * FROM users WHERE username = "harry" AND password = "12345";

Page 79: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

Username:

hacker" --

Password:

Page 80: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

SELECT * FROM users WHERE username = username AND password = password;

Page 81: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

SELECT * FROM users WHERE username = "hacker"--" AND password = "";

Page 82: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

SELECT * FROM users WHERE username = "hacker"--" AND password = "";

Page 83: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

Race Conditions

Page 84: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

Models

Page 85: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

SQL, Models, and Migrations

Page 86: Web Programming - CS50 · Istanbul Tokyo 700 New York Paris 435 Moscow Paris 245 Lima New York 455. SQL. Database Management Systems ... 3 3 8 700 4 1 7 435 5 5 7 245 6 6 1 455 flights

Web Programming with Python and JavaScript