0% found this document useful (0 votes)
18 views31 pages

Basic SQL

The document provides an introduction to SQL and single-table queries. It defines key SQL concepts like tables, rows, columns, primary keys, and discusses basic query operations like selection, projection, aggregation, sorting, and eliminating duplicates. It also gives examples of SQL statements for common queries.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views31 pages

Basic SQL

The document provides an introduction to SQL and single-table queries. It defines key SQL concepts like tables, rows, columns, primary keys, and discusses basic query operations like selection, projection, aggregation, sorting, and eliminating duplicates. It also gives examples of SQL statements for common queries.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 31

Introduction to SQL

Part 1 – Single-Table Queries


By Michael Hahsler
based on slides for CS145 Introduction to Databases (Stanford)
Overview

1. SQL introduction & schema definitions

2. Basic single-table queries

2
1. SQL INTRODUCTION & DEFINITIONS

3
What you will learn about in this section

1. What is SQL?

2. Basic schema definitions

3. Keys & constraints intro

4. Activities: CREATE TABLE statements


4
Basic SQL

5
SQL Introduction SQL stands for
Structured Query Language

• SQL is a standard language for querying and manipulating data.

• SQL is a high-level, declarative programming language.

• SQL execution is highly optimized and parallelized.

• Many standards out there:


– Standardized in 1986/87
– ANSI SQL/ SQL-86, SQL92 (a.k.a. SQL2), SQL99 (a.k.a. SQL3), SQL:2011
– Vendors support various subsets (e.g., SQLite implements most of the SQL-92
standard)
SQL is a…
• Data Definition Language (DDL)
– Define relational schemata
– Create/alter/delete tables and their attributes

• Data Manipulation Language (DML)


– Insert/delete/modify tuples in tables
– Query one or more tables
7
Tables in SQL
Product
PName Price Manufacturer
A relation or
table is a
Gizmo $19.99 GizmoWorks multiset of
Powergizmo $29.99 GizmoWorks
tuples having the
attributes
SingleTouch $149.99 Canon
specified by the
MultiTouch $203.99 Hitachi schema

This is where the name “relational” databases comes from.


8
Tables in SQL

Product An attribute (or


PName Price Manufacturer column) is a
typed data entry
Gizmo $19.99 GizmoWorks
present in each
Powergizmo $29.99 GizmoWorks tuple in the
relation
SingleTouch $149.99 Canon

Attributes must have an


MultiTouch $203.99 Hitachi
atomic type in standard
SQL, i.e. not a list, set,
etc.
10
Tables in SQL

Product A tuple or row is


PName Price Manufacturer a single entry in
the table having
Gizmo $19.99 GizmoWorks
the attributes
Powergizmo $29.99 GizmoWorks specified by the
schema
SingleTouch $149.99 Canon

MultiTouch $203.99 Hitachi Sometimes also referred to


as a record

11
Data Types in SQL SQLite uses:
integer, text
• Atomic types: and real
– Characters: CHAR(20), VARCHAR(50)
– Numbers: INT, BIGINT, SMALLINT, FLOAT
– Others: MONEY, DATETIME, …

• Every attribute must have an atomic type


Why?
13
Table Schemas
• The schema of a table is the table name, its
attributes, and their types:
Product(Pname: text, Price: real,
Category: text, Manufacturer: text)

• A key is an attribute (combination) that


identifies a tuple uniquely.
Product(Pname: text, Price: real,
Category: text, Manufacturer: text)
14
Key constraints
A key is a minimal subset of attributes that acts as a
unique identifier for tuples in a relation
Students(sid: text,
A key is an implicit constraint name: text,
on which tuples can be in the gpa: real)

relation
1. Which would you select as a key?
2. Is a key always guaranteed to exist?
i.e., if two tuples agree on the 3. Can we have more than one key?
values of the key, then they (key candidates and primary key)
must be the same tuple!
NULL and NOT NULL
• To say “don’t know the value” we use NULL
Students(sid:text, name:text, gpa: real)

sid name gpa


123 Bob 3.9
Say, Jim just enrolled in his
143 Jim NULL
first class.

In SQL, we may constrain a column to be NOT NULL, e.g.,


“name” in this table
Activities
• SQLite data types:
http://www.tutorialspoint.com/sqlite
• DB Browser
PName Price Category Manufacturer
– Create a database
– Create a Gizmo $19.99 Gadgets GizmoWorks

“Product” table Powergizmo $29.99 Gadgets GizmoWorks


– Add the shown SingleTouch $149.99 Photography Canon
data
MultiTouch $203.99 Household Hitachi

19
2. SINGLE-TABLE QUERIES

20
What you will learn about in this section

1. The SFW query

2. Other useful operators: LIKE, DISTINCT,


ORDER BY

3. Activities: Single-table queries


21
SQL Query
• Basic form (there are many many more bells and
whistles)
SELECT <attributes>
FROM <one or more relations>
WHERE <conditions>

Call this a SFW


query.
22
Simple SQL Query: Selection
Selection is the PName Price Category Manufacturer
operation of
Gizmo $19.99 Gadgets GizmoWorks
filtering a
relation’s tuples on Powergizmo $29.99 Gadgets GizmoWorks

some condition SingleTouch $149.99 Photography Canon

MultiTouch $203.99 Household Hitachi


SELECT *
FROM Product
WHERE Category = ‘Gadgets’
PName Price Category Manufacturer

Gizmo $19.99 Gadgets GizmoWorks


23
Powergizmo $29.99 Gadgets GizmoWorks
Simple SQL Query: Projection
PName Price Category Manufacturer
Projection is the
operation of Gizmo $19.99 Gadgets GizmoWorks
producing an output
Powergizmo $29.99 Gadgets GizmoWorks
table with tuples that
have a subset of their SingleTouch $149.99 Photography Canon
prior attributes
MultiTouch $203.99 Household Hitachi

SELECT Pname, Price, Manufacturer


FROM Product
WHERE Category = ‘Gadgets’
PName Price Manufacturer

Gizmo $19.99 GizmoWorks

Powergizmo $29.99 GizmoWorks 24


Notation

Input schema Product(PName, Price, Category,


Manfacturer)

SELECT Pname, Price, Manufacturer


FROM Product
WHERE Category = ‘Gadgets’

Output schema Answer(PName, Price,


Manfacturer)

25
A Few Details
• SQL commands are case insensitive:
– Same: SELECT, Select, select
– Same: Product, product

• Values are not:


– Different: ‘Seattle’, ‘seattle’

• Use single quotes for text constants:


– ‘abc’ - yes
– “abc” - no
26
DISTINCT: Eliminating Duplicates
Category
SELECT DISTINCT Category Gadgets
FROM Product
Photography

Versus Household

Category
Gadgets
SELECT Category
FROM Product Gadgets

Photography

Household 27
COUNT
COUNT is an aggregation function that returns the number of
elements.

Example: Find the number of products with a price of $20 or


more.

SELECT COUNT(*) FROM product WHERE price >= 20

Syntax: COUNT([ALL | DISTINCT] expression)

28
ORDER BY: Sorting the Results
SELECT PName, Price, Manufacturer
FROM Product
WHERE Category=‘gizmo’ AND Price > 50
ORDER BY Price, PName

Ties are broken Ordering is Text is ordered


by the second ascending, unless alphabetically.
attribute on the you specify the
ORDER BY list, DESC keyword.
etc.
29
LIMIT Clause
Used to limit the data amount returned by the SELECT statement.

Example: Find the 5 most expensive products

SELECT * FROM product


ORDER BY price DESC
LIMIT 5
Syntax: LIMIT [no of rows] OFFSET [row num]

Note: LIMIT is not standard SQL (e.g., MS SQL Server uses SELECT TOP)
30
Operators
Some of the operators supported by SQL are:
=, == equal
!=, <> not equal
<, <= less than (or equal)
>, >= greater than (or equal)
+, -, /, * arithmetic operators
AND, OR, NOT logic operators
IS NULL, IS NOT NULL checks for NULL values

Example: Find products and their price + 8% sales tax for gadgets that cost at least $100

SELECT pname, price * 1.08 AS Price_with_tax


FROM product,
WHERE category = ‘Gadgets’ AND price >= 100
31
IN and BETWEEN
The IN operator allows you to specify multiple values in a WHERE clause.
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
The BETWEEN operator selects values within a range. The values can be numbers, text,
or dates.

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2
32
LIKE: Simple String Pattern Matching
SELECT *
FROM Products
WHERE PName LIKE
‘%gizmo%’

• s LIKE p: pattern matching on strings


• p may contain two special symbols:
– % = any sequence of characters
– _ = any single character

33
Product
CASE Statement name category price

CASE WHEN [condition1] THEN [expression1] Gizmo gadget 50

WHEN [condition2] THEN [expression2] Camera Photo 299


ELSE [default expression] END
OneClick Photo 89

Example:
SELECT name,
CASE WHEN price > 200 THEN ‘Yes’ ELSE ‘No’ END AS expensive
FROM Product

34
Activities
• SQLite Operators
• Expressions
• Where clauses
• And & Or clauses
(http://www.tutorialspoint.com/sqlite/)

1. Find all the gadgets and sort them by price.


2. What is the most expensive gadget?
3. How many gadgets are in the database?
4. How many gadgets are less than $20?
5. How much does it cost to buy all gadgets?
6. What happens if the manufacturer GizmoWorks changes its name? This is why we need
multiple tables!

35

You might also like