Monday, October 12, 2009

SQL - My Database

I've included the queries to create the tables for an online TShirt Order Management System (My project).
I have also created a couple of views and stored procedures to add, delete and update tables. Feel free to use and modify the code below for your own database :)

TABLE CREATION



--
--*** CREATE TABLES
--*** -------------------------------------------------------------------------------
--*** Customers, Orders, Suppliers, TShirts, OrderDetails
--***
--******************************************************************************
--***** AUTHOR: Denis K DATE: 05/10/2009
--******************************************************************************
CREATE TABLE Customers
(
CustomerID INT IDENTITY(1000,1) PRIMARY KEY,
FirstName VARCHAR(20) NOT NULL,
LastName VARCHAR(20) NOT NULL,
Address VARCHAR(40) NOT NULL,
City VARCHAR(20) NOT NULL,
Country VARCHAR(20) NOT NULL,
DOB DATETIME NOT NULL,
Mobile NCHAR(10),
Status INT DEFAULT 0
)


CREATE TABLE Orders
(
OrderID INT IDENTITY(1,1) PRIMARY KEY,
OrderDate DATETIME,
CustomerID INT NOT NULL,
FOREIGN KEY (CustomerID) REFERENCES Customers (CustomerID)
)

CREATE TABLE Suppliers
(
SupplierID INT IDENTITY(1000,1) PRIMARY KEY,
CompanyName VARCHAR(20) NOT NULL,
ContactName VARCHAR(20) NOT NULL,
Address VARCHAR(40) NOT NULL,
City VARCHAR(20) NOT NULL,
Phone VARCHAR(15) NOT NULL,
Fax VARCHAR(15) NOT NULL,
HomePage VARCHAR(30),
Status INT DEFAULT 0
)

CREATE TABLE TShirts
(
TShirtID INT IDENTITY(50000,1) PRIMARY KEY,
ProductName VARCHAR(20) NOT NULL,
Size VARCHAR(20) NOT NULL,
Color VARCHAR(20) NOT NULL,
UnitPrice MONEY,
UnitsInStock INT,
Discontinued INT DEFAULT 0,
Picture VARCHAR(40),
SupplierID INT NOT NULL,
FOREIGN KEY (SupplierID) REFERENCES Suppliers (SupplierID)
)

CREATE TABLE OrderDetails
(
OrderDetailsID INT IDENTITY(1,1) PRIMARY KEY,
Quantity INT NOT NULL,
Discount MONEY,
OrderID INT NOT NULL,
TShirtID INT NOT NULL,
FOREIGN KEY (OrderID) REFERENCES Orders (OrderID),
FOREIGN KEY (TShirtID) REFERENCES TShirts (TShirtID)
)




VIEWS AND STORED PROCEDURES



********************************************************************************
CUSTOMERS
********************************************************************************

CREATE VIEW view_DisplayAllCustomers AS
SELECT CustomerID, FirstName, LastName, Address, City, Country, DOB, Mobile, Status
FROM Customers


CREATE VIEW view_DisplayActiveCustomers AS
SELECT CustomerID, FirstName, LastName, Address, City, Country, DOB, Mobile, Status
FROM Customers WHERE Status = 0


CREATE VIEW view_DisplayInactiveCustomers AS
SELECT CustomerID, FirstName, LastName, Address, City, Country, DOB, Mobile, Status
FROM Customers WHERE Status = 1




(
@FirstName VARCHAR(20),
@LastName VARCHAR(20),
@Address VARCHAR(40),
@City VARCHAR(20),
@Country VARCHAR(20),
@DOB DATETIME,
@Mobile NCHAR(10),
@Status INT
)

AS
INSERT INTO Customers (FirstName, LastName, Address, City, Country, DOB, Mobile, Status)
VALUES (@FirstName, @LastName, @Address, @City, @Country, @DOB, @Mobile, @Status)
RETURN


CREATE PROCEDURE dbo.spUpdateCustomer
(
@CustomerID INT,
@FirstName VARCHAR(20),
@LastName VARCHAR(20),
@Address VARCHAR(40),
@City VARCHAR(20),
@Country VARCHAR(20),
@DOB DATETIME,
@Mobile NCHAR(10),
@Status INT
)
AS
UPDATE Customers
SET FirstName = @FirstName,
LastName = @LastName,
Address = @Address,
City = @City,
Country = @Country,
DOB = @DOB,
Mobile = @Mobile,
Status = @Status
WHERE CustomerID = @CustomerID
RETURN


CREATE PROCEDURE dbo.spDeleteCustomer
(
@CustomerID INT
)

AS
DELETE FROM Customers WHERE CustomerID = @CustomerID
RETURN


CREATE PROCEDURE dbo.spDeactivateCustomer

(
@CustomerID INT
)

AS
UPDATE Customers SET Status = 1
WHERE CustomerID = @CustomerID
RETURN


CREATE PROCEDURE dbo.spDeactivateCustomer

(
@CustomerID INT
)

AS
UPDATE Customers SET Status = 1
WHERE CustomerID = @CustomerID
RETURN


CREATE PROCEDURE dbo.spActivateCustomer
(
@CustomerID INT
)

AS
UPDATE Customers SET Status = 0
WHERE CustomerID = @CustomerID
RETURN




********************************************************************************
SUPPLIERS
********************************************************************************

CREATE VIEW view_DisplayAllSuppliers AS
SELECT *
FROM Suppliers


CREATE VIEW view_DisplayActiveSuppliers AS
SELECT *
FROM Suppliers
WHERE Status = 0


CREATE VIEW view_DisplayInactiveSuppliers AS
SELECT *
FROM Suppliers
WHERE Status = 1


CREATE PROCEDURE dbo.spAddNewSupplier

(
@CompanyName VARCHAR(20),
@ContactName VARCHAR(20),
@Address VARCHAR(40),
@City VARCHAR(20),
@Phone VARCHAR(15),
@Fax VARCHAR(15),
@HomePage VARCHAR(30),
@Status INT
)

AS
INSERT INTO Suppliers (CompanyName, ContactName, Address, City, Phone,
Fax, HomePage, Status)
VALUES
(@CompanyName, @ContactName, @Address, @City, @Phone,
@Fax, @HomePage, @Status)
RETURN


CREATE PROCEDURE dbo.spUpdateSupplier

(
@SupplierID INT,
@CompanyName VARCHAR(20),
@ContactName VARCHAR(20),
@Address VARCHAR(40),
@City VARCHAR(20),
@Phone VARCHAR(15),
@Fax VARCHAR(15),
@HomePage VARCHAR(30),
@Status INT
)

AS
UPDATE Suppliers SET CompanyName = @CompanyName,
ContactName = @ContactName,
Address = @Address,
City = @City,
Phone = @Phone,
Fax = @Fax,
HomePage = @HomePage,
Status = @Status
WHERE SupplierID = @SupplierID
RETURN



CREATE PROCEDURE dbo.spDeleteSupplier

(
@SupplierID INT
)

AS
DELETE FROM Suppliers WHERE SupplierID = @SupplierID
RETURN


CREATE PROCEDURE dbo.spDeactivateSupplier
(
@SupplierID INT
)

AS
UPDATE Suppliers SET Status = 1
WHERE SupplierID = @SupplierID
RETURN


CREATE PROCEDURE dbo.spActivateSupplier
(
@SupplierID INT
)

AS
UPDATE Suppliers SET Status = 0
WHERE SupplierID = @SupplierID
RETURN


********************************************************************************
T-SHIRTS
********************************************************************************
CREATE VIEW view_DisplayAllTShirts AS
SELECT *
FROM TShirts


CREATE VIEW view_DisplayActiveTShirts AS
SELECT *
FROM TShirts
WHERE Discontinued = 0


CREATE VIEW view_DisplayDiscontinuedTShirts AS
SELECT *
FROM TShirts
WHERE Discontinued = 1


CREATE PROCEDURE dbo.spAddNewTShirt

(
@ProductName VARCHAR(20),
@Size VARCHAR(20),
@Color VARCHAR(20),
@UnitPrice MONEY,
@UnitsInStock INT,
@Discontinued INT,
@Picture VARCHAR(40),
@SupplierID INT
)

AS
INSERT INTO TShirts (ProductName, Size,Color, UnitPrice, UnitsInStock,
Discontinued, Picture, SupplierID)
VALUES
(@ProductName, @Size, @Color, @UnitPrice, @UnitsInStock,
@Discontinued, @Picture, @SupplierID)
RETURN


CREATE PROCEDURE dbo.spUpdateTShirt
(
@TShirtID INT,
@ProductName VARCHAR(20),
@Size VARCHAR(20),
@Color VARCHAR(20),
@UnitPrice MONEY,
@UnitsInStock INT,
@Discontinued INT,
@Picture VARCHAR(40),
@SupplierID INT)
AS
UPDATE TShirt SET ProductName = @ProductName,
Size = @Size, Color = @Color, UnitPrice = @UnitPrice,
UnitsInStock = @UnitsInStock, Discontinued = @Discontinued,
Picture = @Picture, SupplierID = @SupplierID
WHERE TShirtID = @TShirtID
RETURN


CREATE PROCEDURE dbo.spDeleteTShirt

(
@TShirtID INT
)

AS
DELETE FROM TShirts WHERE TShirtID = @TShirtID
RETURN



CREATE PROCEDURE dbo.spDeactivateTShirt
(
@TShirtID INT
)

AS
UPDATE TShirts SET Discontinued = 1
WHERE TShirtID = @TShirtID
RETURN


CREATE PROCEDURE dbo.spActivateTShirt
(
@TShirtID INT
)

AS
UPDATE TShirts SET Discontinued = 0
WHERE TShirtID = @TShirtID
RETURN