2. Tables
• Think of each table as a spreadsheet
• We define columns, also known as fields,
which classify our data
• Each record in the table is a row
3. Data Types
• Varchar
– Variable Characters, specify up to how many
characters something will be
• Char
– A set number of characters, good for things like
state abbreviations
• Int
– Whole numbers, positive or negative
4. Data Types
• Float
– Floating Point, also known as a decimal
• Text
– A huge blob of text, like a paragraph or more
• TinyInt / Bit / Boolean
– 0 or 1, True or False
• DateTime
– A date and time 0000-00-00 00:00:00
5. Data Types
• Depending on the flavor of SQL (Oracle,
MySQL, MSSQL, PostgreSQL, etc) there are
many more
• Don’t get overwhelmed, just think of what will
be best in terms of sorting and lookups
6. User Table Example
• Username
– Varchar
• Password
– Varchar
• ID
– Integer
• AccountCreated
– DateTime
9. Create
• INSERT is used to create a new record in the
database
• INSERT VALUES (username, password) INTO
users (‘fluffybunny’, ‘123456’)
10. Retrieve
• SELECT is used to retrieve a record in the
database
• SELECT username, password FROM users
WHERE ID = 1
11. Anatomy of SELECT
• SELECT [column]
– The command
• FROM [table]
– The table you want to select from
• WHERE *column+ = ‘value’
– Specifics
• ORDER BY [column] [ASC/DESC]
– Sort by column
• LIMIT [Number]
– Limit the number of records returned
12. UPDATE
• UPDATE is used to change record(s) in the
database
• UPDATE users SET username = ‘FluffyBuns’
WHERE ID = 1
13. DELETE
• DELETE is used to remove records from the
database
• DELETE FROM users WHERE ID = 1
** if you do not specify anything in the WHERE
clause, it will delete everything in that table
14. Users and Groups
Users Groups UserGroups
ID User ID Group UserID GroupID
1 John 1 Sharks 1 2
2 Jane 2 Ducks 2 2
3 Sally 3 Lemurs 3 1
4 Ryan 4 1
5 Joe 5 3
15. Joins
• SELECT User, Group FROM Users
JOIN UserGroups ON Users.ID =
UserGroups.UserID
JOIN Groups ON UserGroups.GroupID =
Groups.ID
WHERE Group = ‘Sharks’
16. IN
• SELECT User FROM Users WHERE ID IN (1,2)
• SELECT User FROM Users WHERE ID IN
(SELECT UserID FROM UserGroups WHERE
GroupID = 2)
18. Conditions and Operators
• WHERE can also use wildcards for text
– WHERE Column IS LIKE ‘%something%’
• WHERE can use more than =
– WHERE ID < 4
– WHERE ID <= 4
• WHERE can combine conditions
– WHERE Column = ‘A’ AND Column2 = ‘B’
– WHERE Column = ‘A’ OR Column2 = ‘B’
– WHERE (Column = ‘A’ OR Column2 = B’) AND Other = ‘C’
19. Nerding Out
• SQL has functions, like COUNT and SUM
• SELECT Customer, SUM(Amount) FROM
Orders GROUP BY Customer
• SELECT COUNT(Customer) FROM Orders
GROUP BY Customer
20. Indexes
• It’s a good habit to create a column for each
table that acts as an ID
• We can put an index on the ID and it can
speed up the query time
• Unless you’re dealing with really big datasets,
you probably won’t have to worry about this
21. Database Design
• Design a schema for a social network
– I’m cool with stretching this to something else
• At a minimum it must contain:
– Users
– Posts
– Friend Relationships
– Likes
• You will create a web interface for this
database later