Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
33 views7 pages

đề pesu23

The document contains SQL queries to create tables, add constraints, insert data, and perform queries on the tables. The queries create tables for customers, orders, order details, and products. Additional queries add constraints, create views, and perform joins.

Uploaded by

duongtnade170393
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
33 views7 pages

đề pesu23

The document contains SQL queries to create tables, add constraints, insert data, and perform queries on the tables. The queries create tables for customers, orders, order details, and products. Additional queries add constraints, create views, and perform joins.

Uploaded by

duongtnade170393
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

-- Q1:

CREATE TABLE Customer (

CustomerID INT PRIMARY KEY,

LastName VARCHAR(50),

FirstName VARCHAR(50),

Phone VARCHAR(50),

Address VARCHAR(100),

City VARCHAR(50),

Country VARCHAR(50)

CREATE TABLE [Order] (

OrderID INT PRIMARY KEY,

OrderDate DATE,

RequiredDate DATE,

ShippedDate DATE,

Status VARCHAR(50),

Comment VARCHAR(255),

CustomerID INT FOREIGN KEY (CustomerID) REFERENCES Customer(CustomerID)

CREATE TABLE Product (

ProductCode VARCHAR(50) PRIMARY KEY,

Name VARCHAR(100),

Scale VARCHAR(50),

Vendor VARCHAR(100),

Description TEXT,

BuyPrice DECIMAL(10, 2),

Inventory INT

)
CREATE TABLE OrderDetail (

OrderID INT ,

ProductCode VARCHAR(50),

Qty INT,

Price DECIMAL(10, 2),

PRIMARY KEY (OrderID, ProductCode),

FOREIGN KEY (OrderID) REFERENCES [Order](OrderID),

FOREIGN KEY (ProductCode) REFERENCES Product(ProductCode)

);

--Q2

ALTER TABLE OrderDetail

ADD CONSTRAINT CHK_Qty_GreaterThanZero CHECK (Qty > 0);

-- Q3

--3.1

SELECT CustomerID, Firstname, Lastname, Phone, Address

FROM Customer

WHERE City = 'Da Nang'

--3.2

SELECT OrderID, Qty AS Quantity, Price, Qty * Price AS Total

FROM OrderDetail;

-- 3.3

CREATE VIEW BestSellingItemsInJune AS

SELECT ProductCode, SUM(Quantity) AS TotalQuantity

FROM OrderDetail

WHERE MONTH(OrderDate) = 6

GROUP BY ProductCode
HAVING SUM(Quantity) >= ALL (

SELECT SUM(Quantity)

FROM OrderDetail

WHERE MONTH(OrderDate) = 6

GROUP BY ProductCode

OR (

SELECT COUNT(DISTINCT ProductCode)

FROM OrderDetail

WHERE MONTH(OrderDate) = 6

GROUP BY ProductCode

) = 1;

-- 3.4

SELECT Order1.OrderID, Order1.CustomerID, Order1.RequiredDate, Order1.ShippedDate,


SUM(OrderDetail.Qty * OrderDetail.Price) AS amount

FROM Order1

JOIN OrderDetail ON Order1.OrderID = OrderDetail.OrderID

GROUP BY Order1.OrderID, Order1.CustomerID, Order1.RequiredDate, Order1.ShippedDate

HAVING amount > 500;

Nam

Nguyễn Đức Hoàng Nam

ERD-> moo hinh quan he

SQL: insert, select, delete

function procedure, trigger, view

general scripts

Write an SQL query to create table Account Types with the following properties:

Id - unique number for every type. (Auto incremented, primary key)


Name - the name of the account type, no longer than 50 Unicode characters

(Cannot be null)

CREATE TABLE AccountTypes (

Id INT PRIMARY KEY AUTO_INCREMENT,

Name VARCHAR(50) NOT NULL

);

C.

Write an SQL query to create table Accounts with the following properties:

Id - unique number for every user. (Auto incremented, primary key)

AccountTypeld - references the AccountTypes table (foreign key)

Balance - decimal data type with up to 15 digits including 2 after the decimal point

and a default value of 0 (Not null)

Clientd - references the Clients table (foreign key)

CREATE TABLE Accounts (

Id INT PRIMARY KEY AUTO_INCREMENT,

AccountTypeId INT,

Balance DECIMAL(15, 2) NOT NULL DEFAULT 0,

ClientId INT,

FOREIGN KEY (AccountTypeId) REFERENCES AccountTypes(Id),

FOREIGN KEY (ClientId) REFERENCES Clients(Id)

);

write an sql query to find the first name and the last name of each Client

SELECT FirstName, LastName

FROM Clients;
e. Create a table - Logs (Logld, Accountld, OldBalance, NewBalance). Add a trigger to the

Accounts table that inserts a new record into the Logs table every time the balance on an

account changes.

CREATE TABLE Logs (

LogId INT PRIMARY KEY AUTO_INCREMENT,

AccountId INT,

OldBalance DECIMAL(15, 2),

NewBalance DECIMAL(15, 2),

ChangeDateTime DATETIME DEFAULT CURRENT_TIMESTAMP

);

DELIMITER //

CREATE TRIGGER account_balance_trigger

AFTER UPDATE ON Accounts

FOR EACH ROW

BEGIN

IF NEW.Balance <> OLD.Balance THEN

INSERT INTO Logs (AccountId, OldBalance, NewBalance)

VALUES (OLD.Id, OLD.Balance, NEW.Balance);

END IF;

END //

DELIMITER ;

Write an SQL query to find first and last names of all employees whose last name

"n" or "t".
SELECT FirstName, LastName

FROM Employees

WHERE LastName LIKE '%n%' OR LastName LIKE '%t%';

To find the average salary for each department, you can use the following SQL query:

SELECT DepartmentID, AVG(Salary) AS AverageSalary

FROM Employees

GROUP BY DepartmentID;

Find all the employees whose salary is equal to the maximum salary of their department.

The result should contain 4 columns: EmployeelD, FirstName, LastName, DepartmentID.

Sort by DepartmentID ascending.

SELECT e.EmployeeID, e.FirstName, e.LastName, e.DepartmentID

FROM Employees e

INNER JOIN (

SELECT DepartmentID, MAX(Salary) AS MaxSalary

FROM Employees

GROUP BY DepartmentID

) m ON e.DepartmentID = m.DepartmentID AND e.Salary = m.MaxSalary

ORDER BY e.DepartmentID ASC;

write an SQL query to find first and last name of 10 best paid employees, ordered descending by their
salary

SELECT first_name, last_name

FROM employees
ORDER BY salary DESC

LIMIT 10;

create function UF_FullEmailAddress(

@fName nvarchar(50), @lName nvarchar(50))

returns nvarchar(50)

as

begin

declare @domain nvarchar(50) = N'@softuni.vn'

set @domain = @fName+N'.'

You might also like