Lecture4 2
Lecture4 2
• 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
);
Constraints
• CHECK
• DEFAULT
• NOT NULL
• PRIMARY KEY
• UNIQUE
• ...
INSERT
INSERT INTO flights
(origin, destination, duration)
VALUES ("New York", "London", 415);
SELECT
SELECT * FROM flights;
• 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 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 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;
JOINs
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;
Username:
hacker" --
Password:
SELECT * FROM users
WHERE username = username AND password = password;
Race Conditions
Models
SQL, Models, and Migrations
Web Programming
with Python and JavaScript