38
Creating Database Tables CS 320

Creating Database Tables

Embed Size (px)

DESCRIPTION

Creating Database Tables. CS 320. Review: Levels of data models. Conceptual: describes WHAT data the system contains Logical: describes HOW the database will be structured, regardless of the DBMS Physical: describes HOW the database will be implemented using a specific DBMS. - PowerPoint PPT Presentation

Citation preview

Page 1: Creating Database Tables

Creating Database Tables

CS 320

Page 2: Creating Database Tables

Review: Levels of data models1. Conceptual: describes WHAT data the

system contains2. Logical: describes HOW the database will

be structured, regardless of the DBMS3. Physical: describes HOW the database will

be implemented using a specific DBMS

Page 3: Creating Database Tables

Required Software

MySQL DBMS MySQL Workbench SQL editor (or another

command-line SQL query editor)

Page 4: Creating Database Tables

Review: Web/Database Architecture

Network

Web browserWeb server

2. Request for Web page that requires database data 1. Request for Web page that

requires database data

6. Web page HTML file downloaded to client

5. Web page HTML file containing database data downloaded to client

3. Runs a programthat makes a data request

4. Data response

Database server

Page 5: Creating Database Tables

MySQL Workbench Architecture

Network

Client runningWorkbench

2. SQL command1. SQL command

4. Response (erroror confirmation)

3. Response (erroror confirmation)

Database server

Workbench uses: Running commands to create tables (only way) Testing queries to use in PHP pages (later)

Page 6: Creating Database Tables

MySQL Database Structure

A MySQL database consists of multiple user accounts Also called database schemas

MySQL databases in general: A user account can contains different

databases UWEC MySQL database:

In our configuration, you can't create new databases

All of your tables are in the same database

Page 7: Creating Database Tables

MySQL Database Structure

UWEC MySQL database: In our configuration, you can't create new databases All of your tables are in the same database

Issues? All tables must have a unique name For your projects, you'll use a group database

account

Page 8: Creating Database Tables

SQL Command Types

Data Definition Language (DDL) Used to create and modify database objects

Data Manipulation Language (DML) Used to insert, update, delete, and view the

data in database objects

Page 9: Creating Database Tables

DDL Commands

Used to create and modify database objects CREATE ALTER DROP

DDL commands execute as soon as they are issued, and do not need to be explicitly saved

Page 10: Creating Database Tables

Creating a New Database

CREATE DATABASE database_name

CREATE DATABASE candy

- General syntax

- Specific example

**You won't do this with the UWEC MySQL database

Page 11: Creating Database Tables

Specifying Which Database to Use For Creating Tables

USE database_name

USE candy

You'll need to specify to USE your database:

USE morrisjp;

Page 12: Creating Database Tables

Creating a Database Table

CREATE TABLE table_name(field1_name datatype size,field2_name datatype size, …)

CREATE TABLE candy_product(prod_id BIGINT,prod_desc VARCHAR(30),prod_cost DECIMAL(5,2),prod_price DECIMAL(5,2))

Page 13: Creating Database Tables

General Notes on SQL Commands Not case-sensitive Can span multiple lines in a text editor To run multiple statements in the editor

window, separate each statement with ; To "comment out" (not execute) a

statement, enclose it in /* … */

Page 14: Creating Database Tables

Naming Tables and Fields

Database table and field name rules 1 to 64 characters long Can contain letters, numbers, or underscores Can't contain certain characters (/ \ ,) or characters not

permitted in file names

Every table in your database must have a unique name

Every field in a table must have a unique name

Page 15: Creating Database Tables

Good* Table Naming Practices

Name every table using a combination of 2 words, separated by an underscore This approach avoids using reserved words Use the same descriptive first word for all tables

in a related database

*Required in this class

Page 16: Creating Database Tables

Good* Field Naming Practices

Name every field using a combination of 2 words, with the first word indicating the table name Avoids creating homonyms

What about foreign keys? Use the name that is in the

parent table

*Required in this class

Page 17: Creating Database Tables

Database Field Data Types

Specify:Type of data the field storesMaximum data size

Purpose:Specify internal encodingOptimize internal storage useProvide error checking

Page 18: Creating Database Tables

Main Data Types

Text data types CHAR VARCHAR

Number data types Integers: INT and variations Floating point numbers: DECIMAL, FLOAT

Dates & times DATE, TIME, and variations

Page 19: Creating Database Tables

For fixed-width character fields (1-255 characters) Fields in which you know the exact number of

characters Pads out the remaining characters with blank

spaces Removes the trailing blank spaces when data is

retrieved

CHAR Data Type

fieldname CHAR(size)

cust_type CHAR(1)

Page 20: Creating Database Tables

VARCHAR Data Type For variable-width character fields (1-255

characters)Number of characters varies for individual

data valuesValues are not padded with blank spaces

fieldname VARCHAR(maxsize)

cust_name VARCHAR(30)

Page 21: Creating Database Tables

MySQL Number Data Types: Integers TINYINT

Signed: -128 to 127 Unsigned: 0 to 255

SMALLINT Signed: -32768 to 32767 Unsigned: 0 to 65535

INT Signed: -2147483648 to 2147483647 Unsigned: 0 to 4294967295

BIGINT Signed: -9223372036854775808 to 9223372036854775807 Unsigned: 0 to 18446744073709551615

Page 22: Creating Database Tables

Integer Data Type Usage

Choose the "smallest" integer type (SMALLINT, INT, BIGINT) that is big enough to hold the largest possible value

Question: Why not just always use BIGINT?

Page 23: Creating Database Tables

Integer Data Type Examples

fieldname integer_data_type

prod_id TINYINT

cust_id INT

purch_id BIGINT

Page 24: Creating Database Tables

MySQL Numeric Data Types: Floating Point Numbers

For values that have a decimal portion

DOUBLE or FLOAT: very large or very small values that have an indeterminate number of decimal places DOUBLE: takes more space, but is extremely accurate (15 decimal

places) FLOAT: takes less space, use when extreme accuracy isn't required

DECIMAL: for values that have a predetermined number of decimal places

Page 25: Creating Database Tables

Floating Point Examples

fieldname FLOATfieldname DOUBLE

pounds FLOAT

fieldname DECIMAL(precision, scale)

prod_cost DECIMAL(5,2)

Why not just omit the precision and scale? It defaults to the Maximum allowed by your hardware…

Page 26: Creating Database Tables

Think critically: Why not just declare all numeric values

using the DOUBLE data type? That will take care of all cases. This doesn't make use of error checking This doesn't optimize use of data storage

capacity

Page 27: Creating Database Tables

Numeric Surrogate keys (primary key ID values) All numeric data you might use in a calculation

(prices, quantities, etc.) Character: Use an appropriate character data type

for all fields that are not numbers or dates Names, addresses, etc. Postal codes, telephone numbers, social security

numbers

Character and Numeric Data Type Usage

Page 28: Creating Database Tables

MySQL Date and Time Data Types

DATEDates ranging from 1000-01-01 to 9999-12-31

Display in the format YYYY-MM-DD

TIMETimes ranging from is -838:59:59 to 838:59:59

Can also be used to represent elapsed time intervals Display in the format HH:MI:SS

Page 29: Creating Database Tables

MySQL Date and Time Data Types (continued) DATETIME

Used to store both a date and time component ranging from 1000-01-01 00:00:00 to 9999-12-31 23:59:59

Displays in the format YYYY-MM-DD HH:MI:SS

YEARCan store either a 2-digit or 4-digit year4-digit range: 1901 to 2155 2-digit range: 70 to 69 (1970 – 2069)

Page 30: Creating Database Tables

Review: Creating a Database Table

CREATE TABLE table_name(field1_name datatype size,field2_name datatype size, …)

CREATE TABLE candy_purchase( purch_id INT, prod_id INT, cust_id INT, purch_date DATE, purch_delivery_date DATE, purch_pounds FLOAT, purch_status VARCHAR(10))

Page 31: Creating Database Tables

Scripts

Text files that contain a series of SQL commands Each command separated by ;

Purpose: Write a series of commands and then execute them all at once

Create all tables in a database Insert a set of test records into the tables

Issue with a script that creates all of the tables in a database: You can't create two tables with the same name in the same

database In a script file, you always need to (try to) DROP all tables first

before you create them

Page 32: Creating Database Tables

Dropping a Database Table

Use IF EXISTS in a script to avoid error messages

DROP TABLE table_name

DROP TABLE IF EXISTS table_name

Page 33: Creating Database Tables

Example DROP TABLE Commands in a Script

/*commands to drop all tables */DROP TABLE IF EXISTS candy_purchase;DROP TABLE IF EXISTS candy_customer;DROP TABLE IF EXISTS candy_cust_type;DROP TABLE IF EXISTS candy_product;

/*commands to create tables */CREATE TABLE candy_cust_type (…

Page 34: Creating Database Tables

Creating Tables in the MySQL Visual Environment Generates the SQL command to create

the table Doesn't save the command or generate a

script

Page 35: Creating Database Tables

Test Yourself: What data type declaration would you use to create a database field that stores part descriptions (DESCRIPTION) in the Premiere Products PART table?

a. VARCHAR(30)

b. CHAR(30)

c. VARCHAR(10)

d. CHAR(10)

e. None of the above

Page 36: Creating Database Tables

Test Yourself: What data type would you use to create a database field that stores part quantities on hand (ON_HAND) in the Premiere Products PARTS table?

a. INT

b. SMALLINT

c. BIGINT

d. DECIMAL

e. Either a or b

ON_HAND

50

45

32

21

8

12

22

12

8

9

Page 37: Creating Database Tables

Test Yourself: What data type declaration would you use to create a database field that stores part prices (PRICE) in the Premiere Products PARTS table?

a. VARCHAR(10)

b. DECIMAL(4,2)

c. DECIMAL(5,2)

d. DOUBLE

e. None of the above

PRICE

$24.95

$794.95

$165.00

$129.95

$495.00

$399.99

$159.95

$349.95

$595.00

$1390.00

Page 38: Creating Database Tables

Test Yourself: What data type would you use to store ZIP code (ZIP) values in the Premiere Products REP table?

a. CHAR(5)

b. TINYINT

c. DECIMAL(5,0)

d. VARCHAR(10)

e. None of the above

ZIP

33321

33553

33336