Top Banner
Diploma in Web Engineering Module X: Working with MySQL Databases Rasan Samarasinghe ESOFT Computer Studies (pvt) Ltd. No 68/1, Main Street, Pallegama, Embilipitiya.
56

DIWE - Working with MySQL Databases

Feb 19, 2017

Download

Engineering

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: DIWE - Working with MySQL Databases

Diploma in Web Engineering

Module X: Working with MySQL Databases

Rasan SamarasingheESOFT Computer Studies (pvt) Ltd.No 68/1, Main Street, Pallegama, Embilipitiya.

Page 2: DIWE - Working with MySQL Databases

Contents

1. What is a Database?2. The Relational Data Model3. Relationships4. Normalization5. Functional Dependency 6. Normal Forms7. DBMS8. What is MySQL?9. PHP Connect to MySQL 10. Create a MySQL Database

11. Connect to Database 12. Close Database13. Create a MySQL Table 14. Insert Data Into MySQL 15. Get Last ID 16. Insert Multiple Records 17. Prepared Statements18. Select Data From MySQL 19. Update Data in MySQL 20. Delete Data From MySQL

Page 3: DIWE - Working with MySQL Databases

What is a Database?

Database is a collection of interrelated data items that can be processed by one or more application

systems.

Page 4: DIWE - Working with MySQL Databases

The Relational Data Model

Data elements are stored in different tables made up of rows and columns. Relates data in different

tables through the use of common data element(s).

Page 5: DIWE - Working with MySQL Databases

What is a Relation?

Data is presented to the user as tables:• Tables are comprised of rows and a fixed number of

named columns.• Columns are attributes describing an entity. Each column

must have an unique name and a data type.

Page 6: DIWE - Working with MySQL Databases

The Relational Data Model

Page 7: DIWE - Working with MySQL Databases

The Relational Data Model

Page 8: DIWE - Working with MySQL Databases

The Relational Data Model

Page 9: DIWE - Working with MySQL Databases

The Relational Data Model

Page 10: DIWE - Working with MySQL Databases

Relationships

• One to One Relationship• One to Many Relationship• Many to Many Relationship

Page 11: DIWE - Working with MySQL Databases

One to One Relationship

Page 12: DIWE - Working with MySQL Databases

One to One Relationship

Page 13: DIWE - Working with MySQL Databases

One to Many Relationship

Page 14: DIWE - Working with MySQL Databases

One to Many Relationship

Page 15: DIWE - Working with MySQL Databases

Many to Many Relationship

Page 16: DIWE - Working with MySQL Databases

Many to Many Relationship

Page 17: DIWE - Working with MySQL Databases

Normalization

• In relational database design, the process of organizing data to minimize redundancy.

• Normalization usually involves dividing a database into two or more tables and defining relationships between the tables.

Page 18: DIWE - Working with MySQL Databases

Advantages of Normalization

Reduction of data redundancy within tables:

Reduce data storage space. Reduce inconsistency of data. Remove insert, update and delete anomalies. Improve flexibility of the system.

Page 19: DIWE - Working with MySQL Databases

Functional Dependency

Normalization is a process based on Functional Dependencies.

Functional Dependency is a constraint between two attributes or two sets of attributes

The functional dependency of B on A is represented by an arrow: A → B

e.g.NID → Name, Address, Birth dateVID → Model, ColorISBN → Title, Author, Publisher

Page 20: DIWE - Working with MySQL Databases

Normal Forms

1NF any multi-valued columns have been removed

2NF any partial functional dependencies have been removed

3NF any transitive dependencies have been removed

Page 21: DIWE - Working with MySQL Databases

Purchase Order Relation in 0NF

Page 22: DIWE - Working with MySQL Databases

Purchase Order Relation in 1NF

Page 23: DIWE - Working with MySQL Databases

Problems - 1NF

INSERT PROBLEMCannot know available parts until an order is placed (e.g. P4 is bush)

DELETE PROBLEMLoose information of part P7 if we cancel purchase order 115 (e.g. Delete PO-PART for Part No P7)

UPDATE PROBLEM:To change description of Part P3 we need to change every record in PO-PART containing Part No P3

Page 24: DIWE - Working with MySQL Databases

Purchase Order Relations in 2NF

Page 25: DIWE - Working with MySQL Databases

Problems - 2NF

INSERT PROBLEMCannot know available suppliers until an order is placed (e.g. 200 is hardware stores)

DELETE PROBLEMLoose information of supplier 100 if we cancel purchase order 116 (e.g. Delete PO for Supplier No 100)

UPDATE PROBLEMTo change name of Supplier 222 we need to change every record in PO containing Supplier No 222

Page 26: DIWE - Working with MySQL Databases

Purchase Order Relations in 3NF

Page 27: DIWE - Working with MySQL Databases

Normalized Relations

Page 28: DIWE - Working with MySQL Databases

Database Management Systems (DBMS)

DBMS is a software that enables users to define, create, maintain and control the access to a

database.

Page 29: DIWE - Working with MySQL Databases

DBMS Functions

A. Data DefinitionB. Data EntryC. Data ManipulationD. Data DisplayE. Data SecurityF. Data IntegrityG. Backup and Recovery

Page 30: DIWE - Working with MySQL Databases

What is MySQL?

• MySQL is a database system used on the web• MySQL is a database system that runs on a server• MySQL is ideal for both small and large applications• MySQL is very fast, reliable, and easy to use• MySQL uses standard SQL• MySQL compiles on a number of platforms• MySQL is free to download and use• MySQL is developed, distributed, and supported by

Oracle Corporation• MySQL is named after co-founder Monty Widenius's

daughter: My

Page 31: DIWE - Working with MySQL Databases

PHP Connect to MySQL (object oriented)

$servername = "localhost";$username = "username";$password = "password";

// Create connection$conn = new mysqli($servername, $username, $password);

// Check connectionif ($conn->connect_error) { die("Connection failed: " . $conn->connect_error);} echo "Connected successfully";

Page 32: DIWE - Working with MySQL Databases

PHP Connect to MySQL (procedural)

$servername = "localhost";$username = "username";$password = "password";

// Create connection$conn = mysqli_connect($servername, $username, $password);

// Check connectionif (!$conn) { die("Connection failed: " . mysqli_connect_error());}echo "Connected successfully";

Page 33: DIWE - Working with MySQL Databases

Create a MySQL Database (object oriented)

// Create database$sql = "CREATE DATABASE myDB";

if ($conn->query($sql) === TRUE) { echo "Database created successfully";} else { echo "Error creating database: " . $conn->error;}

Page 34: DIWE - Working with MySQL Databases

Create a MySQL Database (procedural)

// Create database$sql = "CREATE DATABASE myDB";

if (mysqli_query($conn, $sql)) { echo "Database created successfully";} else { echo "Error creating database: " . mysqli_error($conn);}

Page 35: DIWE - Working with MySQL Databases

Connect to Database (object oriented)

$servername = "localhost";$username = "username";$password = "password";$dbname = "myDB";

// Create connection$conn = new mysqli($servername, $username, $password, $dbname);// Check connectionif ($conn->connect_error) { die("Connection failed: " . $conn->connect_error);}

Page 36: DIWE - Working with MySQL Databases

Connect to Database (procedural)

$servername = "localhost";$username = "username";$password = "password";$dbname = "myDB";

// Create connection$conn = mysqli_connect($servername, $username, $password, $dbname);// Check connectionif (!$conn) { die("Connection failed: " . mysqli_connect_error());}

Page 37: DIWE - Working with MySQL Databases

Close Database

The connection will be closed automatically when the script ends. To close the connection before, use the following:

Object oriented:$conn->close();

Procedural:mysqli_close($conn);

Page 38: DIWE - Working with MySQL Databases

Create a MySQL Table (object oriented)

// sql to create table$sql = "CREATE TABLE tblStudent (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL,lastname VARCHAR(30) NOT NULL,email VARCHAR(50),reg_date TIMESTAMP)";

if ($conn->query($sql) === TRUE) { echo "Table tblStudent created successfully";} else { echo "Error creating table: " . $conn->error;}

Page 39: DIWE - Working with MySQL Databases

Create a MySQL Table (procedural)

// sql to create table$sql = "CREATE TABLE tblStudent (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL,lastname VARCHAR(30) NOT NULL,email VARCHAR(50),reg_date TIMESTAMP)";

if (mysqli_query($conn, $sql)) { echo "Table tblStudent created successfully";} else { echo "Error creating table: " . mysqli_error($conn);}

Page 40: DIWE - Working with MySQL Databases

Insert Data Into MySQL (object oriented)

$sql = "INSERT INTO tblStudent (firstname, lastname, email)VALUES ('Hirosh', 'Nuwan', '[email protected]')";

if ($conn->query($sql) === TRUE) { echo "New record inserted successfully";} else { echo "Error: " . $sql . "<br>" . $conn->error;}

Page 41: DIWE - Working with MySQL Databases

Insert Data Into MySQL (procedural)

$sql = "INSERT INTO tblStudent (firstname, lastname, email)VALUES ('Hirosh', 'Nuwan', '[email protected]')";

if (mysqli_query($conn, $sql)) { echo "New record inseted successfully";} else { echo "Error: " . $sql . "<br>" . mysqli_error($conn);}

Page 42: DIWE - Working with MySQL Databases

Get ID of The Last Inserted Record (object oriented)

$sql = "INSERT INTO tblStudent (firstname, lastname, email)VALUES ('Hirosh', 'Nuwan', '[email protected]')";

if ($conn->query($sql) === TRUE) { $last_id = $conn->insert_id; echo "New record created successfully. Last inserted ID is: " . $last_id;} else { echo "Error: " . $sql . "<br>" . $conn->error;}

Page 43: DIWE - Working with MySQL Databases

Get ID of The Last Inserted Record (procedural)

$sql = "INSERT INTO tblStudent (firstname, lastname, email)VALUES ('Hirosh', 'Nuwan', '[email protected]')";

if (mysqli_query($conn, $sql)) { $last_id = mysqli_insert_id($conn); echo "New record created successfully. Last inserted ID is: " . $last_id;} else { echo "Error: " . $sql . "<br>" . mysqli_error($conn);}

Page 44: DIWE - Working with MySQL Databases

Insert Multiple Records Into MySQL (object oriented)

$sql = "INSERT INTO MyGuests (firstname, lastname, email)VALUES ('Roshan', 'Nuwan', '[email protected]');";$sql .= "INSERT INTO MyGuests (firstname, lastname, email)VALUES ('Ruwan', 'Fernando', '[email protected]');";$sql .= "INSERT INTO MyGuests (firstname, lastname, email)VALUES ('Lahi', 'Hasi', '[email protected]')";

if ($conn->multi_query($sql) === TRUE) { echo "New records created successfully";} else { echo "Error: " . $sql . "<br>" . $conn->error;}

Page 45: DIWE - Working with MySQL Databases

Insert Multiple Records Into MySQL (procedural)

$sql = "INSERT INTO MyGuests (firstname, lastname, email)VALUES ('Roshan', 'Nuwan', '[email protected]');";$sql .= "INSERT INTO MyGuests (firstname, lastname, email)VALUES ('Ruwan', 'Fernando', '[email protected]');";$sql .= "INSERT INTO MyGuests (firstname, lastname, email)VALUES ('Lahi', 'Hasi', '[email protected]')";

if (mysqli_multi_query($conn, $sql)) { echo "New records created successfully";} else { echo "Error: " . $sql . "<br>" . mysqli_error($conn);}

Page 46: DIWE - Working with MySQL Databases

Prepared Statements

• Prepared Statements reduces parsing time as the preparation on the query is done only once.

• Bound parameters minimize bandwidth to the server as you need send only the parameters each time, and not the whole query.

• Prepared statements are very useful against SQL injections.

Page 47: DIWE - Working with MySQL Databases

Prepared Statements// prepare and bind$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");$stmt->bind_param("sss", $firstname, $lastname, $email);

// set parameters and execute$firstname = "Janaka";$lastname = "Sameera";$email = "[email protected]";$stmt->execute();

$firstname = "Mahura";$lastname = "Gamlath";$email = "[email protected]";$stmt->execute();

echo "New records created successfully";$stmt->close();

Page 48: DIWE - Working with MySQL Databases

Prepared Statements

"INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)"

question mark (?) is where we want to substitute in an integer, string, double or blob value.

Page 49: DIWE - Working with MySQL Databases

Prepared Statements

$stmt->bind_param("sss", $firstname, $lastname, $email);

binds the parameters to the SQL query and tells the database what the parameters are.

First argument lists the types of data that the parameters are.

i - integerd - doubles - stringb - BLOB

Page 50: DIWE - Working with MySQL Databases

Select Data From MySQL (object oriented)

$sql = "SELECT id, firstname, lastname FROM tblStudent";$result = $conn->query($sql);

if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; }} else { echo "0 results";}

Page 51: DIWE - Working with MySQL Databases

Select Data From MySQL (procedural)

$sql = "SELECT id, firstname, lastname FROM tblStudent";$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) { // output data of each row while($row = mysqli_fetch_assoc($result)) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; }} else { echo "0 results";}

Page 52: DIWE - Working with MySQL Databases

Update Data in MySQL (object oriented)

$sql = "UPDATE tblStudent SET lastname='Perera' WHERE id=2";

if ($conn->query($sql) === TRUE) { echo "Record updated successfully";} else { echo "Error updating record: " . $conn->error;}

Page 53: DIWE - Working with MySQL Databases

Update Data in MySQL (procedural)

$sql = "UPDATE tblStudent SET lastname='Perera' WHERE id=2";

if (mysqli_query($conn, $sql)) { echo "Record updated successfully";} else { echo "Error updating record: " . mysqli_error($conn);}

Page 54: DIWE - Working with MySQL Databases

Delete Data From MySQL (object oriented)

$sql = "DELETE FROM tblStudent WHERE id=3";

if ($conn->query($sql) === TRUE) { echo "Record deleted successfully";} else { echo "Error deleting record: " . $conn->error;}

Page 55: DIWE - Working with MySQL Databases

Delete Data From MySQL (procedural)

$sql = "DELETE FROM tblStudent WHERE id=3";

if (mysqli_query($conn, $sql)) { echo "Record deleted successfully";} else { echo "Error deleting record: " . mysqli_error($conn);}

Page 56: DIWE - Working with MySQL Databases

The End

http://twitter.com/rasansmn