CNTTK9B

By KuteoTeokuLove

87 0 0

More

CNTTK9B

87 0 0
By KuteoTeokuLove

BAI1 QUANLYBANHANG.sql

CREATE DATABASE QUANLYBANHANG

USE QUANLYBANHANG

CREATE TABLE DMKHACH(

MAK CHAR(10) PRIMARY KEY,

TENK CHAR(40) NOT NULL,

DC CHAR(50),

DT CHAR(15)

)

CREATE TABLE DMH(

MAH CHAR(10) PRIMARY KEY,

TENH CHAR(30) NOT NULL,

DVT CHAR(15)

)

CREATE TABLE HOADONBAN(

SOHD CHAR(10),

MAK CHAR(10),

NGAYHD SMALLDATETIME NOT NULL,

DIENGIAI CHAR(30)

CONSTRAINT KC_HOADONBAN PRIMARY KEY (SOHD),

CONSTRAINT KN_HOADONBAN FOREIGN KEY (MAK) REFERENCES DMKHACH(MAK)

)

CREATE TABLE CHITIETHOADON(

SOHD CHAR(10),

MAH CHAR(10),

SL INT,

DONGIA INT,

CONSTRAINT KC_CHITIETHOADON PRIMARY KEY (SOHD,MAH),

CONSTRAINT KN_CHITIETHOADON FOREIGN KEY (SOHD) REFERENCES HOADONBAN(SOHD),

CONSTRAINT KN1_CHITIETHOADON FOREIGN KEY (MAH) REFERENCES DMH(MAH)

)

--1.DUA RA DANH SACH MAT HANG CHUA DUOC BAN TRONG THANG 9 NAM 2009--

SELECT * FROM DMH

WHERE MAH NOT IN(SELECT MAH FROM CHITIETHOADON

WHERE SOHD IN(SELECT SOHD FROM HOADONBAN

WHERE MONTH(NGAYHD)='9' AND YEAR(NGAYHD)='2009'))

--DUA RA DANH SACH KHACH HANG CO DIA CHI O THAI NGUYEN VA TUNG MUA HANG TRONG THANG 9 NAM 2009--

SELECT * FROM DMKHACH

WHERE DC='THAI NGUYEN' AND MAK IN(SELECT MAK FROM HOADONBAN

WHERE MONTH(NGAYHD)='9' AND YEAR(NGAYHD)='2009')

--DUA RA SO LUONG DA BAN TUONG UNG CUA TUNG MAT HANG TRONG THANG 9 NAM 2009--

SELECT MAH,SUM(SL) AS SL

FROM CHITIETHOADON

WHERE SOHD IN(SELECT SOHD FROM HOADONBAN

WHERE MONTH(NGAYHD)='9' AND YEAR(NGAYHD)='2009')

GROUP BY MAH

--DUA RA TONG SO LUONG HANG DA BAN CHO MUC DICH MUA HANG 'TIEP KHACH'--

SELECT SUM(SL) AS SL

FROM CHITIETHOADON

WHERE SOHD IN(SELECT SOHD FROM HOADONBAN

WHERE DIENGIAI='TIEP KHACH')

--HIEN THI THONG TIN KHACH HANG DA TUNG MUA HANG TAI CUA HANG--

SELECT * FROM DMKHACH

WHERE MAK IN(SELECT MAK FROM HOADONBAN)

--2.TAO VIEW DE TONG HOP DU LIEU VE TUNG MAT HANG DA DUOC BAN (CAU TRUC VIEW GOM CAC THUOC TINH:

--MAH,TENH,DVT,SLBAN--

ALTER VIEW VD2

AS

SELECT DMH.MAH,TENH,DVT,SUM(SL) AS TSL

FROM DMH,CHITIETHOADON

WHERE DMH.MAH=CHITIETHOADON.MAH

GROUP BY DMH.MAH,TENH,DVT

SELECT * FROM VD2

--3.TAO VIEW DE TONG HOP DU LIEU VE CAC MAT HANG DA DUOC BAN VOI SO LUONG LON NHAT--

CREATE VIEW TG

AS

SELECT MAH,SUM(SL) AS TSL

FROM CHITIETHOADON

GROUP BY MAH

CREATE VIEW VD3

AS

SELECT DMH.*,TSL

FROM DMH,TG

WHERE DMH.MAH =TG.MAH AND TSL IN (SELECT MAX(TSL) FROM TG)

--4.TAO VIEW DE TONG HOP DU LIEU VE CAC KHACH HANG DA MUA HANG TRONG NGAY 20/10/2005--

CREATE VIEW VD4

AS

SELECT * FROM DMKHACH

WHERE MAK IN(SELECT MAK FROM HOADONBAN

WHERE NGAYHD='10/20/2005')

--5.TAO THU TUC CO THAM SO VAO LA @SOHD DE DUA RA DANH MUC CAC MAT HANG CO TRONG HOA DON TREN--

CREATE PROC VD5

@SOHD CHAR(10)

AS

SELECT * FROM DMH

WHERE MAH IN(SELECT MAH FROM CHITIETHOADON

WHERE SOHD=@SOHD)

EXEC VD5 'HD1'

--6.TAO THU TUC CO THAM SO VAO LA @NGAY DE DUA RA DANH MUA CAC MAT HANG DA DUOC BAN VAO NGAY TREN

--DANH SACH DUA RA GOM CAC THUOC TINH SAU:MAH,TENH,DVT,SL--

ALTER PROC VD6

@NGAY SMALLDATETIME

AS

SELECT DMH.MAH,TENH,DVT,SL

FROM DMH,CHITIETHOADON

WHERE DMH.MAH=CHITIETHOADON.MAH 

 AND SOHD IN(SELECT SOHD FROM HOADONBAN

WHERE CONVERT(CHAR(10),NGAYHD)=CONVERT(CHAR(10),@NGAY))

EXEC VD6 '10/10/2010'

--7.TAO TRIGGER DE KIEM TRA KHI NHAP DU LIEU VAO BANG CHITIETHOADON.NEU SO LUONG HOAC DON GIA 

--NHAP VAO NHO HON 0 THI IN RA MAN HINH THONG BAO LOI "DU LIEU NHAP VAO KHONG HOP LE" VA BAN GHI NAY

--KHONG DUOC PHEP NHAP VAO BANG.NGUOC LAI IN RA MAN HINH THONG BAO"DU LIEU DA NHAP THANH CONG" --

 CREATE TRIGGER TG7

ON CHITIETHOADON

FOR INSERT

AS

IF EXISTS (SELECT SL,DONGIA FROM CHITIETHOADON

WHERE SL<0 OR DONGIA<0)

BEGIN

PRINT 'DU LIEU NHAP VAO KHONG HOP LE'

ROLLBACK TRAN

END

ELSE PRINT 'DU LIEU NHAP THANH CONG'

INSERT INTO CHITIETHOADON

VALUES('HD8','H03','-10','8000')

--8.TAO KIEU DU LIEU CURSOR DE LUU TRU THONG TIN VE CAC MAT HANG DA DUOC BAN TRONG NGAY 20/11/2006

--SAU DO DUA RA MAN HINH DANH SACH DU LIEU TREN--

--KHAI BAO--

DECLARE CS8 CURSOR FOR

SELECT * FROM DMH

WHERE MAH IN (SELECT MAH FROM CHITIETHOADON

WHERE SOHD IN (SELECT SOHD FROM HOADONBAN

WHERE NGAYHD='11/20/2006'))

--OPEN CURSOR--

OPEN CS8

--XU LY MAU TIN--

FETCH NEXT FROM CS8

WHILE @@FETCH_STATUS=0

BEGIN

FETCH NEXT FROM CS8

END

--DONG CURSOR--

CLOSE CS8

--HUY--

DEALLOCATE CS8

--9.THEM MOI MOT TRUONG TONGTIEN VAO BANG HOADONBAN--

ALTER TABLE HOADONBAN

ADD TONGTIEN INT

--10.DUNG KIEU DU LIEU CURSOR DE CAP NHAP DU LIEU CHO TRUONG TONGTIEN--

--KHAI BAO--

DECLARE CS10 CURSOR FOR

SELECT SOHD,SUM(SL*DONGIA) 

FROM CHITIETHOADON

GROUP BY SOHD

--MO--

OPEN CS10

--XU LY MAU TIN--

DECLARE @SOHD CHAR(10),@TONGTIEN FLOAT

FETCH NEXT FROM CS10

INTO @SOHD,@TONGTIEN

WHILE @@FETCH_STATUS=0

BEGIN

UPDATE HOADONBAN 

SET TONGTIEN=@TONGTIEN

WHERE SOHD=@SOHD

END

--DONG--

CLOSE CS10

--HUY--

DEALLOCATE CS10

quan ly ban nha

Create database QUANLYNHA1

use QUANLYNHA1

Create table Nha(

MaNnvarchar(10) not null Primary key,

TenChuNhanvarchar(30) not null,

GiaThueint not null,

DiaChiNhanvarchar(30) not null

)

Create table Khach(

MaKnvarchar(10) not null Primary key,

TenKnvarchar(30) not null,

DiaChinvarchar(30) not null,

SoDTnvarchar(15)

)

Create table HopDong(

SoHDnvarchar(10) not null Primary key,

MaNnvarchar(10) not null,

MaKnvarchar(10) not null,

NgayBDsmalldatetime not null,

NgayKTsmalldatetime not null,

Constraint KN1 Foreign key (MaN) References Nha(MaN),

Constraint KN2 Foreign key (MaK) References Khach(MaK)

)

Select *

From Nha

Select *

From Khach

From HopDong

Delete From Nha

Where MaN='N07'

Update Nha

Set GiaThue=GiaThue*1.05

/*Dua ra danh sach ve cac ngoi nha*/

Select *

From Nha

/*Dua ra thong tin ve cac khach hang da bat dau thue nha tu nam 2009*/

Select *

From Khach

Where MaK in (Select MaK From HopDong Where NgayBD>='01/01/2009')

/*Dua ra thong tin ve cac ngoi nha cho thue co dia chi o thai nguyen*/

Select *

From Nha

Where DiaChiNha='Thai Nguyen'

/*Dua ra thong tin ve cac ngoi nha chua tung duoc khach hang thue*/

Select *

From Nha

Where MaN not in (Select MaN From HopDong)

/*Dua ra thong tin ve cac khach hang da thue voi gia thue cao nhat*/

Select *

From Khach

Where MaK in (Select MaK 

 From HopDong

 Where MaN in (Select MaN From Nha 

Where GiaThue in (Select MAX(GiaThue) From Nha)))

/*Dua ra thong tin ve cac khach hang hom nay da het han hop dong thue nha*/

Select *

From Khach

Where MaK in (Select MaK From HopDong Where NgayKT=GETDATE())

/*Dua ra thong tin ve cac ngoi nha hien tai chua co khach hang thue*/

Select *

From Nha

Where MaN not in (Select MaN From HopDong Where GETDATE()< NgayKT)

/*Dua ra thong tin ve cac ngoi nha duoc thue vao ngay hom nay*/

Select *

From Nha

Where MaN in (Select MaN From HopDong Where NgayBD=GETDATE())

/*Tong hop tinh hinh thue nha cua nha co ma N01*/

Select Nha.*,Khach.*,SoHD,NgayBD,NgayKT

From Nha,Khach,HopDong

Where Nha.MaN=HopDong.MaN And HopDong.MaK=Khach.MaK And Nha.MaN='N01'

/*Tong hop thong tin ve cac khach hang da thue nha co ma KH01*/

Select *

From Khach

Where MaK in (Select MaK From HopDong Where MaK='KH01')

--2.TAO VIEW DE TONG HOP THONG TIN VE NHUNG NGOI NHA CO GIA THUE CAO NHAT--

CREATE VIEW VD2

AS

SELECT * FROM NHA

WHERE GIATHUE IN (SELECT MAX(GIATHUE) FROM NHA )

--3.TAO VIEW DE TONG HOP THONG TIN VE CAC KHACH HANG CO NGAY HOM NAY DA HET HAN HOP DONG--

CREATE VIEW VD3

AS

SELECT * FROM KHACH

WHERE MAK IN (SELECT MAK FROM HOPDONG

WHERE CONVERT(CHAR(10),NGAYKT)=CONVERT(CHAR(10),GETDATE()))

--4.TAO VIEW DE TONG HOP THONG TIN VE CAC NGOI NHA CHUA TUNG DUOC AI THUE--

CREATE VIEW VD4

AS

SELECT * FROM NHA

WHERE MAN NOT IN (SELECT MAN FROM HOPDONG)

--5.TAO THU TUC CO MOT THAM SO VAO LA @NGAY DE DUA RA DANH SACH CAC KHACH HANG DA HET HAN HOP DONG

--VAO NGAY TREN--

CREATE PROC VD5

@NGAY SMALLDATETIME

AS

SELECT * FROM KHACH

WHERE MAK IN (SELECT MAK FROM HOPDONG

WHERE CONVERT(CHAR(10),NGAYKT)=CONVERT(CHAR(10),@NGAY))

EXEC VD5 '10/30/2010'

--6.TAO THU TUC DE DUA RA MAN HINH DANH SACH CAC NGOI NHA HIEN TAI CHUA CO KHACH HANG THUE--

CREATE PROC VD6

AS

SELECT * FROM NHA

WHERE MAK NOT IN (SELECT MAK FROM HOPDONG

WHERE NGAYKT>GETDATE() )

--7.TAO THU TUC CO THAM SO LA @NGAY DE DUA RA DANH SACH CAC KHACH HANG BAT DAU THUE NHA VAO NGAY TREN--

CREATE PROC VD7

@NGAY SMALLDATETIME

AS

SELECT * FROM KHACH

WHERE MAK IN (SELECT MAK FROM HOPDONG

WHERE CONVERT(CHAR(10),NGAYBD)=CONVERT(CHAR(10),@NGAY))

EXEC VD7 '10/10/2010'

--8.TAO TRIGGER DE KIEM TRA KHI NHAP DU LIEU VAO BANG NHA.NEU GIA THUE NHAP VAO NHO HON 0 THI DUA RA

-- MAN HINH THONG BAO LOI "DU LIEU NHAP VAO KHONG HOP LE" VA BAN GHI NAY KHONG DUOC PHEP NHAP VAO 

--BANG.NGUOC LAI IN RA MAN HINH THONG BAO"DU LIEU DA NHAP THANH CONG" --

CREATE TRIGGER VD8

ON NHA

FOR INSERT

AS

IF EXISTS (SELECT GIATHUE FROM NHA

WHERE GIATHUE<0)

BEGIN

PRINT 'DU LIEU NHAP VAO KHONG HOP LE'

ROLLBACK TRAN

END

ELSE PRINT 'DU LIEU NHAP VAO THANH CONG'

INSERT INTO NHA

VALUES('N05','THANH',-10000,'THAI NGUYEN')

--9.SU DUNG KIEU DU LIEU CURSOR DE DUA RA MAN HINH THONG TIN VE CAC KHACH HANG DANG THUE CAC NGOI NHA

--CO DIA CHI O "TO 10,PHUONG PHAN DINH PHUNG"--

--KHAI BAO--

 DECLARE CS9 CURSOR FOR

SELECT KHACH.* FROM KHACH,HOPDONG,NHA

WHERE KHACH.MAK=HOPDONG.MAK  AND HOPDONG.MAN=NHA.MAN AND DIACHINHA ='TO 10 PHUONG PHAN DINH PHUNG'

--MO--

OPEN CS9

--XU LY MAU TIN--

FETCH NEXT FROM CS9

WHILE @@FETCH_STATUS=0

BEGIN

FETCH NEXT FROM CS9

END

--DONG--

CLOSE CS9

--HUY--

DEALLOCATE CS9

--10.SU DUNG KIEU DU LIEU CURSOR DE DUA RA DANH SACH CAC NGOI NHA HIEN TAI CHUA CO KHACH HANG THUE--

--KHAI BAO--

DECLARE CS10 CURSOR FOR

SELECT * FROM NHA

WHERE MAN NOT IN (SELECT MAN FROM HOPDONG

WHERE NGAYKT>GETDATE())

--MO--

OPEN CS10

--XU LY MAU TIN--

FETCH NEXT FROM CS10

WHILE @@FETCH_STATUS =0

BEGIN

FETCH NEXT FROM CS10

END

--DONG--

CLOSE CS10

--HUY--

DEALLOCATE CS10

quan ly sinh vien

CREATE DATABASE QLSV

USE QLSV

CREATE TABLE LOP(

MAL CHAR(10) PRIMARY KEY,

TENL CHAR(20) NOT NULL,

)

CREATE TABLE TINH(

MAT CHAR(10) PRIMARY KEY,

TENT CHAR(40),

)

CREATE TABLE SV(

MASV CHAR(15) PRIMARY KEY,

HOTEN CHAR(50) NOT NULL,

NGAYS SMALLDATETIME,

GT BIT NOT NULL,

MAL CHAR(10) NOT NULL,

MAT CHAR(10) NOT NULL,

DTB REAL,

CONSTRAINT KN1 FOREIGN KEY (MAL) REFERENCES LOP,

CONSTRAINT KN2 FOREIGN KEY (MAT) REFERENCES TINH

)

/*1. DUA RA THONG TIN VE NHUNG SINH VIEN CO DIEM TRUNG BINH DUOI 5*/

SELECT *

FROM SV

WHERE DTB<5

/*2.DUA RA THONG TIN VE SINH VIEN CO DIA CHI O THAI NGUYEN*/

SELECT *

FROM SV

WHERE MAT IN(SELECT MAT FROM TINH

WHERE TENT='THAI NGUYEN')

/*3.DUA RA THONG TIN VE CAC LOP HOC KHONG CO SINH VIEN NAO O HA NOI*/

SELECT *

FROM LOP

WHERE MAL NOT IN(SELECT MAL FROM SV

WHERE MAT IN(SELECT MAT FROM TINH

WHERE TENT='HA NOI' ))

/*4.TAO VIEW DE TONG HOP THONG TIN VE CAC SINH VIEN CO DIEM TRUNG BINH CAO NHAT*/

CREATE VIEW DTBMAX

AS

SELECT *

FROM SV

WHERE DTB IN (SELECT MAX(DTB) FROM SV)

SELECT * FROM DTBMAX

/*5.TAO VIEW DE TONG HOP THONG TIN VE CAC SINH VIEN CO DIEM TRUNG BINH CAO NHAT THEO TUNG LOP HOC*/

CREATE VIEW DCNL

AS

SELECT MAL,MAX(DTB) AS DCNL

FROM SV

GROUP BY MAL

CREATE VIEW DTBMAXLOP

AS

SELECT SV.* FROM SV,DCNL

WHERE SV.MAL=DCNL.MAL AND DTB=DCNL

SELECT * FROM DTBMAXLOP

/*6.TAO THU TUC DE DUA RA SI SO SINH VIEN CHO TUNG LOP HOC(DANH SACH,DUA RA PHAI CO CAC THUOC TINH SAU:MALOP,TENLOP,SISO*/

CREATE PROC SSSV

AS

SELECT SV.MAL,TENL,COUNT(SV.MAL) AS SISO

FROM SV,LOP

WHERE SV.MAL=LOP.MAL

GROUP BY SV.MAL,TENL

EXEC SSSV

/*7.TAO THU TUC CO THAM SO LA @TENLOP DE XOA THONG TIN VE NHUNG SINH VIEN HOC O LOP TREN*/

CREATE PROC XOA

@TENL CHAR(20)

AS 

DELETE FROM SV

WHERE MAL IN(SELECT MAL FROM LOP 

WHERE TENL=@TENL)

XOA 'THKT'

--8.TAO TRIGGER DE KIEM TRA DU LIEU KHI NHAP VAO BANG SV.NEU DTB NHAP VAO NHO HON 0 THI IN RA MAN HINH 

--THONG BAO LOI "DU LIEU NHAP VAO KHONG HOP LE" VA BAN GHI NAY KHONG DUOC PHEP NHAP VAO BANG.

--NGUOC LAI IN RA MAN HINH THONG BAO"DU LIEU DA NHAP THANH CONG" --

CREATE TRIGGER TG8

ON SV

FOR INSERT

AS

IF EXISTS (SELECT DTB FROM SV

WHERE DTB<0)

BEGIN

PRINT 'DU LIEU NHAP VAO KHONG HOP LE'

ROLLBACK TRAN

END

ELSE PRINT'DU LIEU NHAP THANH CONG'

INSERT INTO SV

VALUES('SV8','THUONG','10/10/1995','1','N01','T01',-7.0)

--9.SU DUNG KIEU DU LIEU CURSOR DE DUA RA MAN HINH DANH SACH SINH VIEN HOC O LOP CO TEN LA 'CAO DANG 2A'--

--KHAI BAO--

DECLARE CS9 CURSOR FOR

SELECT * FROM SV

WHERE MAL IN (SELECT MAL FROM LOP

WHERE TENL='CAO DANG 2A')

--MO--

OPEN CS9

--XU LY MAU TIN--

FETCH NEXT FROM CS9

WHILE @@FETCH_STATUS=0

BEGIN

FETCH NEXT FROM CS9

END

--DONG--

CLOSE CS9

--HUY--

DEALLOCATE CS9

quan ly thuc tap

CREATE DATABASE THUCTAP

USE THUCTAP

CREATE TABLE SV(

MASV CHAR(15) PRIMARY KEY,

HTSV CHAR(40) NOT NULL,

NGAYS SMALLDATETIME,

DC CHAR(50),

)

INSERT INTO SV

VALUES('SV01','NGOC LAN','10/30/1990','HA NOI')

INSERT INTO SV

VALUES('SV02','NGOC HUONG','11/28/1991','THAI NGUYEN')

INSERT INTO SV

VALUES('SV03','HUONG NHUNG','11/29/1991','NAM DINH')

INSERT INTO SV

VALUES('SV04','HONG NHUNG','11/11/1991','BINH DINH')

INSERT INTO SV

VALUES('SV05','HONG NHI','09/08/1989','NAM DINH')

CREATE TABLE DETAI(

MADT CHAR(10) PRIMARY KEY,

TENDT CHAR(50) NOT NULL,

GVHD CHAR(45),

)

INSERT INTO DETAI

VALUES('DT01','CSDL','NGUYEN HUONG')

INSERT INTO DETAI

VALUES('DT02','TIN','NGUYEN NGAN')

INSERT INTO DETAI

VALUES('DT03','TOAN','HONG NGAN')

INSERT INTO DETAI

VALUES('DT04','TOAN LY','HONG NAM')

INSERT INTO DETAI

VALUES('DT05','TOAN TIN','HONG NAM')

INSERT INTO DETAI

VALUES('DT06','TIN HOC','HONG NGAN')

CREATE TABLE SV_DETAI(

MADT CHAR(10),

MASV CHAR(15),

NTT CHAR(40) NOT NULL,

KQ INT,

CONSTRAINT KC PRIMARY KEY(MADT,MASV),

CONSTRAINT KN3 FOREIGN KEY (MADT) REFERENCES DETAI(MADT),

CONSTRAINT KN4 FOREIGN KEY (MASV) REFERENCES SV(MASV),

)

INSERT INTO SV_DETAI

VALUES('DT01','SV01','HA NOI','7')

INSERT INTO SV_DETAI

VALUES('DT02','SV02','NINH BINH','6')

INSERT INTO SV_DETAI

VALUES('DT03','SV03','NINH THUAN','8')

INSERT INTO SV_DETAI

VALUES('DT04','SV04','BINH THUAN','9')

INSERT INTO SV_DETAI

VALUES('DT05','SV05','BINH MINH','5')

--1.TAO VIEW DE TONG HOP THONG TIN VE CAC SINH VIEN THAM GIA THUC TAP TAI QUE--

CREATE VIEW SVTT

AS

SELECT *

FROM SV

WHERE MASV IN (SELECT MASV FROM SV_DETAI

WHERE DC=NTT)

SELECT * FROM SVTT

--2.TAO VIEW DE TONG HOP THONG TIN VE CAC SINH VIEN CO KET QUA CAO NHAT--

CREATE VIEW KQCN

AS

SELECT *

FROM SV

WHERE MASV IN(SELECT MASV FROM SV_DETAI

WHERE KQ IN(SELECT MAX(KQ) FROM SV_DETAI))

--3.TAO VIEW DE TONG HOP THONG TIN VE MOI GIAO VIEN DA VA DANG HUONG DAN BAO NHIEU SINH VIEN THUC TAP--

CREATE VIEW SL

AS

SELECT GVHD,COUNT(DETAI.MADT) AS SOSV

FROM DETAI,SV_DETAI

WHERE DETAI.MADT=SV_DETAI.MADT

GROUP BY GVHD

SELECT * FROM SL

--4.TAO THU TUC CO THAM SO VAO LA @GVHD DE DUA RA DANH SACH CAC SINH VIEN DO GIAO VIEN TREN DANG HUONG DAN--

CREATE PROC DSSV

@GVHD CHAR(45)

AS

SELECT * FROM SV

WHERE MASV IN(SELECT MASV FROM SV_DETAI

WHERE MADT IN(SELECT MADT FROM DETAI

WHERE GVHD=@GVHD))

DSSV 'HONG NAM'

--5.TAO THU TUC CO THAM SO VAO LA @NTT DE DUA RA DANH SACH CAC SINH VIEN THUC TAP TAI DIA DIEM TREN--

CREATE PROC DSSVTT

@NTT CHAR(40)

AS

SELECT * FROM SV

WHERE MASV IN(SELECT MASV FROM SV_DETAI

WHERE NTT=@NTT)

DSSVTT 'NINH BINH'

--6.TAO THU TUC DE DUA RA DANH SACH CAC DE TAI CHUA TUNG CO SINH VIEN NAO THAM GIA DANG KY THUC TAP--

CREATE PROC DSDT

AS

SELECT *

FROM DETAI

WHERE MADT NOT IN(SELECT MADT FROM SV_DETAI)

EXEC DSDT

--7.TAO TRIGGER DE KIEM TRA KHI NHAP DU LIEU VAO BANG SV_DETAI.NEU KET QUA THUC TAP  NHO HON 0 

--THI IN RA MAN HINH THONG BAO LOI "DU LIEU NHAP VAO KHONG HOP LE" VA BAN GHI NAY

--KHONG DUOC PHEP NHAP VAO BANG.NGUOC LAI IN RA MAN HINH THONG BAO"DU LIEU DA NHAP THANH CONG" --

CREATE TRIGGER TG7

ON SV_DETAI

FOR INSERT

AS

IF EXISTS (SELECT KQ FROM SV_DETAI

WHERE KQ<0)

BEGIN

PRINT 'DU LIEU NHAP VAO KHONG HOP LE'

ROLLBACK TRAN

END

ELSE PRINT 'DU LIEU NHAP THANH CONG'

INSERT INTO SV_DETAI

VALUES ('DT07','SV07','THAI NGUYEN',-9)

--8.DUNG KIEU DU LIEU CURSOR DE DUA RA MAN HINH DANH SACH CAC SINH VIEN PHAI THUC TAP LAI (NHUNG

--SINH VIEN CO KET QUA THUC TAP<5 YEU CAU PHAI THUC TAP LAI)--

--KHAI BAO--

DECLARE CS8 CURSOR FOR

SELECT * FROM SV

WHERE MASV IN (SELECT MASV FROM SV_DETAI

WHERE KQ<5)

 --MO--

OPEN CS8

--XU LY MAU TIN--

DECLARE @MASV CHAR(10),@HTSV CHAR(20),@NGAYS SMALLDATETIME,@DC CHAR(20)

FETCH NEXT FROM CS8

INTO @MASV,@HTSV,@NGAYS,@DC

WHILE @@FETCH_STATUS=0

BEGIN

PRINT @MASV+@HTSV+CONVERT(CHAR(20),@NGAYS)+@DC

FETCH NEXT FROM CS8

INTO @MASV,@HTSV,@NGAYS,@DC

END

--DONG--

CLOSE CS8

--HUY--

DEALLOCATE CS8

--9.DUNG KIEU DU LIEU CURSOR DE DUA RA MAN HINH DANH SACH CAC DE TAI CO KET QUA THUC TAP CAO NHAT--

--KHAI BAO--

DECLARE CS9 CURSOR FOR

SELECT * FROM DETAI

WHERE MADT IN (SELECT MADT FROM SV_DETAI

WHERE KQ IN (SELECT MAX(KQ) FROM SV_DETAI))

--MO--

OPEN CS9

--XU LY MAU TIN--

FETCH NEXT FROM CS9

WHILE @@FETCH_STATUS=0

BEGIN

FETCH NEXT FROM CS9

END

--DONG--

CLOSE CS9

--HUY--

DEALLOCATE CS9

quan ly thu vien

CREATE DATABASE QUANLYTHUVIEN

USE QUANLYTHUVIEN

CREATE TABLE SACH(

MAS CHAR(10) PRIMARY KEY,

TENS CHAR(50) NOT NULL,

NXB CHAR(50),

NAMXB INT,

TENTG CHAR(40),

)

CREATE TABLE DOCGIA(

MADG CHAR(15) PRIMARY KEY,

TENDG CHAR(40) NOT NULL,

DIACHIDG CHAR(50),

)

CREATE TABLE MUON_TRA(

MADG CHAR(15) NOT NULL,

MAS CHAR(10) NOT NULL,

NGAYMUON SMALLDATETIME,

SL INT,

NGAYHENTRA SMALLDATETIME,

NGAYTRA SMALLDATETIME,

CONSTRAINT KC PRIMARY KEY(MADG,MAS,NGAYMUON),

CONSTRAINT KN1 FOREIGN KEY (MADG) REFERENCES DOCGIA(MADG),

CONSTRAINT KN2 FOREIGN KEY (MAS) REFERENCES SACH(MAS),

)

/* 1.TAO VIEW DE TONG HOP THONG TIN VE CAC DOC GIA DA HET HAN TRA SACH NHUNG CHUA TRA*/

ALTER VIEW VD1

AS

SELECT *

FROM DOCGIA

WHERE MADG IN (SELECT MADG FROM MUON_TRA

WHERE NGAYHENTRA<GETDATE() AND NGAYTRA >GETDATE() OR NGAYTRA IS NULL)

SELECT *

FROM VD1

/* 2.TAO VIEW DE TONG HOP THONG TIN VE DANH MUC SACH CHUA TUNG DUOC DOC GIA NAO MUON*/

CREATE VIEW VD2

AS

SELECT *

FROM SACH

WHERE MAS NOT IN(SELECT MAS FROM MUON_TRA)

SELECT *

FROM VD2

/* 3.TAO VIEW DE TONG HOP THONG TIN VE TUNG LOAI SACH HIEN TAI CO DOC GIA DANG MUON( CAU TRUC VIEW 

GOM CAC THUOC TINH SAU:MASACH,TENSACH,TENTG,SOLUONG)*/

CREATE VIEW VD3

AS

SELECT SACH.MAS,TENS,TENTG,SUM(SL) AS SOLUONG 

FROM SACH,MUON_TRA

WHERE SACH.MAS=MUON_TRA.MAS AND NGAYTRA>GETDATE() OR NGAYTRA IS NULL 

GROUP BY SACH.MAS,TENS,TENTG

SELECT *

FROM VD3

/* 4.TAO THU TUC CO THAM SO LA @MADG DE DUA RA DANH MUC SACH MA DOC GIA TREN DANG MUON*/

CREATE PROC VD4

@MADG CHAR(15)

AS

SELECT SACH.*

FROM SACH,DOCGIA,MUON_TRA

WHERE SACH.MAS=MUON_TRA.MAS AND DOCGIA.MADG=MUON_TRA.MADG

AND DOCGIA.MADG=@MADG AND NGAYTRA>GETDATE() OR NGAYTRA IS NULL

EXEC VD4 'DG1'

/* 5. TAO THU TUC CO THAM SO LA @NGAYMUON DE DUA RA DANH SACH CAC DOC GIA DA MUON SACH VAO NGAY TREN*/

CREATE PROC MUONSACH

@NGAYMUON SMALLDATETIME

AS

SELECT DOCGIA.*

FROM DOCGIA,MUON_TRA

WHERE DOCGIA.MADG=MUON_TRA.MADG AND NGAYMUON=@NGAYMUON

EXEC MUONSACH '10/7/2010'

/* 6. TAO THU TUC DE DUA RA DANH SACH CAC DOC GIA NGAY HOM NAY LA HAN CUOI CUNG PHAI TRA SACH CHO THU VIEN*/

CREATE PROC HANTRA

AS

SELECT DOCGIA.*

FROM DOCGIA,MUON_TRA

WHERE DOCGIA.MADG=MUON_TRA.MADG AND DATEDIFF(DAY,NGAYHENTRA,GETDATE())=0

EXEC HANTRA

/* 7.TAO TRIGGER DE KIEM TRA DU LIEU KHI NHAP VAO BANG MUON_TRA NEU SO LUONG MUON NHO HON 0 THI 

DUA RA MAN HINH THONG BAO LOI VA BAN GHI NAY KHONG DUOC PHEP NHAP VAO BANG DU LIEU, NGUOC LAI 

DUA RA THONG BAO BAN GHI DA NHAP THANH CONG*/

CREATE TRIGGER TG7

ON MUON_TRA

FOR INSERT

AS

IF EXISTS (SELECT SL FROM MUON_TRA

WHERE SL<0)

BEGIN

PRINT 'DU LIEU NHAP VAO KHONG HOP LE'

ROLLBACK TRAN

END

ELSE PRINT 'DU LIEU NHAP THANH CONG'

/* 8. DUNG KIEU DU LIEU CUSTOR DE DUA RA MAN HINH DANH SACH CAC DOC GIA DA HIEN TAI VAN DANG

 MUON SACH CUA THU VIEN*/

 --KHAI BAO--

DECLARE CS8 CURSOR FOR

SELECT * FROM DOCGIA

WHERE MADG IN (SELECT MADG FROM MUON_TRA

WHERE NGAYTRA>GETDATE() OR NGAYTRA IS NULL)

--MO--

OPEN CS8

--XU LY MAU TIN--

FETCH NEXT FROM CS8

WHILE @@FETCH_STATUS=0

BEGIN

FETCH NEXT FROM CS8

END

--DONG--

CLOSE CS8

--HUY--

DEALLOCATE CS8

quan ly du an

CREATE DATABASE QUANLYDUAN

USE QUANLYDUAN

CREATE TABLE NHANVIEN(

MANV CHAR(10) PRIMARY KEY,

HOTEN CHAR(40) NOT NULL,

NGAYS SMALLDATETIME,

GOITINH CHAR(3) --GIOI TINH--

)

CREATE TABLE DUAN(

MADA CHAR(10) PRIMARY KEY,

TENDA CHAR(30) NOT NULL,

NGANSACH MONEY

)

CREATE TABLE THAMGIA(

MADA CHAR(10),

MANV CHAR(10),

TGBD SMALLDATETIME NOT NULL, --THOI GIAN BAT DAU--

TGKT SMALLDATETIME NOT NULL, --THOI GIAN KET THUC--

CONSTRAINT KC_THAMGIA PRIMARY KEY (MADA,MANV),

CONSTRAINT KN_THAMGIA FOREIGN KEY (MADA) REFERENCES DUAN(MADA),

CONSTRAINT KN1_THAMGIA FOREIGN KEY (MANV) REFERENCES NHANVIEN(MANV),

)

/*2.tao view de tong hop thong tin ve cac nhan vien chua tham gia bat ky du an nao*/

CREATE VIEW VD2

AS

SELECT * FROM NHANVIEN

WHERE MANV NOT IN (SELECT MANV FROM THAMGIA)

--3.tao view de tong hop thong tin ve cac du an co ngan sach lon nhat--

CREATE VIEW VD3

AS

SELECT * FROM DUAN

WHERE NGANSACH IN (SELECT MAX(NGANSACH) FROM DUAN)

--tao view de tong hop thong tin ve moi nhan vien da tham gia bao nhieu du an--

CREATE VIEW VD31

AS

SELECT NHANVIEN.MANV,HOTEN,NGAYS,GOITINH,COUNT(MADA) AS SODUAN

FROM NHANVIEN,THAMGIA

WHERE NHANVIEN.MANV=THAMGIA.MANV

GROUP BY NHANVIEN.MANV,HOTEN,NGAYS,GOITINH

--4.tao thu tuc co tham so la @tenda  de dua ra danh sach cac nhan vien tham gia du an tren--

CREATE PROC VD4

@TENDA CHAR(30)

AS

SELECT * FROM NHANVIEN

WHERE MANV IN (SELECT MANV FROM THAMGIA

WHERE MADA IN (SELECT MADA FROM DUAN

WHERE TENDA=@TENDA))

EXEC VD4 'DAU TU'

/* 5.TAO THU TUC CO THAM SO LA @TGKT VA @MADA DE DUA RA DANH SACH CAC NHAN VIEN PHAI HOAN THANH

DU AN DO VAO NGAY TREN*/

ALTER PROC VD5

@TGKT SMALLDATETIME,@MADA CHAR(10)

AS

SELECT * FROM NHANVIEN

WHERE MANV IN (SELECT MANV FROM THAMGIA

WHERE MADA=@MADA AND CONVERT(CHAR(10),TGKT)=CONVERT(CHAR(10),@TGKT))

DECLARE @TGKT SMALLDATETIME,@MADA CHAR (10)

SET @TGKT='10/10/2010'

EXEC VD5 @TGKT, 'DA1'

/*6.TAO TRIGGER DE KIEM TRA DU LIEU KHI NHAP VAO BANG DUAN.NEU NGANSACH NHO HON 0 THI IN RA MAN HINH

 THONG BAO LOI "DU LIEU NHAP VAO KHONG HOP LE" VA BAN GHI NAY KHONG DUOC PHEP NHAP VAO BANG.

NGUOC LAI IN RA MAN HINH THONG BAO"DU LIEU DA NHAP THANH CONG" */

CREATE TRIGGER TG6

ON DUAN

FOR INSERT

AS

IF EXISTS (SELECT NGANSACH FROM DUAN

WHERE NGANSACH<0)

BEGIN 

PRINT 'DU LIEU NHAP VAO KHONG HOP LE'

ROLLBACK TRAN

END

ELSE PRINT 'DU LIEU NHAP THANH CONG' 

/*7.DUNG KIEU DU LIEU CURSOR DE DUA RA DANH SACH NHAN VIEN BAT DAU THUC HIEN DU AN "PHONG

CHONG BENH MAT HOT" TU NGAY 20/11/2005 */

--KHAI BAO--

DECLARE CS7 CURSOR FOR

SELECT * FROM NHANVIEN

WHERE MANV IN (SELECT MANV FROM THAMGIA

WHERE TGBD='11/20/2005'

AND MADA IN (SELECT MADA FROM DUAN

WHERE TENDA='PHONG CHONG BENH MAT HOT'))

--MO--

OPEN CS7

--XU LY MAU TIN--

FETCH NEXT FROM CS7

WHILE @@FETCH_STATUS=0

BEGIN

FETCH NEXT FROM CS7

END

--DONG--

CLOSE CS7

--HUY--

DEALLOCATE CS7

/*8.DUNG KIEU DU LIEU CURSOR DE DUA RA DANH SACH CAC DU AN CHUA TUNG CO NHAN VIEN NAO THAM GIA

DANG KY */

--KHAI BAO--

DECLARE CS8 CURSOR FOR

SELECT * FROM DUAN

WHERE MADA NOT IN (SELECT MADA FROM THAMGIA)

--MO--

OPEN CS8

--XU LY MAU TIN--

FETCH NEXT FROM CS8

WHILE @@FETCH_STATUS=0

BEGIN

FETCH NEXT FROM CS8

END

--DONG--

CLOSE CS8

--HUY--

DEALLOCATE CS8

quan ly tai san

CREATE DATABASE QUANLYTAISAN

USE QUANLYTAISAN

create table dmphong

(map nvarchar(10)primary key,

tenp nvarchar(30)not null)

create table dmtaisan

(mats nvarchar(10)primary key,

tents nvarchar(30)not null,

donvi nvarchar(20),--DON VI TINH--

gia int)--DON GIA

create table phanphoi

(mats nvarchar(10)not null,

map nvarchar(10)not null,

soluong int,

ngaypp datetime,--NGAY PHAN PHOI TAI SAN--

ghichu nvarchar(20),

constraint kc primary key (mats,map),

constraint kn1 foreign key(mats)references dmtaisan(mats),

constraint kn2 foreign key (map)references dmphong(map) )

--2.TAO VIEW DE TONG HOP THONG TIN VE CAC TAI SAN CO DON GIA LON NHAT--

CREATE VIEW VD2

AS

SELECT * FROM DMTAISAN

WHERE GIA IN (SELECT MAX(GIA) FROM DMTAISAN) 

--3.TAO VIEW DE TONG HOP THONG TIN VE NHUNG TAI SAN CHUA TUNG DUOC PHAN PHOI CHO CAC PHONG DE SU DUNG--

CREATE VIEW VD3

AS

SELECT * FROM DMTAISAN

WHERE MATS NOT IN (SELECT MATS FROM PHANPHOI)

--4.TAO THU TUC CO THAM SO LA @TENP DE DUA RA DANH SACH CAC TAI SAN DUOC PHAN PHOI VAO PHONG TREN--

CREATE PROC VD4

@TENP CHAR(30)

AS

SELECT * FROM DMTAISAN

WHERE MATS IN (SELECT MATS FROM PHANPHOI

WHERE MAP IN (SELECT MAP FROM DMPHONG

WHERE TENP=@TENP))

EXEC VD4 'LAN'

--5.TAO THU TUC CO THAM SO LA @TENTS DE DUA RA DANH SACH CAC PHONG DUOC PHAN PHOI TAI SAN TREN--

CREATE PROC VD5

@TENTS CHAR(20)

AS

SELECT DMTAISAN.* 

FROM DMTAISAN,PHANPHOI

WHERE DMTAISAN.MATS=PHANPHOI.MATS AND TENTS=@TENTS

EXEC VD5 'SAT'

/*6.TAO TRIGGER DE KIEM TRA DU LIEU KHI NHAP VAO BANG DMTAISAN.NEU DON GIA NHAP VAO NHO HON 0

 THI IN RA MAN HINH THONG BAO LOI "DU LIEU NHAP VAO KHONG HOP LE" VA BAN GHI NAY KHONG DUOC PHEP 

NHAP VAO BANG.NGUOC LAI IN RA MAN HINH THONG BAO"DU LIEU DA NHAP THANH CONG" */

CREATE TRIGGER TG6

ON DMTAISAN

FOR INSERT

AS

IF EXISTS (SELECT GIA FROM DMTAISAN

WHERE GIA<0)

BEGIN

PRINT 'DU LIEU NHAP KHONG HOP LE'

ROLLBACK TRAN

END

ELSE PRINT 'DU LIEU NHAP THANH CONG'

quan ly diem thi

CREATE DATABASE QUANLYDIEM

USE QUANLYDIEM

CREATE TABLE SINHVIEN(

MASV CHAR(10) PRIMARY KEY,

HOTENSV CHAR(40) NOT NULL,

NGAYSINH SMALLDATETIME,

DIACHI CHAR(40),

DVHT INT--DON VI HOC TRINH--

)

CREATE TABLE MON(

MAM CHAR(10) PRIMARY KEY,

TENM CHAR(30)

)

CREATE TABLE DIEM(

MAM CHAR(10),

MASV CHAR(10),

PHACH CHAR(10),--SO PHACH--

DIEM FLOAT,--DIEM THI--

CONSTRAINT KC_DIEM PRIMARY KEY(MAM,MASV,PHACH),

CONSTRAINT KN_DIEM FOREIGN KEY (MAM) REFERENCES MON(MAM),

CONSTRAINT KN1_DIEM FOREIGN KEY (MASV) REFERENCES SINHVIEN(MASV)

)

/*2.TAP VIEW DE TONG HOP THONG TIN VE SINH VIEN CO DIEM THI CAO NHAT CUA MON "CSDL"*/

CREATE VIEW VD2

AS

SELECT * FROM SINHVIEN

WHERE MASV IN (SELECT MASV FROM DIEM

WHERE DIEM IN (SELECT MAX(DIEM) FROM DIEM)

AND MAM IN (SELECT MAM FROM MON

WHERE TENM='CSDL'))

/*3.TAO VIEW DE TONG HOP THONG TIN VE SINH VIEN CO DIA CHI O "THAI NGUYEN"*/

CREATE VIEW VD3

AS

SELECT * FROM SINHVIEN

WHERE DIACHI='THAI NGUYEN'

/*4.TAO VIEW CHO BIET THONG TIN VE CAC SINH VIEN SINH TRUOC NAM 1980*/

CREATE VIEW VD4

AS

SELECT * FROM SINHVIEN

WHERE YEAR(NGAYSINH)<1980

/*5.TAO THU TUC CO THAM SO DAU VAO LA @TENM DE DUA RA DANH SACH CAC SINH VIEN CO DIEM THI

CHUA DAT CUA MON HOC TREN*/

ALTER PROC VD5

@TENM CHAR(30)

AS

SELECT * FROM SINHVIEN

WHERE MASV IN (SELECT MASV FROM DIEM

WHERE DIEM<5 AND MAM IN (SELECT MAM FROM MON

WHERE TENM=@TENM))

EXEC VD5 'JAVA'

/*6.TAO THU TUC CO THAM SO DAU VAO @DIEM DE DUA RA DANH SACH CAC SINH VIEN CO DIEM THI

THAP HON DIEM TREN CUA MON HOC "CSDL"*/

CREATE PROC VD6

@DIEM FLOAT

AS

SELECT * FROM SINHVIEN

WHERE MASV IN (SELECT MASV FROM DIEM

WHERE DIEM<@DIEM AND MAM IN (SELECT MAM FROM MON

WHERE TENM='CSDL'))

EXEC VD6 9

/*7.TAO TRIGGER DE KIEM TRA VIEC NHAP  DU LIEU CHO BANG DIEM.NEU DIEM NHO HON 0 HOAC DIEM

LON HON 10 THI IN RA MAN HINH THONG BAO LOI "DU LIEU NHAP VAO KHONG HOP LE" VA BAN GHI NAY

KHONG DUOC PHEP NHAP VAO BANG.NGUOC LAI IN RA MAN HINH THONG BAO"DU LIEU DA NHAP THANH CONG"*/

CREATE TRIGGER TG8

ON DIEM

FOR INSERT

AS

IF EXISTS (SELECT DIEM FROM DIEM

WHERE DIEM<0 OR DIEM>10)

BEGIN

PRINT 'DU LIEU NHAP KHONG HOP LE'

ROLLBACK TRAN

END

ELSE PRINT 'DU LIEU NHAP THANH CONG'

INSERT INTO DIEM

VALUES ('M3','SV1','P07',12)

/*8.DUNG KIEU DU LIEU CURSOR DE DUA RA MAN HINH DANH SACH CAC SINH VIEN CO DIEM THI CAO

NHAT CUA CAC MON HOC*/

--TAO VIEW TRUNG GIAN--

ALTER VIEW MAXDIEM

AS

SELECT MAM,MAX(DIEM) AS DIEMCAONHAT

FROM DIEM

GROUP BY MAM

--KHAI BAO--

DECLARE CS8 CURSOR FOR

SELECT DIEM.MAM,SINHVIEN.MASV,HOTENSV,NGAYSINH,DIACHI,DVHT,DIEM

FROM SINHVIEN,MAXDIEM,DIEM

WHERE SINHVIEN.MASV=DIEM.MASV AND DIEM.MAM=MAXDIEM.MAM AND DIEM=DIEMCAONHAT

GROUP BY DIEM.MAM,SINHVIEN.MASV,HOTENSV,NGAYSINH,DIACHI,DVHT,DIEM

--MO--

OPEN CS8

--XU LY MAU TIN--

PRINT 'DANH SACH SINH VIEN CO DIEM THI CAO NHAT CUA CAC MON HOC LA'

PRINT 'MAM      MASV TENSVNGAYSINHDVHTDIEM'       

DECLARE @B1 CHAR(10),@B2 CHAR(10),@B3 CHAR(20),@B4 SMALLDATETIME,@B5 CHAR(20),@B6 INT,

@B7 FLOAT

FETCH NEXT FROM CS8

INTO @B1,@B2,@B3,@B4,@B5,@B6,@B7

WHILE @@FETCH_STATUS=0

BEGIN

PRINT @B1+@B2+@B3+CONVERT(CHAR(15),@B4)+@B5+CONVERT(CHAR(10),@B6)+CONVERT(CHAR(5),@B7)

FETCH NEXT FROM CS8

INTO @B1,@B2,@B3,@B4,@B5,@B6,@B7

END

--DONG--

CLOSE CS8

--HUY--

DEALLOCATE CS8

quan ly khach san

CREATE DATABASE QUANLYKHACHSAN

USE QUANLYKHACHSAN

CREATE TABLE KHACHHANG(

MAK CHAR(10) PRIMARY KEY,

TENK CHAR(40) NOT NULL,

DIACHI CHAR(40),

SDT CHAR(15)

)

DROP TABLE PHONG (

MAP CHAR(10) PRIMARY KEY,

TENP CHAR(30) NOT NULL,

LOAIP CHAR(20),--LOAI PHONG--

DONGIA FLOAT

)

CREATE TABLE DATPHONG(

MAK CHAR(10),

MAP CHAR(10),

NGAYNHANSMALLDATETIME,--NGAY NHAN PHONG--

NGAYTRASMALLDATETIME,--NGAY TRA PHONG--

CONSTRAINT KC_DATPHONG PRIMARY KEY(MAK,MAP,NGAYNHAN),

CONSTRAINT KN_DATPHONG FOREIGN KEY (MAK) REFERENCES KHACHHANG(MAK),

CONSTRAINT KN1_DATPHONG FOREIGN KEY (MAP) REFERENCES PHONG(MAP),

)

/*2.TAO THU TUC DE TANG GIA CUA TAT CA CAC PHONG TRONG KHACH SAN LEN 5%*/

CREATE PROC VD2

AS

UPDATE PHONG

SET DONGIA=DONGIA*1.05

EXEC VD2 

/*3.TAO VIEW DE TONG HOP THONG TIN VE CAC KHACH HANG HIEN TAI DANG THUE PHONG TAI KHACH SAN*/

CREATE VIEW VD3

AS

SELECT * FROM KHACHHANG

WHERE MAK IN(SELECT MAK FROM DATPHONG

WHERE NGAYTRA>GETDATE())

/*4.TAO VIEW DE TONG HOP THONG TIN HOA DON THANH TOAN CUA KHACH HANG(HOA DON GOM CAC

THUOC TINH SAU:(MAK,TENK,MAP,DONGIA,NGAYNHAN,NGAYTRA,THANH TIEN)*/

CREATE VIEW VD4

AS

SELECT KHACHHANG.MAK,TENK,PHONG.MAP,DONGIA,NGAYNHAN,NGAYTRA,

CONVERT(INT,(NGAYTRA-NGAYNHAN))*DONGIA AS THANHTIEN

FROM KHACHHANG,PHONG,DATPHONG

WHERE KHACHHANG.MAK=DATPHONG.MAK AND PHONG.MAP=DATPHONG.MAP

GROUP BY KHACHHANG.MAK,TENK,PHONG.MAP,DONGIA,NGAYNHAN,NGAYTRA

/*5.TAO VIEW DE TONG HOP THONG TIN VE CAC KHACH HANG CO SO NGAY DAT PHONG LON NHAT*/

CREATE VIEW TG

AS

SELECT KHACHHANG.MAK,TENK,DIACHI,SDT,SUM(CONVERT(INT,(NGAYTRA-NGAYNHAN))) AS NGAYTHUE

FROM KHACHHANG,DATPHONG

WHERE KHACHHANG.MAK=DATPHONG.MAK

GROUP BY KHACHHANG.MAK,TENK,DIACHI,SDT

CREATE VIEW NGAYMAX

AS

SELECT * FROM TG

WHERE NGAYTHUE IN (SELECT MAX(NGAYTHUE)

FROM TG)

SELECT * FROM NGAYMAX

/*6.TAO THU TUC DE DUA RA DANH SACH CAC PHONG HIEN TAI CHUA CO KHACH HANG DAT PHONG*/

CREATE PROC VD6

AS

SELECT * FROM PHONG

WHERE MAP NOT IN (SELECT MAP FROM DATPHONG

WHERE NGAYTRA>GETDATE())

EXEC VD6

/*7.TAO THU TUC DE DUA RA DANH SACH KHACH HANG NGAY HOM NAY PHAI TRA PHONG*/

CREATE PROC VD7

AS

SELECT * FROM KHACHHANG

WHERE MAK IN(SELECT MAK FROM DATPHONG

WHERE CONVERT(CHAR(10),NGAYTRA)=CONVERT(CHAR(10),GETDATE()))

EXEC VD7

/*8.TAO TRIGGER DE KIEM TRA DU LIEU KHI CAP NHAT VAO BANG PHONG PHAI DAM BAO DU LIEU DONGIA>0*/

CREATE TRIGGER TG8

ON PHONG

FOR INSERT

AS

IF EXISTS (SELECT DONGIA FROM PHONG

WHERE DONGIA<0)

BEGIN 

PRINT 'DU LIEU NHAP KHONG HOP LE'

ROLLBACK TRAN

END

ELSE PRINT 'DU LIEU NHAP THANH CONG'

/*9.TAO TRIGGER DE KIEM TRA DU LIEU KHI NHAP VAO BANG DATPHONG PHAI DAM BAO NGAYTRA PHONG LUON

LON HON HOAC BANG NGAY NHAN PHONG*/

 ALTER TRIGGER TG9

ON DATPHONG

FOR INSERT

AS

IF EXISTS (SELECT NGAYTRA,NGAYNHAN FROM DATPHONG

WHERE CONVERT(INT,NGAYTRA)<CONVERT(INT,NGAYNHAN))

BEGIN 

PRINT 'DU LIEU NHAP KHONG HOP LE'

ROLLBACK TRAN

END

ELSE PRINT 'DU LIEU NHAP THANH CONG'

INSERT INTO DATPHONG

VALUES('K03','P03','11/20/2010','11/19/2010')

/*10.DUNG KIEU DU LIEU CURSOR DE DUA RA DANH SACH KHACH HANG NGAY HOM NAY PHAI TRA PHONG*/

--KHAI BAO--

DECLARE CS10 CURSOR FOR

SELECT KHACHHANG.* FROM KHACHHANG

WHERE MAK IN(SELECT MAK FROM DATPHONG

WHERE CONVERT(CHAR(10),NGAYTRA)=CONVERT(CHAR(10),GETDATE()))

--MO--

OPEN CS10

--XU LY--

PRINT 'DANH SACH KHACH HANG NGAY HOM NAY PHAI TRA PHONG LA'

PRINT 'MAKTENKDIACHISDT'

DECLARE @MAK CHAR(10),@TENK CHAR(30),@DIACHI CHAR(30),@SDT CHAR(15)

FETCH NEXT FROM CS10

INTO @MAK,@TENK,@DIACHI,@SDT

WHILE @@FETCH_STATUS=0

BEGIN

PRINT @MAK+@TENK+@DIACHI+@SDT

FETCH NEXT FROM CS10

INTO @MAK,@TENK,@DIACHI,@SDT

END

--DONG--

CLOSE CS10

--HUY--

DEALLOCATE CS10

quan ly nhan vien

CREATE DATABASE QUANLYNHANVIEN

USE QUANLYNHANVIEN

CREATE TABLE PHONG(

MAP CHAR(10) PRIMARY KEY,

TENP CHAR(30) NOT NULL,

DIACHIP CHAR(30),

SDT CHAR(15)

)

CREATE TABLE NHANVIEN(

MANV CHAR(10) PRIMARY KEY,

TENNV CHAR(40) NOT NULL,

DIACHI CHAR(40),

MAP CHAR(10),

LUONG INT,--LUONG CUA NHAN VIEN--

CONSTRAINT KN_NHANVIEN FOREIGN KEY(MAP) REFERENCES PHONG(MAP)

)

CREATE TABLE NGOAINGU(

MANN CHAR(10) PRIMARY KEY,

TENN CHAR(30) NOT NULL

)

CREATE TABLE TDNN(--TRINH DO NGOAI NGU--

MANV CHAR(10),

MANN CHAR(10),

TRINHDO CHAR(30) NOT NULL,

CONSTRAINT KC_TDNN PRIMARY KEY(MANV,MANN),

CONSTRAINT KN_TDNN FOREIGN KEY(MANV) REFERENCES NHANVIEN(MANV),

CONSTRAINT KN1_TDNN FOREIGN KEY(MANN) REFERENCES NGOAINGU(MANN),

--2.TAO VIEW DE TONG HOP THONG TIN VE MOI PHONG HIEN TAI CO BAO NHIEU NHAN VIEN--

CREATE VIEW VD2

AS

SELECT PHONG.MAP,TENP,DIACHIP,SDT,COUNT(NHANVIEN.MAP) AS SONV

FROM PHONG,NHANVIEN

WHERE PHONG.MAP=NHANVIEN.MAP

GROUP BY phong.MAP,TENP,DIACHIP,SDT

--3/ Tạo View để tổng hợp thông tin về các nhân viên chưa tích luỹ được trình độ ngoại ngữ nào--

CREATE VIEW VD3

AS

SELECT * FROM NHANVIEN

WHERE MANV NOT IN (SELECT MANV FROM TDNN)

--4/ Tạo View để tổng hợp thông tin về các nhân viên có lương cao nhất trong phòng họ làm việc.--

CREATE VIEW TG

AS

SELECT MAP,MAX(LUONG) AS LUONGCAONHAT

FROM NHANVIEN

GROUP BY MAP

CREATE VIEW LUONGMAX

AS

SELECT NHANVIEN.*

FROM NHANVIEN,TG

WHERE NHANVIEN.MAP=TG.MAP AND LUONG=LUONGCAONHAT

/*5/ Tạo thủ tục có tham số vào @TenNN và @TrinhDo để đưa ra danh các nhân viên biết ngoại ngữ 

và trình độ trên. */

CREATE PROC VD5

@TENN CHAR(30),@TRINHDO CHAR(30)

AS

SELECT * FROM NHANVIEN

WHERE MANV IN (SELECT MANV FROM TDNN

WHERE TRINHDO=@TRINHDO AND MANN IN (SELECT MANN FROM NGOAINGU

WHERE TENN=@TENN))

EXEC VD5 'TIENG ANH','A'

--6/ Tạo thủ tục có tham số vào @TenP để đưa ra tổng số nhân viên hiện có trong phòng này--

ALTER PROC VD6

@TENP CHAR(20)

AS

SELECT  PHONG.MAP,COUNT(NHANVIEN.MAP) AS SONV

FROM PHONG,NHANVIEN

WHERE PHONG.MAP=NHANVIEN.MAP AND TENP=@TENP

GROUP BY PHONG.MAP

EXEC VD6 'ABC'

/*7/ Tạo thủ tục có tham số vào là @TenNN, @TenP và @TrinhDo để đưa ra danh các nhân viên

 ở phòng này biết ngoại ngữ và trình độ ứng với các tham biến đã cho */

CREATE PROC VD7

@TENNN CHAR(30),@TENP CHAR(20),@TRINHDO CHAR(30)

AS

SELECT NHANVIEN.* FROM NHANVIEN,PHONG,TDNN,NGOAINGU

WHERE NHANVIEN.MANV=TDNN.MANV AND PHONG.MAP=NHANVIEN.MAP

AND NGOAINGU.MANN=TDNN.MANN AND TENN=@TENNN AND TENP=@TENP AND TRINHDO=@TRINHDO

EXEC VD7 'TIENG ANH','ABC','A'

/*8/ Tạo thủ tục có tham số vào @TenP để đưa ra danh các nhân viên có lương cao nhất của phòng này*/

CREATE PROC VD8

@TENP CHAR(20)

AS

SELECT NHANVIEN.*

FROM NHANVIEN,TG,PHONG

WHERE NHANVIEN.MAP=TG.MAP  AND TG.MAP=PHONG.MAP AND LUONG=LUONGCAONHAT AND TENP=@TENP

EXEC VD8 'ABC'

/*9/ Tạo Trigger để kiểm tra khi nhập dữ liệu vào bảng NhanVien phải đảm bảo lương của nhân viên 

phải >0 */

CREATE TRIGGER tg9

ON NHANVIEN

FOR INSERT

AS

IF EXISTS (SELECT LUONG FROM NHANVIEN

WHERE LUONG<0)

BEGIN 

PRINT 'DU LIEU NHAP KHONG HOP LE'

ROLLBACK TRAN

END

ELSE PRINT 'DU LIEU NHAP THANH CONG'

INSERT INTO NHANVIEN

VALUES('NV6','HAI','HA NOI','P04','7000')

--10/ Dùng kiểu dữ liệu CURSOR để tăng lương cho mỗi nhân viên lên 10%.--

--KHAI BAO--

DECLARE CS10 CURSOR FOR

SELECT MANV,TENNV,DIACHI,MAP,(LUONG*1.1) AS LUONGMOI

FROM NHANVIEN

GROUP BY MANV,TENNV,DIACHI,MAP,LUONG

--MO--

OPEN CS10

--XU LY--

PRINT 'DANH SACH NHAN VIEN SAU KHI TANG LUONG LEN 10% LA:'

PRINT 'MANVTENNVDIACHI MAPLUONGMOI'

DECLARE @MANV CHAR(10),@TENNV CHAR(20),@DIACHI CHAR(20),@MAP CHAR(10),@LUONG INT

FETCH NEXT FROM CS10

INTO @MANV,@TENNV,@DIACHI,@MAP,@LUONG

WHILE @@FETCH_STATUS=0

BEGIN

PRINT @MANV+@TENNV+@DIACHI+@MAP+CONVERT(CHAR(10),@LUONG)

FETCH NEXT FROM CS10

INTO @MANV,@TENNV,@DIACHI,@MAP,@LUONG

END

--DONG--

CLOSE CS10

--HUY--

DEALLOCATE CS10

--11/ Dùng kiểu dữ liệu CURSOR để đưa ra danh sách các nhân viên có ngoại ngữ tiếng anh trình độ C--

--KHAI BAO--

DECLARE CS11 CURSOR FOR

SELECT NHANVIEN.MANV,TENNV,DIACHI,MAP,LUONG

FROM NHANVIEN,TDNN,NGOAINGU

WHERE NHANVIEN.MANV=TDNN.MANV AND TDNN.MANN=NGOAINGU.MANN

AND TENN='TIENG ANH' AND TRINHDO='C'

--MO--

OPEN CS11

--XU LY--

PRINT 'DANH SACH NHAN VIEN CO NGAOI NGU TIENG ANH TRINH DO C LA:'

PRINT 'MANVTENNVDIACHI MAPLUONG'

DECLARE @MANV CHAR(10),@TENNV CHAR(20),@DIACHI CHAR(20),@MAP CHAR(10),@LUONG INT

FETCH NEXT FROM CS11

INTO @MANV,@TENNV,@DIACHI,@MAP,@LUONG

WHILE @@FETCH_STATUS=0

BEGIN

PRINT @MANV+@TENNV+@DIACHI+@MAP+CONVERT(CHAR(10),@LUONG)

FETCH NEXT FROM CS11

INTO @MANV,@TENNV,@DIACHI,@MAP,@LUONG

END

--DONG--

CLOSE CS11

--HUY--

DEALLOCATE CS11

quan ly trinh do hoc vien

CREATE DATABASE QUANLYTRINHDOHOCVINHANVIEN

USE QUANLYTRINHDOHOCVINHANVIEN

CREATE TABLE PHONG(

MAP CHAR(10) PRIMARY KEY,

TENP CHAR(30) NOT NULL,

DIACHIP CHAR(30),

SDT CHAR(15)

)

CREATE TABLE NHANVIEN(

MANV CHAR(10) PRIMARY KEY,

TENNV CHAR(40) NOT NULL,

DIACHI CHAR(40),

MAP CHAR(10),

LUONG INT,--LUONG CUA NHAN VIEN--

CONSTRAINT KN_NHANVIEN FOREIGN KEY(MAP) REFERENCES PHONG(MAP)

)

CREATE TABLE HOCVI(

MAHV CHAR(10) PRIMARY KEY,

TENHV CHAR(30) NOT NULL

)

CREATE TABLE TDHVNV(--TRINH DO HOC VI NHAN VIEN--

MANV CHAR(10) ,

MATDHV CHAR(10),

THOIGIANSMALLDATETIME,--NGAY THANG NAM DAT TRINH DO NAY--

CONSTRAINT KC_TDHVNV PRIMARY KEY(MANV,MATDHV),

CONSTRAINT KN_TDHVNV FOREIGN KEY(MANV) REFERENCES NHANVIEN(MANV)

)

--2/ Tạo View để tổng hợp thông tin về các nhân viên có học vị là tiến sĩ trước năm 1990.--

CREATE VIEW VD2

AS

SELECT * FROM NHANVIEN

WHERE 

--3/ Tạo View để tổng hợp thông tin về các nhân viên chưa có học vị Tiến sĩ.--

/*4/ Tạo thủ tục có tham số vào là @TenHV và @ThoiGian để đưa ra danh các nhân viên có học vị

 và thời gian đạt được ứng với các tham biến đã cho. */

/*5/ Tạo thủ tục có tham số vào là @TenHV và @ThoiGian để đưa ra danh các nhân viên có 

trình độ học vị và thời gian đạt được học vị đó ứng với các tham biến đã cho. */

/*6/ Tạo trigger để kiểm tra dữ liệu khi nhập vào bảng NV_TDHV sao cho thời gian đạt học vị 

đó phải <= thời gian hiện tại.*/

/*7/ Dùng kiểu dữ liệu CURSOR để đưa ra danh sách các nhân viên có học vị Tiến sĩ.*/

quan ly diem ren luyen

CREATE DATABASE QUANLYDIEMRENLUYEN

USE QUANLYDIEMRENLUYEN

CREATE TABLE LOP(

MAL CHAR(10) PRIMARY KEY,

TENL CHAR(20) NOT NULL

)

CREATE TABLE SV(

MASV CHAR(10) PRIMARY KEY,

TENSV CHAR(30) NOT NULL,

NGAYSINH SMALLDATETIME,

MAL CHAR(10),

CONSTRAINT KN_SV FOREIGN KEY (MAL) REFERENCES LOP(MAL)

)

CREATE TABLE DIEMRL(

MASV CHAR(10),

HOCKY INT,

NAM CHAR(4),

DIEM INT--DIEM REN LUYEN--

CONSTRAINT KC_DIEMRL PRIMARY KEY(MASV,HOCKY,NAM),

CONSTRAINT KN_DIEMRL FOREIGN KEY (MASV) REFERENCES SV(MASV)

)

--2. Hãy tạo view để tổng hợp thông tin về điểm rèn luyện của những sinh viên học lớp “Cao đẳng K4A”--

CREATE VIEW VD2

AS

SELECT * FROM DIEMRL

WHERE MASV IN (SELECT MASV FROM SV

WHERE MAL IN (SELECT MAL FROM LOP

WHERE TENL='CAO DANG K4A'))

--3. Hãy tạo view để in ra thông tin về sinh viên có điểm rèn luyện cao nhất.--

ALTER VIEW VD3

AS

SELECT  *

FROM SV

WHERE MASV IN (SELECT MASV FROM DIEMRL

WHERE DIEM IN (SELECT MAX(DIEM) FROM DIEMRL))

--4. Tạo view để tổng hợp thông tin về những sinh viên có điểm rèn luyện<50 trong năm học 2006-2007.--

CREATE VIEW VD4

AS

SELECT * FROM SV

WHERE MASV IN(SELECT MASV FROM DIEMRL

WHERE DIEM<50 AND NAM ='2006-2007')

--5. Tạo thủ tục có tham số vào @Masv để đưa ra thông tin về điểm rèn luyện của sinh viên trên.--

CREATE PROC VD5

@MASV CHAR(10)

AS

SELECT * FROM DIEMRL

WHERE MASV =@MASV

EXEC VD5 'SV2'

/*6. Tạo thủ tục có tham số vào @Malop, @Nam để đưa ra thông tin về điểm rèn luyện của lớp trên vào 

nam học trên.*/

CREATE PROC VD6

@MAL CHAR(10),@NAM CHAR(4)

AS

SELECT * FROM DIEMRL

WHERE NAM=@NAM AND MASV IN (SELECT MASV FROM SV

WHERE MAL=@MAL)

EXEC VD6 'L01','2010'

--7. Tạo thủ tục có tham số vào @tenlop để đưa ra thông tin về điểm rèn luyện của lớp trên.--

CREATE PROC VD7

@TENL CHAR(20)

AS

SELECT * FROM DIEMRL

WHERE MASV IN (SELECT MASV FROM SV

WHERE MAL IN (SELECT MAL FROM LOP

WHERE TENL=@TENL))

EXEC VD7 'TH'

/*8. Tạo Trigger kiểm tra việc nhập dữ liệu cho bảng DIEMRL nếu điểm nhập vào <0 hoặc >100 thì đưa 

ra yêu cầu nhập lại và bản ghi này không được phép nhập vào bảng, ngược lại thì in ra thông báo nhập

 thành công.*/

CREATE TRIGGER TG8

ON DIEMRL

FOR INSERT

AS

IF EXISTS (SELECT DIEM FROM DIEMRL

WHERE DIEM<0 OR DIEM >100)

BEGIN 

PRINT 'DU LIEU NHAP KHONG HOP LE'

ROLLBACK TRAN

END

ELSE PRINT 'DU LIEU NHAP THANH CONG'

INSERT INTO DIEMRL

VALUES('SV4','2','2007',90)

/*9. Sử dụng kiểu dữ liệu Cursor để in ra màn hình danh sách điểm rèn luyện của học kỳ 1 năm học 

2007-2008.*/

DECLARE CS9 CURSOR FOR

SELECT DIEMRL.*

FROM DIEMRL

WHERE HOCKY='1' AND NAM='2007-2008'

--MO--

OPEN CS9

--XU LY--

PRINT 'DANH SACH DIEM REN LUYEN CUA HOC KY 1 NAM HOC 2007-2008 LA:'

PRINT 'MASV HOCKY   NAM   DIEM'

DECLARE @MASV CHAR(10),@HOCKY INT,@NAM CHAR(20),@DIEM INT

FETCH NEXT FROM CS9

INTO @MASV,@HOCKY,@NAM,@DIEM

WHILE @@FETCH_STATUS=0

BEGIN

PRINT @MASV+CONVERT(CHAR(10),@HOCKY)+@NAM+CONVERT(CHAR(10),@DIEM)

FETCH NEXT FROM CS9

INTO @MASV,@HOCKY,@NAM,@DIEM

END

--DONG--

CLOSE CS9

--HUY--

DEALLOCATE CS9

--10. Sử dụng kiểu dữ liệu Cursor để in ra màn hình danh sách điểm rèn luyện của năm học 2006-2007.--

--KHAI BAO--

DECLARE CS10 CURSOR FOR

SELECT DIEMRL.*

FROM DIEMRL

WHERE NAM='2006-2007' 

--MO--

OPEN CS10

--XU LY--

PRINT 'DANH SACH DIEM REN LUYEN CUA HOC KY 1 NAM HOC 2007-2008 LA:'

PRINT 'MASV HOCKY   NAM   DIEM'

DECLARE @MASV CHAR(10),@HOCKY INT,@NAM CHAR(20),@DIEM INT

FETCH NEXT FROM CS10

INTO @MASV,@HOCKY,@NAM,@DIEM

WHILE @@FETCH_STATUS=0

BEGIN

PRINT @MASV+CONVERT(CHAR(10),@HOCKY)+@NAM+CONVERT(CHAR(10),@DIEM)

FETCH NEXT FROM CS10

INTO @MASV,@HOCKY,@NAM,@DIEM

END

--DONG--

CLOSE CS10

--HUY--

DEALLOCATE CS10

quan ly dang vien

CREATE DATABASE QUANLYDANGVIEN

USE QUANLYDANGVIEN

CREATE TABLE CHIBO(

MACB CHAR(10) PRIMARY KEY,  --MA CHI BO DANG--

TENCB CHAR(30) NOT NULL     --TEN CHI BO DANG--

)

CREATE TABLE TTDV(             --THONG TIN DANG VIEN--

MADV CHAR(10) PRIMARY KEY,      --MA DANG VIEN--

TENDV CHAR(40) NOT NULL,        --TEN DANG VIEN--

NGAYSINH SMALLDATETIME,

GIOITINH CHAR(3) NOT NULL,

NGAYVD SMALLDATETIME NOT NULL, --NGAY VAO DANG--

MACB CHAR(10) NOT NULL,         --MA CHI BO DANG--

CONSTRAINT KN_TTDV FOREIGN KEY (MACB) REFERENCES CHIBO(MACB)

)

CREATE TABLE KHENTHUONG(

MADV CHAR(10) NOT NULL,

MASKT CHAR(10) NOT NULL,  --MA SO KHEN THUONG--

NGAYQD SMALLDATETIME,   --NGAY RA QUYET DINH KHEN THUONG--

CKT CHAR(20),          --CAP KHEN THUONG--

LYDO CHAR(30),

CONSTRAINT KC_KHENTHUONG PRIMARY KEY (MADV,MASKT),

CONSTRAINT KN_KHENTHUONG FOREIGN KEY (MADV) REFERENCES TTDV(MADV)

)

--1.TAO VIEW DE TONG HOP THONG TIN VE CAC DANG VIEN VAO DANG NGAY 19/5/2009--

CREATE VIEW TTDANGVIEN

AS

SELECT *

FROM TTDV

WHERE NGAYVD='5/19/2009'

SELECT * FROM TTDANGVIEN

--2.TAO THU TUC LUU TRU VOI THAM SO VAO @MASKT DE LUU THONG TIN VE NHUNG DANG VIEN DUOC KHEN THUONG--

--THEO MA SO KHEN THUONG O TREN--

CREATE PROC VD2

@MASKT CHAR(10)

AS

SELECT * 

FROM TTDV

WHERE MADV IN(SELECT MADV FROM KHENTHUONG

WHERE MASKT=@MASKT)

EXEC VD2 'SKT1'

--3.TAO TRIGGER CHO PHEP THAY DOI DU LIEU CUA NHUNG BANG LIEN QUAN TRONG VIEW O Y 1 KHI CAP NHAT DU LIEU TREN VIEW--

--DUNG INSERT DE THEM DU LIEU TRONG VIEW--

ALTER TRIGGER TG3

ON TTDANGVIEN

INSTEAD OF INSERT

AS

INSERT INTO TTDV(MADV,TENDV,NGAYSINH,GIOITINH,NGAYVD,MACB)

SELECT MADV,TENDV,NGAYSINH,GIOITINH,NGAYVD,MACB FROM INSERTED

INSERT INTO TTDANGVIEN

VALUES('DV8','HAI','11/9/1983','NAM','5/19/2009','CB3')

--DUNG UPDATE DE SUA DOI DU LIEU TRONG VIEW--

CREATE TRIGGER tg4

ON TTDANGVIEN

INSTEAD OF UPDATE

AS

UPDATE TTDV

SET TENDV=(SELECT TENDV FROM INSERTED)

WHERE MADV=(SELECT MADV FROM INSERTED)

update ttdangvien

SET TENDV='NINH'

WHERE MADV='DV1'

--4.DUNG KIEU DU LIEU CURSOR DE TONG HOP THONG TIN VE CAC DANG VIEN CHUA DUOC KHEN THUONG TRONG NAM 2009--

--KHAI BAO--

DECLARE CS4 CURSOR FOR

SELECT TTDV.*

FROM TTDV

WHERE MADV NOT IN (SELECT MADV FROM KHENTHUONG

WHERE YEAR(NGAYQD)='2009')

--MO CURSOR--

OPEN CS4

--XU LY MAU TIN--

PRINT 'NHUNG DANG VIEN CHUA DUOC KHEN THUONG TRONG NAM 2009 LA:'

PRINT 'MADV  TENDVNGAYSINHGIOITINHNGAYVDMACB'

DECLARE  @MADV CHAR(10),@TENDV CHAR(40),@NGAYSINH SMALLDATETIME,@GIOITINH CHAR(5),

@NGAYVD SMALLDATETIME,@MACB CHAR(10)

FETCH NEXT FROM CS4

INTO @MADV,@TENDV,@NGAYSINH,@GIOITINH,@NGAYVD,@MACB

WHILE @@FETCH_STATUS=0

BEGIN

PRINT  @MADV+@TENDV+CONVERT(CHAR(25),@NGAYSINH)+@GIOITINH+CONVERT(CHAR(25),@NGAYVD)+@MACB

FETCH NEXT FROM CS4

INTO @MADV,@TENDV,@NGAYSINH,@GIOITINH,@NGAYVD,@MACB

END

--DONG CURSOR--

CLOSE CS4

--HUY CURSOR--

DEALLOCATE CS4 

 thue xe du lich

CREATE DATABASE THUEXEDULICH

USE THUEXEDULICH

CREATE TABLE DMX(

MAXE NVARCHAR(10) PRIMARY KEY NOT NULL,

TENXE NVARCHAR(30) NOT NULL,

LOAIXE NVARCHAR(5),

TT BIT NOT NULL,

)

CREATE TABLE DMK(

MAK NVARCHAR(15) PRIMARY KEY NOT NULL,

TENK NVARCHAR(30) NOT NULL,

DC NVARCHAR(40),

DT NVARCHAR(15),

)

CREATE TABLE HD(

SOHD NVARCHAR(10) PRIMARY KEY NOT NULL,

MAK NVARCHAR(15) NOT NULL,

MAXE NVARCHAR(10) NOT NULL,

NGAYDI SMALLDATETIME NOT NULL, 

NGAYVE SMALLDATETIME NOT NULL,

GIA INT NOT NULL,

CONSTRAINT KN3 FOREIGN KEY (MAK) REFERENCES DMK(MAK),

CONSTRAINT KN4 FOREIGN KEY (MAXE) REFERENCES DMX(MAXE),

)

INSERT INTO DMX

VALUES('X01','AB','4','1')

INSERT INTO DMX

VALUES('X02','BC','6','0')

INSERT INTO DMX

VALUES('X03','BD','15','1')

INSERT INTO DMX

VALUES('X04','EB','20','0')

INSERT INTO DMX

VALUES('X05','EC','4','1')

SELECT *

FROM DMX

INSERT INTO DMK

VALUES('KH001','QUANG HAI','THAI NGUYEN','01689999999')

INSERT INTO DMK

VALUES('KH002','QUANG HIEP','THAI BINH','01689999998')

INSERT INTO DMK

VALUES('KH003','HOANG HAI','NINH BINH','01689999988')

INSERT INTO DMK

VALUES('KH004','NGUYEN VAN MO','NAM DINH','01689998888')

INSERT INTO DMK

VALUES('KH005','NGUYEN VAN HUNG','BINH DINH','01689888888')

SELECT *

FROM DMK

INSERT INTO HD

VALUES('HD01','KH001','X01','09/09/2010','09/15/2010','500000')

INSERT INTO HD

VALUES('HD02','KH002','X02','10/02/2010','10/04/2010','1000000')

INSERT INTO HD

VALUES('HD03','KH003','X03','09/30/2010','10/02/2010','2000000')

INSERT INTO HD

VALUES('HD04','KH002','X03','10/03/2010','10/12/2010','5000000')

INSERT INTO HD

VALUES('HD05','KH004','X01','08/03/2010','08/11/2010','4000000')

INSERT INTO HD

VALUES('HD06','KH005','X05','09/10/2010','09/20/2010','7000000')

INSERT INTO HD

VALUES('HD07','KH003','X05','08/30/2010','10/10/2010','6000000')

SELECT *

FROM HD

UPDATE HD 

SET GIA=GIA*0.01

DELETE FROM DMK

WHERE MAK='KH003'

ALTER TABLE HD

ADD DAINHAT INT

ALTER TABLE HD

DROP COLUMN DAINHAT

/*DUA RA THONG TIN VE CAC KHACH HANG CO HOP DONG THUE XE HOM NAY LA NGAY VE*/

SELECT *

FROM DMK

WHERE MAK IN (SELECT MAK FROM HD WHERE NGAYVE=GETDATE())

/*DUA RA THONG TIN VE CAC KHACH HANG DA THUE XE VOI GIA THUE CAO NHAT*/

SELECT *

FROM DMK

WHERE MAK IN (SELECT MAK FROM HD WHERE GIA=(SELECT MAX(GIA) FROM HD))

/*DUA RA THONG TIN VE CAC XE DA DUOC KHACH HANG CO MA KHACH 'KH001' THUE*/

SELECT *

FROM DMX

WHERE MAXE IN (SELECT MAXE FROM HD WHERE MAK='KH001')

/*TONG HOP THONG TIN VE TINH HINH CHO THUE XE.THONG TIN THONG KE GOM:MAXE,TENXE,SOTIEN*/

SELECT DMX.MAXE,TENXE,GIA

FROM DMX,HD

WHERE DMX.MAXE=HD.MAXE   

/*DUA RA THONG TIN VE CAC XE HIEN CHUA CO KHACH HANG THUE*/   

SELECT * 

FROM DMX 

WHERE MAXE NOT IN(SELECT MAXE 

 FROM HD 

 WHERE GETDATE()<NGAYVE OR NGAYVE IS NULL)

/*DUA RA THONG TIN VE CAC XE DA DUOC THUE CO NGAY BAT DAU LA NGAY HOM NAY*/

SELECT *

FROM DMX

WHERE MAXE IN (SELECT MAXE FROM HD WHERE GETDATE()=NGAYDI)

                                                                                            

/*DUA RA THONG TIN VE CAC KHACH HANG DA THUE XE DAI NGAY NHAT*/

SELECT *

FROM DMK

WHERE MAK IN (SELECT MAK FROM HD WHERE (NGAYVE-NGAYDI) IN (SELECT MAX(NGAYVE-NGAYDI) FROM HD) )

/*DUA RA THONG TIN VE CAC XE CHUA TUNG DUOC KHACH HANG NAO THUE*/

SELECT *

FROM DMX

WHERE MAXE NOT IN(SELECT MAXE FROM HD)

/*DUA RA THONG TIN THUE XE VE KHACH HANG CO TEN "NGUYEN VAN MO" */

SELECT *

FROM HD

WHERE MAK IN (SELECT MAK FROM DMK WHERE TENK='NGUYEN VAN MO')

/*DUA RA THONG TIN VE CAC KHACH HANG DA THUE XE 4 CHO TRONG THANG 8/2010 */

SELECT *

FROM DMK

WHERE MAK IN(SELECT MAK FROM HD 

WHERE MONTH(NGAYDI)='08' AND YEAR(NGAYDI)='2010' AND MONTH(NGAYVE)='08' AND YEAR(NGAYVE)='2010' 

  AND MAXE IN(SELECT MAXE FROM DMX WHERE LOAIXE='4'))

Continue Reading