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

Lecture4 2

Uploaded by

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

Lecture4 2

Uploaded by

ahmed alquhali
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 86

Web Programming

with Python and JavaScript

SQL, Models, and Migrations


Data
origin destination duration

New York London 415


Shanghai Paris 760

Istanbul Tokyo 700

New York Paris 435

Moscow Paris 245

Lima New York 455


SQL
Database Management Systems

• MySQL
• PostgreSQL
• SQLite
• ...

SQLite Types

• TEXT
• NUMERIC
• INTEGER
• REAL
• BLOB

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

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

CREATE TABLE flights (


id INTEGER PRIMARY KEY AUTOINCREMENT,
origin TEXT NOT NULL,
destination TEXT NOT NULL,
duration INTEGER NOT NULL
);

CREATE TABLE flights (


id INTEGER PRIMARY KEY AUTOINCREMENT,
origin TEXT NOT NULL,
destination TEXT NOT NULL,
duration INTEGER NOT NULL
);

CREATE TABLE flights (


id INTEGER PRIMARY KEY AUTOINCREMENT,
origin TEXT NOT NULL,
destination TEXT NOT NULL,
duration INTEGER NOT NULL
);

CREATE TABLE flights (


id INTEGER PRIMARY KEY AUTOINCREMENT,
origin TEXT NOT NULL,
destination TEXT NOT NULL,
duration INTEGER NOT NULL
);

CREATE TABLE flights (


id INTEGER PRIMARY KEY AUTOINCREMENT,
origin TEXT NOT NULL,
destination TEXT NOT NULL,
duration INTEGER NOT NULL
);

CREATE TABLE flights (


id INTEGER PRIMARY KEY AUTOINCREMENT,
origin TEXT NOT NULL,
destination TEXT NOT NULL,
duration INTEGER NOT NULL
);

Constraints

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

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

INSERT INTO flights


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

INSERT INTO flights


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

INSERT INTO flights


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

INSERT INTO flights


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

INSERT INTO flights


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

SELECT
SELECT * FROM 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;

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;

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;

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;

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;

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";

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";

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;

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;

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";

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";

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";

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";

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");

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");

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%";

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%";

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


Functions

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

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

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

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

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

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

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

DELETE
DELETE FROM flights WHERE destination = "Tokyo";
DELETE FROM flights WHERE destination = "Tokyo";
DELETE FROM flights WHERE destination = "Tokyo";
DELETE FROM flights WHERE destination = "Tokyo";
DELETE FROM flights WHERE destination = "Tokyo";
Other Clauses

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

Foreign Keys
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

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


airports

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
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

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
passengers

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
people

id first last
1 Harry Potter
2 Ron Weasley
3 Hermione Granger
4 Draco Malfoy
5 Luna Lovegood
6 Ginny Weasley
passengers

person_id flight_id
1 1
2 1
2 4
3 2
4 4
5 6
6 6
JOIN
SELECT first, origin, destination
FROM flights JOIN passengers
ON passengers.flight_id = flights.id;

first origin destination


Harry New York London
Ron New York London
Hermione Shanghai Paris
Draco New York Paris
Luna Lima New York
Ginny Lima New York

JOINs

• JOIN / INNER JOIN


• LEFT OUTER JOIN
• RIGHT OUTER JOIN
• FULL OUTER JOIN

CREATE INDEX
CREATE INDEX name_index ON passengers (last);
SQL Injection
Username:

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

Username:
harry

Password:
12345
SELECT * FROM users
WHERE username = username AND password = password;

SELECT * FROM users


WHERE username = "harry" AND password = "12345";

Username:
hacker" --

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

SELECT * FROM users


WHERE username = "hacker"--" AND password = "";

SELECT * FROM users


WHERE username = "hacker"--" AND password = "";

Race Conditions
Models
SQL, Models, and Migrations
Web Programming
with Python and JavaScript

You might also like