0% found this document useful (0 votes)
63 views

My SQLtutorial

This document provides examples of creating and manipulating tables in MySQL to demonstrate entity and referential integrity. It shows how to create tables, add sample data, link tables using foreign keys, and handle errors that occur when violating constraints like duplicate primary keys or inconsistent foreign key values. The goal is to illustrate how a well-designed relational database with referential integrity prevents invalid or inconsistent data from being inserted.

Uploaded by

dickson_anane
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
63 views

My SQLtutorial

This document provides examples of creating and manipulating tables in MySQL to demonstrate entity and referential integrity. It shows how to create tables, add sample data, link tables using foreign keys, and handle errors that occur when violating constraints like duplicate primary keys or inconsistent foreign key values. The goal is to illustrate how a well-designed relational database with referential integrity prevents invalid or inconsistent data from being inserted.

Uploaded by

dickson_anane
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 4

MySQL Tutorial

Create the Publishers table, with primary auto-increment key PublisherID


CREATE TABLE Publishers
(
publisherID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
publisherName VARCHAR (200)
);

Add some data


INSERT INTO Publishers (publisherName) VALUES ("Prentice Hall");
INSERT INTO Publishers (publisherName) VALUES ("Penguin");

Show what is added


SELECT * FROM Publishers;

# publisherID publisherName
1 1 Prentice Hall
2 2 Penguin

Create Authors table


CREATE TABLE Authors
(
authorID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
firstName VARCHAR (200),
lastName VARCHAR (200)
);

Add some data


INSERT INTO Authors (firstName, lastName) VALUES ("Harvey", "Deitel");
INSERT INTO Authors (firstName, lastName) VALUES ("Ray", "Stoneham");
Create Titles table
CREATE TABLE Titles
(
isbn VARCHAR (20) NOT NULL PRIMARY KEY,
title VARCHAR (200),
editionNumber VARCHAR (10),
description VARCHAR (200),
publisherID INT,
copyright INT,
imagefile VARCHAR (200),
price FLOAT (6,2)
);

Add some data


INSERT INTO Titles
(isbn, title, editionNumber, description, publisherID, copyright, imagefile, price)
VALUES
("0130125075", "Java How to Program (Java 2)", "2", "Learn to program in the Java
programming language", 1, 2008, "java.jpg", 69.95);

Create AuthorISBN table with composite key


CREATE TABLE AuthorISBN
(
isbn VARCHAR (20),
authorID INT,
PRIMARY KEY (isbn, authorid)
);

Add some data


INSERT INTO AuthorISBN(isbn, authorid ) VALUES ("0130125075", 1);

View table structure


DESCRIBE AuthorISBN;

# Field Type Null Key Default Extra


1 isbn varchar(20) NO PRI
2 authorID int(11) NO PRI 0

Output data from linked tables


SELECT Titles.title, Titles.isbn, Authors.firstName, Authors.lastName,
Titles.copyright, Publishers.publisherName
FROM
(Publishers INNER JOIN Titles ON Publishers.publisherID = Titles.publisherID)
INNER JOIN
(Authors INNER JOIN AuthorISBN ON Authors.authorid = AuthorISBN.authorid)
ON Titles.isbn = AuthorISBN.isbn
ORDER BY Titles.title;

# title isbn firstName lastName copyright publisherName


Java How to
1 0130125075 Harvey Deitel 2008 Prentice Hall
Program (Java 2)

Delete all data from a table


DELETE FROM authorISBN;

NOTE: You will not be asked to confirm

Remove tables from the database


DROP TABLE authorISBN;
DROP TABLE Titles;

NOW ADD REFERENTIAL INTEGRITY

Create Titles table


CREATE TABLE Titles
(
isbn VARCHAR (20) NOT NULL PRIMARY KEY,
title VARCHAR (200),
editionNumber VARCHAR (10),
description VARCHAR (200),
publisherID INT UNSIGNED,
FOREIGN KEY (publisherID) REFERENCES Publishers (publisherID),
copyright INT,
imagefile VARCHAR (200),
price FLOAT (6,2)
) TYPE = INNODB;

Create authorISBN table with composite key and Referential Integrity


CREATE TABLE authorISBN
(
isbn varchar(20),
authorid INT UNSIGNED,
FOREIGN KEY (isbn) REFERENCES Titles (isbn),
FOREIGN KEY (Authorid) REFERENCES Authors (AuthorID),
PRIMARY KEY (isbn, authorid)
) TYPE = INNODB;

DESCRIBE Titles;

# Field Type Null Key Default Extra


1 isbn varchar(20) NO PRI
2 title varchar(200) YES
3 editionNumber varchar(10) YES
# Field Type Null Key Default Extra
4 description varchar(200) YES
5 publisherID int(10) unsigned YES MUL
6 copyright int(11) YES
7 imagefile varchar(200) YES
8 price float(6,2) YES

Add some data


INSERT INTO Titles
(isbn, title, editionNumber, description, publisherID, copyright, imagefile, price)
VALUES
("0130125075", "Java How to Program (Java 2)", "2", "Learn to program in the Java
programming language", 1, 2008, "java.jpg", 69.95);

Try adding duplicate primary key data


INSERT INTO Titles
(isbn, title, editionNumber, description, publisherID, copyright, imagefile, price)
VALUES
("0130125075", " (Java 2)", "2", "Learn to ", 1, 2008, "java.jpg", 69.95);

Error 1062:Duplicate entry '0130125075' for key 1

Try adding inconsistent data


INSERT INTO Titles
(isbn, title, editionNumber, description, publisherID, copyright, imagefile, price)
VALUES
("1234567890", "Java How to Program (Java 2)", "5", "Learn to program in the Java
programming language", 10, 2008, "java.jpg", 69.95);

Error 1452:Cannot add or update a child row: a foreign key constraint fails
(`mdb_sr65/titles`, CONSTRAINT `titles_ibfk_1` FOREIGN KEY (`publisherID`)
REFERENCES `publishers` (`publisherID`))

Try deleting the primary key when there are child records
DELETE FROM Publishers;

Error 1451:Cannot delete or update a parent row: a foreign key constraint fails
(`mdb_sr65/titles`, CONSTRAINT `titles_ibfk_1` FOREIGN KEY (`publisherID`)
REFERENCES `publishers` (`publisherID`))

A well designed database with entity and referential integrity is designed to minimise
the GIGO effect:
GIGO: Garbage In = Garbage Out

You might also like