Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Disclaimer:
• All images such as logos, photos, etc. used in this presentation are the property of their respective copyright owners and are used
here for educational purposes only
• Some material adapted from: Sorger, Stephan. “Marketing Analytics: Strategic Models and Metrics. Admiral Press. 2013.
Introduction to
Data Science and Analytics
Stephan Sorger www.StephanSorger.com
Unit 6B. SQL: Overview and Coding SQL Coding Session in MySQL
Outline/ Learning Objectives
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Category Description
Hosting Obtaining hosting server for MySQL (free or paid)
Setup Setting up the MySQL Server on hosting platforms
Import Importing databases into MySQL Server
Structure Data structure; Showing tables within databases
SHOW, SELECT Commands to display data and choose data
Sorting, Filtering Commands to sort and filter data
Creating Creating, Dropping, and Altering databases and tables
MySQL: Hosting
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Go to
000webhost.com
(or other similar
Web hosting service)
and get an account
MySQL Server: Setup
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Creating MySQL
Databases for
hosting accounts
on GoDaddy.com
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
MySQL Server: Setup
For GoDaddy,
launch hosting
account to see
cPanel (shown).
Click on MySQL
Database Wizard
MySQL Server: Setup
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Enter name for
database
MySQL Server: Setup
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Enter username
and password
MySQL Server: Setup
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Select
privileges
for user
MySQL Server: Setup
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Select
phpMyAdmin
MySQL: Importing Databases
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Select your Database
(Database1)
MySQL: Importing Databases
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Select Import
MySQL: Importing Databases
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
MySQL Sample Databases:
dev.mysql.com/doc/index-other.html
For our example: world database
MySQL: Importing Databases
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Choose File:
Dataset:
world.sql
Click “Go”
(bottom of page)
MySQL: Importing Databases
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Imported OK;
Click “Database1”
MySQL: Data Structure
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Check “City” Table
within World database
Click on SQL tab
MySQL: Data Structure
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
In SQL tab, enter
“SHOW DATABASES”
and hit “Go”
SQL commands
also called “queries”
are in ALL CAPS
Table entries are in lower case or Mixed Case
MySQL: Data Structure
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Shows databases:
information_schema
(already in SQL server)
Database1
(we created)
MySQL: Data Structure
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
In SQL tab, enter
“SHOW TABLES”
and hit “Go”
MySQL: Data Structure
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Tables:
City
Country
Country Language
MySQL: SHOW Command
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
View columns of table
Click on SQL tab
Syntax:
SHOW COLUMNS FROM (table)
Here:
SHOW COLUMNS FROM City
Then click Go
MySQL: SHOW Command
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Results:
See columns from table
Note PRI (primary) key
Here, PRI = ID field
MySQL: SHOW Command
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Click on file structure list
in left column to see table
Here, click on “City”
MySQL: SELECT Command
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
SELECT Name FROM City
and click Go
Note column names on right
Note commands on bottom
MySQL: SELECT Command
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Result:
Names of cities
MySQL: SELECT Command
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Select multiple columns
from tables using comma (,)
between column labels
Note semicolon at end of line
(most compilers will run command without semicolon if command is only 1 line)
SELECT Name, CountryCode FROM City;
MySQL: SELECT Command
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Result:
Names of cities
AND
Names of Country Codes
MySQL: SELECT Command
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Insert wildcard
character (*) to
retrieve all information
SELECT * FROM City
MySQL: SELECT Command
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Result:
Entire dataset
MySQL: SELECT with DISTINCT and LIMIT
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
DISTINCT:
To show only one
instance of a particular
value
SELECT DISTINCT CountryCode FROM City
MySQL: SELECT with DISTINCT and LIMIT
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Result:
Distinct country codes
MySQL: SELECT with DISTINCT and LIMIT
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Show only first 5
using LIMIT command
SELECT Name, CountryCode FROM City LIMIT 5
MySQL: SELECT with DISTINCT and LIMIT
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Result: First 5 entries
MySQL: SELECT with DISTINCT and LIMIT
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Select only limited set of entries
From start point (say, 5)
To a certain number of data points (say, 10)
(Computers start counting at 0, not at 1,
so results will show “6”, not “5”
SELECT Name, CountryCode FROM City LIMIT 5, 10
MySQL: SELECT with DISTINCT and LIMIT
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Result: Results 5 - 15
MySQL: SELECT with DISTINCT and LIMIT
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Fully Qualified Names:
“dataset.label”
Handy if working on
multiple databases
with the same column
SELECT City.Name FROM City
MySQL: SELECT with DISTINCT and LIMIT
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Results: Same as before
Note names in order as
found in the original table;
Can be confusing.
Alternative: Sort.
MySQL: Sorting
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Sort results using
ORDER BY command
SELECT Name FROM City ORDER BY Name
MySQL: Sorting
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Results are now in
alphabetic order
MySQL: Sorting
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Sorting multiple columns,
specifying order parameter
SELECT Name, CountryCode, District FROM City ORDER BY Name
MySQL: Sorting
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Results:
Multiple columns,
sorted by Name
MySQL: Sorting
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Sequential Sort:
Sort by x, then by y
SELECT Name,CountryCode,District from City ORDER BY name,CountryCode
MySQL: Sorting
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Result:
Sort by Name,
then by Country Code
(not very interesting
in this case, because
data is unique for each area)
MySQL: Sorting
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Sorting in reverse
direction; from high to low
DESC = Descending
ASC = Ascending
SELECT Name, CountryCode FROM City ORDER BY Name DESC
MySQL: Sorting
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Result: Names from Z – A
BUT: Algorithm lists
special characters,
such as umlauted vowels,
AFTER Z
MySQL: Sorting
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Select highest value
(or lowest value)
SELECT Name, Population FROM City ORDER BY Population LIMIT 1
MySQL: Sorting
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Results:
Adamstown has the
smallest population,
with only 42 people
MySQL: Sorting
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Select highest value
(or lowest value)
SELECT Name, Population FROM City ORDER BY Population DESC LIMIT 1
MySQL: Sorting
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Results:
Mumbai has the
largest population,
with 10,500,000 people
MySQL: Filtering
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Filtering:
Want only areas
within country code ‘AFG’
SELECT Name, CountryCode FROM City WHERE CountryCode=‘AFG’
MySQL: Filtering
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Results
MySQL: Filtering
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Filtering:
Want to list
“small cities”,
i.e. areas
with population
under 10,000
SELECT Name, Population FROM City WHERE Population <= 10000
(could also show “large cities”) :
SELECT Name, Population FROM City WHERE Population >= 10000
MySQL: Filtering
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Result:
Listing of “small” cities
in ID order
(could also sort if
desired)
MySQL: Filtering
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Filtering:
Want to list
“medium cities”
i.e. areas
with population
between
10,000 and 50,000:
SELECT Name, Population FROM City WHERE Population BETWEEN 10000 AND 50000
OR
SELECT Name, Population FROM City WHERE Population >= 10000 && Population <= 50000
MySQL: Filtering
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Result:
“Sweet spot” cities
between 10,000 and
50,000
MySQL: Logical Operators
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Find name of city
within AFG with a
population greater
than 200,000
SELECT Name, CountryCode FROM City WHERE CountryCode=‘AFG’ AND Population>200000
MySQL: Logical Operators
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Result: Two cities
met both criteria
MySQL: Logical Operators
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Find name of city
within NLD
OR with a population
greater than 400,000
SELECT Name, CountryCode, Population
FROM City WHERE CountryCode=‘NLD’ AND Population>400000
MySQL: Logical Operators
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Result: Three cities
met at least one of the
criteria
MySQL: Searching
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Use REGEXP
(regular expression)
to search for item.
Here, we want to
search for any district
with the word “Holland”
in it.
SELECT Name, District FROM City WHERE District REGEXP 'Holland'
MySQL: Searching
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Results:
Many districts have
the word “Holland”
in them
MySQL: Special Columns
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Create special columns
using math: +, -, *, /
For example, what if
population were to grow by 10%?
SELECT Name, Population, Population*1.1 AS Population_Growth FROM City
MySQL: Special Columns
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Result:
Special Column temporarily
inserted in database:
Population Growth
Shows population + 10%
SELECT Name, Population, Population*1.1 AS Population_Growth FROM City
MySQL: CREATE Database
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Create new database
called “database2”
CREATE DATABASE database2
To delete database:
DROP DATABASE database2
MySQL: CREATE Table
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Create new table
through phpMyAdmin
By clicking on Database
MySQL: CREATE Table
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Within phpMyAdmin:
Create table:
Enter Name
Enter number of columns
MySQL: CREATE Table
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Within MySQL:
Create new table: CREATE
Drop or rename table:
DROP TABLE signup
RENAME TABLE signup TO users
Create new table
for website
where people can
sign up for emails
MySQL: CREATE Table
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
CREATE TABLE signup ( Open bracket; Create new lines
id int NOT NULL AUTO_INCREMENT First variable: id; data type: Integer; Automatically add 1
name varchar (30) NOT NULL Second variable: name; alphanumeric text; Required
email varchar (30) NOT NULL Third variable: email; max length: 30 char. ; Required
PRIMARY KEY (id) Declare primary key; in this case, “id”
) Close bracket
MySQL: CREATE Table
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Click on Structure
to see table structure
id underlined
PRIMARY KEY
MySQL: CREATE Table
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Manually enter data
by clicking Insert tab,
then click Go
MySQL: Alter Table
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Results:
-Data inserted
-ID incremented
To Delete a Row:
DELETE FROM signup WHERE name = ‘Kathy Kar’
MySQL: Alter Table
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Add column:
phone (phone number)
To add a column:
ALTER TABLE signup ADD phone varchar(10) NOT NULL
To delete a column:
ALTER TABLE signup DROP COLUMN phone
MySQL: Alter Table
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Results:
New column inserted:
“phone”
MySQL: Reference Manuals
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
dev.mysql.com/doc/index.html
MySQL:
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
MySQL:
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
MySQL:
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Outline/ Learning Objectives
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Outline/ Learning Objectives
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Outline/ Learning Objectives
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Outline/ Learning Objectives
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Outline/ Learning Objectives
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1
Outline/ Learning Objectives
© Stephan Sorger 2016; www.StephanSorger.com; Data Science: SQL: MySQL 1