Database Management
System
Dr. Tran Anh Tuan
Dr. Tran Anh Tuan, Faculty of Mathematics and Computer
Science, University of Science, HCMC
Dr. Tran Anh Tuan, Faculty of Mathematics and Computer
Science, University of Science, HCMC
Syllabus
• Lecture 1 : Basic SQL Commands
• Lecture 2 : Advanced SQL Commands
• Lecture 3 : Stored Procedures and Functions
• Lecture 4 : Trigger, Transaction, Cursor and Temporary Table
• Lecture 5 : Security, Role, Server Backup, and Server Recovery
• Lecture 6 : Data Synchronization, SQL Profiler, Linked Server, Job Schedule
• Lecture 7 : Basic MongoDB Commands
• Lecture 8 : Advanced MongoDB Commands
• Lecture 9 : SQL Server and MongoDB connection from Application
• Lecture 10 : Final Project
Dr. Tran Anh Tuan, Faculty of Mathematics and Computer
Science, University of Science, HCMC
Outline
Database Commands
SELECT name FROM master.dbo.sysdatabases
IF NOT EXISTS (SELECT name FROM master.dbo.sysdatabases
WHERE name = N'Northwind')
CREATE DATABASE [Northwind]
USE [Northwind]
IF db_id('Northwind') IS NOT NULL
BEGIN
SELECT 'database does exist'
END
ELSE
BEGIN
SELECT 'database does not exist'
END
DB
Northwind
SELECT
SELECT
SELECT * FROM Customer
SELECT FirstName, LastName, City
FROM Customer
INSERT
INSERT
INSERT INTO Customer (FirstName, LastName, City, Country, Phone)
SELECT LEFT(ContactName, CHARINDEX(' ',ContactName) - 1),
SUBSTRING(ContactName, CHARINDEX(' ',ContactName) + 1, 100),
City, Country, Phone
FROM Supplier
WHERE CompanyName = 'Bigfoot Breweries'
UPDATE
DELETE
TRUNCATE TABLE Customer
ORDER BY
SELECT CompanyName, ContactName, City, Country
FROM Supplier
ORDER BY CompanyName
SELECT CompanyName, ContactName, City, Country
FROM Supplier
ORDER BY CompanyName DESC
SELECT Id, CompanyName, City, Country
FROM Supplier
WHERE Country IN ('USA', 'Japan', 'Germany')
ORDER BY Country ASC, CompanyName DESC
SELECT TOP
SELECT TOP 10 Id, ProductName, UnitPrice, Package
FROM Product
ORDER BY UnitPrice DESC
ORDER BY OFFSET
• Select all product skip 10 first expensive ones
SELECT Id, ProductName, UnitPrice, Package
FROM Product
ORDER BY UnitPrice DESC
OFFSET 10 ROWS
• - Select all product with highest unitprice from 10 to 15
SELECT Id, ProductName, UnitPrice, Package
FROM Product
ORDER BY UnitPrice DESC
OFFSET 10 ROWS
FETCH NEXT 5 ROWS ONLY
SELECT DISTINCT
SELECT DISTINCT Country
FROM Supplier
ORDER BY COUNTRY
SELECT COUNT (DISTINCT Country)
FROM Supplier
SELECT MIN, MAX
SELECT MAX(TotalAmount)
FROM [Order]
WHERE YEAR(OrderDate) = 2014
SELECT MAX(OrderDate)
FROM [Order]
WHERE YEAR(OrderDate) = 2013
SELECT COUNT, SUM, and AVG
SELECT COUNT(Id)
FROM Customer
SELECT SUM(TotalAmount)
FROM [Order]
WHERE YEAR(OrderDate) = 2013
SELECT AVG(TotalAmount)
FROM [Order]
WHERE AND, OR, NOT
SELECT Id, FirstName, LastName, City, Country
FROM Customer
WHERE FirstName = 'Thomas' AND LastName = 'Hardy'
SELECT Id, FirstName, LastName, City, Country
FROM Customer
WHERE Country = 'Spain' OR Country = 'France'
SELECT Id, FirstName, LastName, City, Country
FROM Customer
WHERE NOT Country = 'USA'
WHERE BETWEEN
SELECT Id, ProductName, UnitPrice
FROM Product
WHERE UnitPrice BETWEEN 10 AND 20
ORDER BY UnitPrice
SELECT Id, ProductName, UnitPrice
FROM Product
WHERE UnitPrice NOT BETWEEN 5 AND 100
ORDER BY UnitPrice
SELECT COUNT(Id), SUM(TotalAmount)
FROM [Order]
WHERE OrderDate BETWEEN '1/1/2013' AND '1/31/2013'
WHERE IN
SELECT Id, CompanyName, City, Country
FROM Supplier
WHERE Country IN ('USA', 'UK', 'Japan')
SELECT Id, ProductName, UnitPrice
FROM Product
WHERE UnitPrice NOT IN (10,20,30,40,50)
SELECT Id, FirstName, LastName, Country
FROM Customer
WHERE Country IN
(SELECT Country
FROM Supplier)
WHERE LIKE
SELECT Id, ProductName, UnitPrice, Package
FROM Product
WHERE ProductName LIKE 'Ca%'
SELECT Id, ProductName, UnitPrice, Package
FROM Product
WHERE ProductName LIKE 'Cha_' OR ProductName LIKE 'Chan_'
IS NULL
SELECT Id, CompanyName, Phone, Fax
FROM Supplier
WHERE Fax IS NULL
SELECT Id, CompanyName, Phone, Fax
FROM Supplier
WHERE Fax IS NOT NULL
GROUP BY
SELECT COUNT(Id), Country
FROM Customer
GROUP BY Country
GROUP BY
SELECT COUNT(Id), Country
FROM Customer
GROUP BY Country
ORDER BY COUNT(Id) DESC
SELECT SUM(O.TotalPrice), C.FirstName, C.LastName
FROM [Order] O JOIN Customer C
ON O.CustomerId = C.Id
GROUP BY C.FirstName, C.LastName
ORDER BY SUM(O.TotalPrice) DESC
HAVING
SELECT COUNT(Id), Country
FROM Customer
GROUP BY Country
HAVING COUNT(Id) > 10
HAVING
SELECT COUNT(Id), Country
FROM Customer
WHERE Country <> 'USA'
GROUP BY Country
HAVING COUNT(Id) >= 9
ORDER BY COUNT(Id) DESC
SELECT AVG(TotalAmount), FirstName, LastName
FROM [Order] O JOIN Customer C ON O.CustomerId = C.Id
GROUP BY FirstName, LastName
HAVING AVG(TotalAmount) BETWEEN 1000 AND 1200
Alias
SELECT COUNT(C.Id) AS TotalCustomers, C.Country AS
Nation
FROM Customer C
GROUP BY C.Country
SELECT C.Id AS Identifier, C.LastName + ', ' + C.FirstName AS CustomerName,
SUM(O.TotalAmount) AS TotalSpent
FROM [Order] O JOIN Customer C ON O.CustomerId = C.Id
GROUP BY C.Id, C.LastName + ', ' + C.FirstName
ORDER BY TotalSpent DESC
JOIN
JOIN
SELECT OrderNumber, TotalAmount, FirstName,
LastName, City, Country
FROM [Order] JOIN Customer
ON [Order].CustomerId = Customer.Id
JOIN
SELECT O.OrderNumber, CONVERT(date,O.OrderDate) AS Date,
P.ProductName, I.Quantity, I.UnitPrice
FROM [Order] O
JOIN OrderItem I ON O.Id = I.OrderId
JOIN Product P ON P.Id = I.ProductId
ORDER BY O.OrderNumber
LEFT JOIN
SELECT OrderNumber, TotalAmount, FirstName, LastName, City,
Country
FROM Customer C LEFT JOIN [Order] O
ON O.CustomerId = C.Id
ORDER BY TotalAmount
RIGHT JOIN
SELECT TotalAmount, FirstName, LastName, City, Country
FROM [Order] O RIGHT JOIN Customer C
ON O.CustomerId = C.Id
WHERE TotalAmount IS NULL
FULL JOIN
SELECT C.FirstName, C.LastName, C.Country AS
CustomerCountry,
S.Country AS SupplierCountry, S.CompanyName
FROM Customer C FULL JOIN Supplier S
ON C.Country = S.Country
ORDER BY C.Country, S.Country
SELF JOIN
SELECT B.FirstName AS FirstName1, B.LastName AS LastName1,
A.FirstName AS FirstName2, A.LastName AS LastName2,
B.City, B.Country
FROM Customer A, Customer B
WHERE A.Id <> B.Id
AND A.City = B.City
AND A.Country = B.Country
ORDER BY A.Country
UNION
SELECT 'Customer' As Type,
FirstName + ' ' + LastName AS ContactName,
City, Country, Phone
FROM Customer
UNION
SELECT 'Supplier',
ContactName,
City, Country, Phone
FROM Supplier
Subqueries
Subqueries
SELECT ProductName
FROM Product
WHERE Id IN (SELECT ProductId
FROM OrderItem
WHERE Quantity > 100)
SELECT FirstName, LastName,
OrderCount = (SELECT COUNT(O.Id) FROM [Order] O WHERE O.CustomerId = C.Id)
FROM Customer C
WHERE ANY, ALL
SELECT ProductName
FROM Product
WHERE Id = ANY ( SELECT ProductId
FROM OrderItem
WHERE Quantity = 1)
SELECT DISTINCT FirstName + ' ' + LastName as
CustomerName
FROM Customer, [Order]
WHERE Customer.Id = [Order].CustomerId
AND TotalAmount > ALL
(SELECT AVG(TotalAmount)
FROM [Order]
GROUP BY CustomerId)
WHERE EXISTS
SELECT CompanyName
FROM Supplier
WHERE EXISTS
(SELECT ProductName
FROM Product
WHERE SupplierId = Supplier.Id
AND UnitPrice > 100)
SELECT INTO
SELECT * INTO SupplierUSA
FROM Supplier
WHERE Country = 'USA'
INSERT INTO
INSERT INTO Customer (FirstName, LastName, City, Country, Phone)
SELECT LEFT(ContactName, CHARINDEX(' ',ContactName) - 1) AS FirstName,
SUBSTRING(ContactName, CHARINDEX(' ',ContactName) + 1, 100) AS LastName,
City, Country, Phone
FROM Supplier
WHERE Country = 'Canada'
THANK YOU
Dr. Tran Anh Tuan, Faculty of Mathematics and Computer Science, University of
Science, HCMC