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

CSDL

Uploaded by

2254050068thuy
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)
5 views

CSDL

Uploaded by

2254050068thuy
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/ 5

create database QLDUAN

go
use QLDUAN
-- TẠO BẢNG PHÒNG BAN
create table PHONGBAN (
MaPB int constraint PB_MaPB_PK primary key,
TenPB varchar(10) constraint PB_TenPB_UQ unique,
TrPhong char(9) ,
NgNhanChuc datetime default (GetDate())
)
--TẠO BẢNG NHÂN VIÊN
CREATE TABLE NHANVIEN (
MaNV char(9) constraint NV_MaNV_PK primary key,
Ho varchar(15) not null,
TenDem varchar(15),
Ten varchar(15) not null,
NgSinh datetime,
DiaChi varchar(50),
GTinh char(3) constraint NV_GTinh_CK check ( GTinh in ('Nam','Nu')),
Luong int,
MaGSat char(9) constraint NV_MaGSat_FK foreign key (MaGSat) references
NHANVIEN(MaNV),
Phong int constraint NV_Phong_FK foreign key (Phong) references PHONGBAN(MaPB)
)
--TẠO BẢNG DỰ ÁN
create table DUAN(
MaDA int constraint DA_MaDA_PK primary key,
TenDA varchar(15) not null,
DiaDiem varchar(15),
PhongQL int constraint DA_PhongQL_FK foreign key (PhongQL) references
PHONGBAN(MaPB)
)
-- TAO BANG PHAN CONG
create table PHANCONG(
MaNV char(9) not null,
MaDA int not null,
SoGio decimal(3,1)
constraint PC_MaNV_MaDA_PK primary key (MaNV,MaDA),
constraint PC_MaNV_FK foreign key (MaNV) references NHANVIEN(MaNV),
constraint PC_MaDA_FK foreign key (MaDA) references DUAN(MaDA)
)
-- TAO BANG THANNHAN
create table THANNHAN(
MaNV char(9) not null,
TenTN char(15) not null,
GTinh char(3) constraint TN_GTinh_CK check (GTinh in ('Nam','Nu')),
NgSinh datetime,
QuanHe varchar(10),
constraint TN_MaNV_TenTN_PK primary key (MaNV,TenTN),
constraint TN_MaNV_FK foreign key (MaNV) references NHANVIEN(MaNV)
)
--TAO BANG DIADIEM_PHONG
Create table DIADIEM_PHONG(
MaPB int not null,
DiaDiem varchar(15) not null,
constraint DD_MaPB_DiaDiem_PK primary key (MaPB,DiaDiem),
constraint DD_MaPB_FK foreign key (MaPB) references PHONGBAN(MaPB)
)
alter table PHONGBAN
add constraint PB_TrPhong_FK foreign key (TrPhong) references NHANVIEN(MaNV)

--NHAP DU LIEU PHONG BAN


insert into PHONGBAN (MaPB,TenPB,TrPhong,NgNhanChuc)
VALUES ('5','Nghien cuu',null,'06/22/1988')
--NHAP DU LIEU NHAN VIEN
insert into NHANVIEN
values ('888665555','Le','Van','Bo','11/10/1937','45 Ho Van Hue, Phu Nhuan,
TPHCM','Nam',55000,null,1)
--CAP NHAT DU LIEU TRPHONG CHO PHONG BAN
update PHONGBAN
set TrPhong ='333445555'
where MaPB=5
update PHONGBAN
set TrPhong ='987654321'
where MaPB=4
update PHONGBAN
set TrPhong ='888665555'
where MaPB=1
--Tăng lương của tấ t cả các nhân viên phòng 5 thêm 1000
update NHANVIEN
set Luong=Luong+1000
where Phong=5
-- Xoá tấ t cả những địa điểm của phòng ban 5 trong bảng DIADIEM_PHONG
delete from DIADIEM_PHONG
where MaPB=5
--DOI TEN
exec sp_rename 'NHANVIEN.Ten','TEN'
--SỬA ĐỐI CÁC THUỘC TÍNH TRONG TABLE
--ALTER TABLE <tenbang>
--( ADD <tencot> <kieudl>
--( ALTER COLUMN <tencot> <kieudlmoi>
--( ADD CONSTRAINT <rangbuoc....>
--( DROP <tenrangbuoc> or COLUMN <tencot>
--Thứ tự truy vấ n: select_from_where_group by_having_order by
--Một sốcâu truy vấ n:
--CASE WHEN
select MASV,PHAI,MAKH,
MUCHOCBONG = case when HOCBONG > 150000
then 'Hoc bong cao'
else 'Muc trung binh' end
from DMSV
select k.MAKHOA,TENKHOA,
sum ( case when PHAI like N'Nam' then 1 else 0 end) as TNAM,
sum ( case when PHAI like N'Nữ' then 1 else 0 end) as TNU
from DMKHOA k, DMSV s
where k.MAKHOA=s.MAKH
group by k.MAKHOA,TENKHOA
--HAVING
select MAMH, count ( distinct MASV) as SLSV
from KETQUA
group by MAMH
having count(distinct MASV) > 3
--TRUY VẤ N CON
select * from KETQUA
where MAMH=1 and LANTHI=2 and DIEM = (select max(DIEM) from KETQUA where LANTHI=1
and MAMH=1)
select * from DMSV
where HOCBONG > ALL (select MAX(HOCBONG) from DMSV where MAKH='av')
select *
from DMSV
where NOISINH in (select NOISINH from DMSV where TENSV like N'Hải')
and TENSV not like N'Hải'
select MAKH,
sum ( case when HOCBONG > 0 then 1 else 0 end ) as [SLSV NHAN HB]
from DMSV
group by MAKH
having sum ( case when HOCBONG > 0 then 1 else 0 end ) >= all
(select sum ( case when HOCBONG > 0 then 1 else 0 end ) from DMSV group by MAKH)
or sum ( case when HOCBONG > 0 then 1 else 0 end ) <= all
(select sum ( case when HOCBONG > 0 then 1 else 0 end ) from DMSV group by MAKH)
--PHÉP KẾ T
select DMMH.MAMH, TENMH, count(distinct MASV) as SLSV
from DMMH join KETQUA on DMMH.MAMH=KETQUA.MAMH
group by DMMH.MAMH, TENMH
--Cho biết tên phòng ban, họ tên trưởng phòng của phòng ban có đông nhân viên nhất.
select Ho+' '+TenDem+' '+Ten as [TruongPhong] , TenPB
from PHONGBAN join NHANVIEN on PHONGBAN.MaPB=NHANVIEN.Phong
where MaNV in ( select TrPhong from PHONGBAN
where MaPB = (select MaPB from PHONGBAN join NHANVIEN on
PHONGBAN.MaPB=NHANVIEN.Phong
--UNION
select DMSV.MASV,TENSV,MAKH
from DMSV,DMKHOA
where DMSV.MAKH=DMKHOA.MAKHOA
and MAKH='AV' and HOCBONG>0
union
select DMSV.MASV,TENSV,MAKH
from DMSV,KETQUA
where DMSV.MASV=KETQUA.MASV
and DMSV.MASV not in ( select MASV from ketqua where DIEM<5)
--EXISTS
select *
from DMMH
where not exists ( select * from dmsv
where not exists (select * from KETQUA
where KETQUA.MASV=DMSV.MASV and KETQUA.MAMH=DMMH.MAMH))
--Cho biết mã nhân viên có người thân và tham gia đề án.
select MaNV
from NHANVIEN
where exists ( select * from PHANCONG
where exists (select * from THANNHAN where NHANVIEN.MaNV=PHANCONG.MaNV
and NHANVIEN.MaNV= THANNHAN.MaNV))
--Cho biết MaNV, TenNV các nhân viên tham gia tất cả các đề án.
select MaNV
from PHANCONG
group by MaNV
having count(MaNV) >= ( select count(MaDA) from DUAN)
--or
select MaNV,Ten
from NHANVIEN
where not exists ( select * from DUAN
where not exists (select * from PHANCONG where
NHANVIEN.MaNV=PHANCONG.MaNV and DUAN.MaDA=PHANCONG.MaDA))
--Tìm họ tên của từng nhân viên và người phụ trách trực tiếp của nhân viên đó
select nv.Ho+' '+nv.TenDem+' '+nv.Ten as [Ho va Ten], ql.Ho+' '+ql.TenDem+'
'+ql.Ten as NgGiamSat
from NHANVIEN nv, NHANVIEN ql
where nv.MaGSat=ql.MaNV
--
use AdventureWorks
go
--1
select d.SalesOrderID,OrderDate,sum(OrderQty*UnitPrice) as SubTotal
from Sales.SalesOrderDetail d join Sales.SalesOrderHeader h on
d.SalesOrderID=h.SalesOrderID
where month(OrderDate)=6 and year(OrderDate)=2008
group by d.SalesOrderID,OrderDate
having sum(OrderQty*UnitPrice) > 7000
--2
select Title, Count(*) as GountOfPerson
from HumanResources.Employee
group by Title
having Count(*) > 20
--3
select Name, year(s.ModifiedDate)as Year,SUM(OrderQty) as CountOfOrderQty
from Production.Product p join Sales.SalesOrderDetail s on
p.ProductID=s.ProductID
where Name like N'Bike%' or Name like N'Sport%'
group by Name,year(s.ModifiedDate)
having SUM(OrderQty) > 500
--4
select p.ProductID,Name,count(d.ProductID)
from Production.Product p join Sales.SalesOrderDetail d on
p.ProductID=d.ProductID join Sales.SalesOrderHeader h on
d.SalesOrderID=h.SalesOrderID
where month(OrderDate)=7 and year(OrderDate)= 2008
group by p.ProductID,Name
having count(d.ProductID) > 100
--
--1
select t.TerritoryID, count(h.CustomerID) as CountOfCust, Sum(OrderQty*UnitPrice)
as SubTotal
from Sales.SalesTerritory t join Sales.SalesOrderHeader h on
t.TerritoryID=h.TerritoryID join Sales.SalesOrderDetail d on
h.SalesOrderID=d.SalesOrderID
where t.CountryRegionCode='US'
group by t.TerritoryID
--2
select v.VendorID, Name, ProductID, sum(OrderQty) as
SumOfQty,Sum(OrderQty*UnitPrice) as SubTotal
from Purchasing.PurchaseOrderDetail d join Purchasing.PurchaseOrderHeader h on
d.PurchaseOrderID=h.PurchaseOrderID join Purchasing.Vendor v on
h.VendorID=v.VendorID
where Name like N'%Bicycles'
group by v.VendorID,Name,ProductID
having Sum(OrderQty*UnitPrice)>800000
--3
select d.DepartmentID,Name,avg(Rate) as AvgOfRate
from HumanResources.Department d join HumanResources.EmployeeDepartmentHistory e
on d.DepartmentID=e.DepartmentID join HumanResources.EmployeePayHistory p on
e.EmployeeID=p.EmployeeID
group by d.DepartmentID,Name
having avg(Rate) > 30
--4
select p.ProductID,Name
from Production.Product p join Sales.SalesOrderDetail d on
p.ProductID=d.ProductID join Sales.SalesOrderHeader h on
d.SalesOrderID=h.SalesOrderID
where month(OrderDate)= 7 and year(OrderDate)=2008
group by p.ProductID,Name
having count(d.SalesOrderID) >= all ( select count(SalesOrderID) from
Sales.SalesOrderDetail group by ProductID)
--3 Tính tổ ng trị giá của những hóa đom với Mã theo dõi giao hàng có 3 ký tự đầ u
là 4BD
select SalesOrderID,CarrierTrackingNumber,Sum(OrderQty*UnitPrice) as SumOfQty
from Sales.SalesOrderDetail
where CarrierTrackingNumber like N'4BD%'
group by SalesOrderID,CarrierTrackingNumber
--4 Liệt kê các sản phẩ m (Product) có đon giá (UnitPrice)<25 và sốlượng bán
trung bình >5
select p.ProductID,Name,avg(OrderQty) as AvgOfQty
from Production.Product p join Sales.SalesOrderDetail d on
p.ProductID=d.ProductID
where UnitPrice<25
group by p.ProductID,Name
having avg(OrderQty)>5
--5 Liệt kê các sản phẩ m có trên 500 đom đặt hàng trong quí 1 năm 2008 và có
tổng tri giá >10000,
select p.ProductID,Name,count(d.SalesOrderID) as CountOfOrderID,
Sum(OrderQty*UnitPrice) as SubTotal
from Production.Product p join Sales.SalesOrderDetail d on
p.ProductID=d.ProductID join Sales.SalesOrderHeader h on
d.SalesOrderID=h.SalesOrderID
where datepart(q,OrderDate)= 1 and year(OrderDate)=2008
group by p.ProductID,Name
having count(d.SalesOrderID)>500
--6 Liệt kê danh sách các khách hàng có trên 25 hóã đơn đặt hàng từ năm 2007 đến 2008
select h.CustomerID, FirstName+' '+LastName as FullName, count(h.SalesOrderID) as
CountOfOrders
from Sales.SalesOrderHeader h join Person.Contact c on h.ContactID=c.ContactID
where year(OrderDate) between 2007 and 2008
group by h.CustomerID,FirstName,LastName
having count(h.SalesOrderID) > 25

You might also like