36
5/8/07 MySQL David Lawrence 1/36 David Lawrence, JLab An introduction for the novice

David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 1/36

David Lawrence, JLab

An introduction for the novice

Page 2: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 2/36

What is a Database?

• Store information(data) in a reliable,

accessible way

• Allow access to data over a network to

multiple users

• Provide easy way to select a specific

“view” of the data

Page 3: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 3/36

Relational Database

• A relational database is a collection of

tables that can be dynamically (and

temporarily) combined into a single

table. Columns of the contributing tables

can be related to one another.

• In a non-relational database, the tables

are always separate entities

Page 4: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 4/36

A Few Terms:

• Server - Program that accepts

connections and implements the

database

• Database - A collection of tables on a

single server. More than one “database”

can exist on a single server

• Table - A set of column definitions

Page 5: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 5/36

A Few Terms:

• Column - Provides a name and data type

• Row - A single entry in a table. It contains one value for every column (possibly NULL)

• Query - A command in SQL syntax for the database. It can insert, modify, or extract data.

Page 6: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 6/36

tructured

uery

anguage

ANSI/ISO

Standard:

1992

1999

2003

Page 7: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 7/36

SQL: Structured Query Language

• SQL is a syntax for probing and

manipulating a database.

Page 8: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 8/36

Creating a table

CREATE TABLE IF NOT EXISTS friends(

id int PRIMARY KEY AUTO_INCREMENT,

firstname char(255) NOT NULL,

lastname char(255),

pets_name char(255),

age int,

status ENUM("like","hate") default 'like',

created datetime,

modified timestamp

) TYPE=MyISAM;

Page 9: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 9/36

The INSERT statement

INSERT INTO friends

(firstname,lastname,pets_name,age,created)

VALUES("Amelia", "Lawrence", "Star", 8, NOW());

Page 10: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 10/36

The SELECT statement

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

Page 11: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 11/36

The SELECT statement

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

SELECT can specify both columns and rows…

Page 12: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 12/36

The SELECT statement

SELECT can limit the number of rows returned…

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

Page 13: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 13/36

The SELECT statement

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

SELECT can also be used with functions…

Page 14: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 14/36

The SELECT statementSELECT can do math …

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

Page 15: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 15/36

UPDATEing table data

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

Page 16: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 16/36

The DELETE statement

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

Page 17: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 17/36

Database Table Design is an

Art!# ---- BAD -----

CREATE TABLE IF NOT EXISTS tagger_t_cal_dave3(

tid int,

toffset_l int,

toffset_r int

);

CREATE TABLE IF NOT EXISTS tagger_table_names(

run int,

tagger_t_cal_table char(255),

tagger_e_cal_table char(255)

);

“If you have to do more than one

query to get the data you want

out of the database, you have

not done a good job designing

your tables.”

-R. Chapman, Professional Database Designer

Page 18: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 18/36

Database Table Design is an

Art!

# ---- GOOD -----

CREATE TABLE IF NOT EXISTS tagger_t_cal(

run int NOT NULL,

tid int NOT NULL,

toffset_l int,

toffset_r int,

PRIMARY KEY(run,tid)

);

Page 19: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 19/36

Client/Server Model

Server

Client

server listens …

… client connectsClientClient

Client

Many clients can

Connect to the server

at once

Page 20: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 20/36

Permissions/Access Control

• Permissions are kept by server independent

of any Unix system

• Accounts are determined by the host you

connect from and the username you supply

• Permissions can be granted at the global,

database, table and column levels

• Permissions can be granted for all or only a

partial set of commands

Page 21: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 21/36

Permissions/Access Control

• Use the GRANT and REVOKE commands to set permissions:

GRANT ALL PRIVILEGES ON test.* TO

joebob@'%.jlab.org' IDENTIFIED BY "tutu”

REVOKE ALL PRIVILEGES ON test.* FROM

joebob@'%.jlab.org' IDENTIFIED BY "tutu”

Page 22: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 22/36

The mysql command-line tool

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

Page 23: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 23/36

API: Application Programming Interface

• The API provides the means to access the

database from your language of choice

– C

– Perl

– PHP

– Java (JDBC)

– Python

– Tcl

– Eiffel

Page 24: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 24/36

C API

• Very useful for adding database access to C programs, but most jobs are better done in scripting languages– mysql_init()

– mysql_real_connect()

– mysql_query()

– mysql_store_result()

– mysql_fetch_row()

– mysql_free_result()

– mysql_close()

Page 25: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 25/36

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

Page 26: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 26/36

Compiling the C program

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

Page 27: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 27/36

Perl API

• Uses the DBI and DBD-mysql modules

– DBI->connect()

– prepare()

• execute()

• fetchrow_arrayref()

• fectrow_hashref()

– disconnect()

Page 28: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 28/36

Perl API

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

Page 29: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 29/36

PHP API

• The PHP interface is extremely valuable

for interfacing a MySQL database with a

web page

– mysql_connect()

– mysql_select_db()

– mysql_query()

• mysql_fetch_array()

– mysql_close()

Page 30: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 30/36

PHP API

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

Page 31: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 31/36

Java API

• Java uses JDBC to interface to MySQL

– Class.forName()

– getConnection()

– createStatement()

– executeQuery()

• next()

• getString()

• getInt()

Page 32: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 32/36

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

Page 33: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 33/36

Backing Up: mysqldump

• The mysqldump command line utility

can print the entire contents of a

database to the screen.

– -d option says don’t include table data

– -t option says don’t include table

definitions

– Individual tables can be specified

Page 34: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 34/36

QuickTime™ and aTIFF (LZW) decompressor

are needed to see this picture.

Page 35: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 35/36

Supported Platforms

• AIX

• Amiga

• BSDI

• Digital Unix

• FreeBSD

• HP-UX

• Linux

• SunOS

• True64

• Mac OS X

• NetBSD

• Novell Netware

• OpenBSD

• OS/2 Warp

• SCO Unix

• SGI

• True64

• MS Windows

Page 36: David Lawrence, JLab5/8/07 MySQL David Lawrence 3/36 Relational Database •A relational database is a collection of tables that can be dynamically (and temporarily) combined into

5/8/07 MySQL David Lawrence 36/36

Summary

• MySQL is a popular, free database well suited to most applications

• There are APIs supporting many programming languages including PHP which makes a powerful combination for generating web pages

See more at http://www.mysql.com