Professional Documents
Culture Documents
Database - SQL Basics Using SQLite
Database - SQL Basics Using SQLite
Using SQLite
This Talk
Databases as a topic...
user activity
id id
first_name name
last_name work_log description
id
date
user_id
activity_id
summary
Relational Model
Free!
Insert Installation
Instructions Here
.commands
Individual Piece
of Data
C
Description
R O W S of the Entity
L
S
Data Types
sqlite> CREATE TABLE user (
...> id INTEGER,
...> first_name VARCHAR(20),
...> last_name VARCHAR(20)
...> );
CREATE TABLE
sqlite> .tables
activity user
.tables
sqlite> .schema user
CREATE TABLE user (
id INTEGER,
first_name VARCHAR(20),
last_name VARCHAR(20)
);
.schema
sqlite> DROP TABLE user;
sqlite> .tables
activity
DROP TABLE
CREATE TABLE user (
id INTEGER NOT NULL,
first_name VARCHAR(20) NOT NULL,
last_name VARCHAR(20) NOT NULL
);
NOT NULL
CREATE TABLE user (
id INTEGER AUTOINCREMENT NOT NULL,
first_name VARCHAR(20) NOT NULL,
last_name VARCHAR(20) NOT NULL
);
AUTO INCREMENT
CREATE TABLE activity (
id INTEGER AUTOINCREMENT NOT NULL,
name VARCHAR(20) UNIQUE NOT NULL,
description TEXT NOT NULL
);
UNIQUE
CREATE TABLE user (
id INTEGER PRIMARY KEY
AUTOINCREMENT,
name VARCHAR(20) UNIQUE NOT NULL,
description TEXT NOT NULL
);
PRIMARY KEY
user activity
id id
first_name name
last_name work_log description
id
date
Foreign Key user_id
activity_id Foreign Key
summary
Foreign Keys
CREATE TABLE work_log (
id INTEGER PRIMARY KEY
AUTOINCREMENT,
date DATETIME NOT NULL,
user_id INTEGER REFERENCES
user(id),
activity_id INTEGER REFERENCES
activity(id),
summary TEXT NOT NULL
);
Foreign Keys
INSERT INTO user
(first_name, last_name)
VALUES ( "Brandon", "Woods" );
INSERT
.header(s) ON|OFF
Turn display of headers on or off
id first_name last_name
---------- ---------- ----------
1 Brandon Woods
2 Bruce Gray
3 Jason Noble
4 Stephen Cristol
SELECT
sqlite> SELECT first_name, last_name
FROM user;
first_name last_name
---------- ----------
Brandon Woods
Bruce Gray
Jason Noble
Stephen Cristol
SELECT
sqlite> SELECT first_name AS "First
Name", last_name AS "Last Name" FROM
user;
SELECT
sqlite> SELECT COUNT(id) FROM user;
COUNT(id)
----------
4
SELECT
SELECT * FROM user ORDER BY
last_name;
id first_name last_name
---------- ---------- ----------
4 Stephen Cristol
2 Bruce Gray
3 Jason Noble
5 John Smith
6 Jane Smith
1 Brandon Woods
ORDER
SELECT COUNT(last_name), last_name
FROM user GROUP BY last_name;
COUNT(last_name) last_name
---------------- ----------
1 Cristol
1 Gray
1 Noble
2 Smith
1 Woods
GROUP BY
SELECT * FROM user WHERE id=1;
id first_name last_name
---------- ---------- ----------
1 Brandon Woods
WHERE
SELECT * FROM user WHERE
first_name="Brandon"
OR
last_name="Grey";
id first_name last_name
---------- ---------- ----------
1 Brandon Woods
2 Bruce Gray
WHERE
SELECT * FROM user
WHERE first_name LIKE "B%";
id first_name last_name
---------- ---------- ----------
1 Brandon Woods
2 Bruce Gray
WHERE
user activity
id id
first_name name
last_name work_log description
id
date
user_id
activity_id
summary
Related Data
SELECT a.date AS Date ,
b.first_name AS Name,
a.summary AS Summary
FROM work_log AS a
JOIN user AS b
ON a.user_id=b.id
JOIN
SELECT a.date AS Date ,
b.first_name || ' ' || b.last_name AS Name,
c.name AS Activity,
a.summary AS Summary
FROM work_log AS a
JOIN user AS b
ON a.user_id=b.id
JOIN activity AS c
ON a.activity_id=c.id;
JOIN
UPDATE user SET last_name="Wood"
WHERE id="1";
id first_name last_name
---------- ---------- ----------
1 Brandon Wood
UPDATE
DELETE FROM user WHERE
last_name="Smith";
id first_name last_name
---------- ---------- ----------
1 Brandon Wood
2 Bruce Gray
3 Jason Noble
4 Stephen Cristol
DELETE
CREATE INDEX idx_user_id
ON user (id);
.indices
One could go on for HOURS about SQL.
Thank you for your time.
- Woody@2143.net
2011-11-03
Oops!