Upload
roth-guthrie
View
63
Download
0
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
Creating Database Tables
CS 320
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
Required Software
MySQL DBMS MySQL Workbench SQL editor (or another
command-line SQL query editor)
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
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)
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
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
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
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
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
Specifying Which Database to Use For Creating Tables
USE database_name
USE candy
You'll need to specify to USE your database:
USE morrisjp;
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))
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 /* … */
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
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
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
Database Field Data Types
Specify:Type of data the field storesMaximum data size
Purpose:Specify internal encodingOptimize internal storage useProvide error checking
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
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)
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)
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
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?
Integer Data Type Examples
fieldname integer_data_type
prod_id TINYINT
cust_id INT
purch_id BIGINT
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
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…
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
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
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
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)
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))
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
Dropping a Database Table
Use IF EXISTS in a script to avoid error messages
DROP TABLE table_name
DROP TABLE IF EXISTS table_name
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 (…
Creating Tables in the MySQL Visual Environment Generates the SQL command to create
the table Doesn't save the command or generate a
script
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
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
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
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