Marketing Analytics - Stephan SorgerLogical Using logical commands (AND, OR) in commands Creating...

Preview:

Citation preview

Marketing Analytics: Database Query with MySQL

Disclaimer:

• All logos, photos, etc. used in this presentation are the property of their respective

copyright owners and are used here for educational purposes only

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.1

Category Description

Introduction Overview of database query languages

RDBMS Example of Relational Database Management System

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 Commands to display data

SELECT Commands to choose certain pieces of data

Sorting Commands to sort data

Filtering Commands to filter data

Logical Using logical commands (AND, OR) in commands

Creating Creating, Dropping, and Altering databases and tables

Outline

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.2

Category Description

SQL Structured Query Language

Programming language for accessing RDBMS

RDBMS Relational Database Management System

SQL Consists of two items:

Data Definition Language: Syntax for defining data structures

Data Manipulation Language: Syntax for selecting, inserting

deleting, and updating data in databases

Top 3 Top 3 Database engines:

Oracle

MySQL

Microsoft SQL Server

MySQL Open source; Free; Available for Mac and PC

Manual: See dev.mysql.com/doc/index.html

Database Query: Introduction

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.3

RDBMS Database Example

Row: Record

Primary Key: Column with 100% unique entries

similar to Social Security Number

(‘Engine’ column will not work; duplicate entries)

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.4

MySQL: Hosting

Go to

000webhost.com

(or other similar

Web hosting service)

and get an account

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.5

MySQL Server:

Setup

Creating MySQL

Databases for

hosting accounts

on GoDaddy.com

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.6

For GoDaddy,

launch hosting

account to see

cPanel (shown).

Click on MySQL

Database Wizard

MySQL:

Server Setup

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.7

MySQL Server: Setup

Enter name for

database

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.8

MySQL Server: Setup

Enter username

and password

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.9

MySQL Server: Setup

Select privileges

for user

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.10

MySQL Server: Setup

Select

phpMyAdmin

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.11

MySQL: Importing Databases

Select your Database

(Database1)

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.12

MySQL: Importing Databases

Select Import

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.13

MySQL: Importing Databases

MySQL Sample

Databases:

dev.mysql.com/doc/index-other.html

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.14

MySQL: Importing Databases

Choose File:

Dataset:

world.sql

Click “Go”

(bottom of page)

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.15

MySQL: Importing Databases

Imported OK;

Click “Database1”

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.16

MySQL: Data Structure

Check “City” Table

within World database

Click on SQL tab

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.17

MySQL: Data Structure

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

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.18

MySQL: Data Structure

Shows databases:

information_schema

(already in SQL server)

Database1

(we created)

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.19

MySQL: Data Structure

In SQL tab, enter

“SHOW TABLES”

and hit “Go”

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.20

MySQL: Data Structure

Tables:

City

Country

Country Language

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.21

MySQL: SHOW Commands

View columns of table

Click on SQL tab

Syntax:

SHOW COLUMNS FROM (table)

Here:

SHOW COLUMNS FROM City

Then click Go

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.22

MySQL: SHOW Commands

Results:

See columns from table

Note PRI (primary) key

Here, PRI = ID field

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.23

MySQL: SHOW Commands

Click on file structure list

in left column to see table

Here, click on “City”

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.24

MySQL: SELECT Commands

SELECT Name FROM City

and click Go

Note column names on right

Note commands on bottom

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.25

MySQL: SELECT Commands

Result:

Names of cities

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.26

MySQL: SELECT Commands

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;

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.27

MySQL: SELECT Commands

Result:

Names of cities

AND

Names of Country Codes

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.28

MySQL: SELECT Commands

Insert wildcard

character (*) to

retrieve all information

SELECT * FROM City

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.29

MySQL: SELECT Commands

Result:

Entire dataset

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.30

MySQL: SELECT with Distinct and LIMIT

DISTINCT:

To show only one

instance of a particular

value

SELECT DISTINCT CountryCode FROM City

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.31

Result:

Distinct country codes

MySQL: SELECT with Distinct and LIMIT

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.32

Show only first 5

using LIMIT command

SELECT Name, CountryCode FROM City LIMIT 5

MySQL: SELECT with Distinct and LIMIT

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.33

Result: First 5 entries

MySQL: SELECT with Distinct and LIMIT

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.34

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 2015. www.StephanSorger.com; Database Query with MySQL; SQL.35

Result: Results 5 - 15

MySQL: SELECT with Distinct and LIMIT

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.36

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 2015. www.StephanSorger.com; Database Query with MySQL; SQL.37

Results: Same as before

Note names in order as

found in the original table;

Can be confusing.

Alternative: Sort.

MySQL: SELECT with Distinct and LIMIT

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.38

MySQL: Sorting

Sort results using

ORDER BY command

SELECT Name FROM City ORDER BY Name

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.39

MySQL: Sorting

Results are now in

alphabetic order

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.40

MySQL: Sorting

Sorting multiple columns,

specifying order parameter

SELECT Name, CountryCode, District FROM City ORDER BY Name

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.41

MySQL: Sorting

Results:

Multiple columns,

sorted by Name

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.42

MySQL: Sorting

Sequential Sort:

Sort by x, then by y

SELECT Name,CountryCode,District from City ORDER BY name,CountryCode

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.43

MySQL: Sorting

Result:

Sort by Name,

then by Country Code

(not very interesting

in this case, because

data is unique for each area)

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.44

MySQL: Sorting

Sorting in reverse

direction; from high to low

DESC = Descending

ASC = Ascending

SELECT Name, CountryCode FROM City ORDER BY Name DESC

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.45

MySQL: Sorting

Result: Names from Z – A

BUT: Algorithm lists

special characters,

such as umlauted vowels,

AFTER Z

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.46

MySQL: Sorting

Select highest value

(or lowest value)

SELECT Name, Population FROM City ORDER BY Population LIMIT 1

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.47

MySQL: Sorting

Results:

Adamstown has the

smallest population,

with only 42 people

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.48

MySQL: Sorting

Select highest value

(or lowest value)

SELECT Name, Population FROM City ORDER BY Population DESC LIMIT 1

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.49

MySQL: Sorting

Results:

Mubai has the

largest population,

with 10,500,000 people

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.50

MySQL: Filtering

Filtering:

Want only areas

within country code ‘AFG’

SELECT Name, CountryCode FROM City WHERE CountryCode=‘AFG’

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.51

MySQL: Filtering

Results

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.52

MySQL: Filtering

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

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.53

MySQL: Filtering

Result:

Listing of “small” cities

in ID order

(could also sort if desired)

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.54

MySQL: Filtering

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

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.55

MySQL: Filtering

Result:

“Sweet spot” cities

between 10,000 and

50,000

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.56

MySQL: Logical Operators

Find name of city

within AFG with a

population greater

than 200,000

SELECT Name, CountryCode FROM City WHERE CountryCode=‘AFG’ AND Population>200000

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.57

MySQL: Logical Operators

Result: Two cities

met both criteria

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.58

MySQL: Logical Operators

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

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.59

MySQL Server

Result: Three cities

met at least one of the

criteria

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.60

MySQL: Searching

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'

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.61

MySQL: Searching

Results:

Many districts have

the word “Holland”

in them

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.62

MySQL: Special Columns

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

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.63

MySQL: Special Columns

Result:

Special Column temporarily

inserted in database:

Population Growth

Shows population + 10%

SELECT Name, Population, Population*1.1 AS Population_Growth FROM City

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.64

MySQL: Create Database

Create new database

called “database2”

CREATE DATABASE database2

To delete database:

DROP DATABASE database2

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.65

MySQL: Create Table

Create new table

through phpMyAdmin

By clicking on Database

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.66

MySQL: Create Table

Within phpMyAdmin:

Create table:

Enter Name

Enter number of columns

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.67

MySQL: Create Table

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

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

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.68

MySQL: Create Table

Click on Structure

to see table structure

id underlined

PRIMARY KEY

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.69

MySQL: Create Table

Manually enter data

by clicking Insert tab,

then click Go

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.70

MySQL Server

Results:

-Data inserted

-ID incremented

To Delete a Row:

DELETE FROM signup WHERE name = ‘Kathy Kar’

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.71

MySQL: Alter Table

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

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.72

MySQL Server

Results:

New column inserted:

“phone”

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.73

MySQL: Reference Manuals

To learn all commands, functions, etc. available, go to:

dev.mysql.com/doc/index.html

© Stephan Sorger 2015. www.StephanSorger.com; Database Query with MySQL; SQL.74

Recommended