Trang 1 USE QLDA -- Create table TAODB create table TAODB(name varchar(20),logic_file varchar(20),os_file varchar(100),db_size smallint,db_maxsize smallint, db_filegrowth smallint) -- insert data into table TAODB insert into TAODB values('hn','ct01_dat','c:\ct01_data.mdf',10,20,1) insert into TAODB values('dn','ct02_dat','c:\ct02_data.mdf',10,20,1) insert into TAODB values('sg','ct03_dat','c:\ct03_data.mdf',10,20,1) --create procedure TAODBCON create proc TAODBCON AS Begin declare @name varchar(20),@logic_file varchar(20),@os_file varchar(100),@db_size smallint, @db_maxsize smallint,@file_growth smallint, @strsql nvarchar(1000) declare curdb cursor scroll for select * from TAODB open curdb fetch first from curdb into @name, @logic_file, @os_file, @db_size, @db_maxsize, @file_growth while @@fetch_status=0 if exists(select * from master..sysdatabases where name = @name) exec('drop database '+ @name) set @strsql ='use master' set @strsql = @strsql + ' create Database '+ @name +' on primary' set @strsql = @strsql + ' (name ='''+ @logic_file +''',' set @strsql = @strsql + ' Filename ='''+ @os_file +''',' set @strsql = @strsql + ' Size='+ convert(varchar,@db_size) +',' set @strsql = @strsql + ' MaxSize ='+ convert(varchar,@db_maxsize) +',' set @strsql = @strsql + ' FileGrowth ='+ convert(varchar,@file_growth) + ')' exec (@strsql) fetch next from curdb into @name,@logic_file,@os_file,@db_size, @db_maxsize,@file_growth close curdb deallocate curdb --exec proc TAODBCON exec TAODBCON
Trang 2 /*=================Distributed data===============================*/ create procedure PHANTAN as BEGIN --Distributed data of congty AND name ='congty' ) drop table HN.dbo.congty select * into HN.dbo.congty from congty where thanhpho ='Ha Noi' AND name ='congty' ) drop table DN.dbo.congty select * into DN.dbo.congty from congty where thanhpho ='Da Nang' AND name ='congty') drop table SG.dbo.congty select * into SG.dbo.congty from congty where thanhpho ='Sai Gon' --Distributed data of nhanvien AND name ='nhanvien' ) drop table HN.dbo.nhanvien select nv.* into HN.dbo.nhanvien from nhanvien nv inner join congty ct on nv.mact = ct.mact where ct.mact ='CT01' AND name ='nhanvien') drop table DN.dbo.nhanvien select nv.* into DN.dbo.nhanvien from nhanvien nv inner join congty ct on nv.mact = ct.mact where ct.mact ='CT02'
Trang 3 AND name ='nhanvien' ) drop table SG.dbo.nhanvien select nv.* into SG.dbo.nhanvien from nhanvien nv inner join congty ct on nv.mact = ct.mact where ct.mact ='CT03' --Distributed data of duan AND name ='duan' ) drop table HN.dbo.duan select da.* into HN.dbo.duan from duan da inner join congty ct on da.mact = ct.mact where ct.mact ='CT01' AND name ='duan') drop table DN.dbo.duan select da.* into DN.dbo.duan from duan da inner join congty ct on da.mact = ct.mact where ct.mact ='CT02' AND name ='duan' ) drop table SG.dbo.duan select da.* into SG.dbo.duan from duan da inner join congty ct on da.mact = ct.mact where ct.mact ='CT03' --Distributed data of thamgia AND name ='thamgia' ) drop table HN.dbo.thamgia select tg.* into HN.dbo.thamgia from thamgia tg inner join duan da on tg.mada = da.mada inner join congty ct on da.mact = ct.mact where ct.mact ='CT01' AND name ='thamgia' )
Trang 4 drop table DN.dbo.thamgia select tg.* into DN.dbo.thamgia from thamgia tg inner join duan da on tg.mada = da.mada inner join congty ct on da.mact = ct.mact where ct.mact ='CT02' AND name ='thamgia') drop table SG.dbo.thamgia select tg.* into SG.dbo.thamgia from thamgia tg inner join duan da on tg.mada = da.mada inner join congty ct on da.mact = ct.mact where ct.mact ='CT03' --Vertical Distributed data of nhanvien --CT01 AND name ='UD1' ) drop table HN.dbo.UD1 select manv,tennv,diachi into HN.dbo.UD1 from HN.dbo.nhanvien AND name ='UD2' ) drop table HN.dbo.UD2 select manv,chuyenmon,bacluong into HN.dbo.UD2 from HN.dbo.nhanvien --CT02 AND name ='UD1') drop table DN.dbo.UD1 select manv,tennv,diachi into DN.dbo.UD1 from DN.dbo.nhanvien AND name ='UD2' ) drop table DN.dbo.UD2
Trang 5 select manv,chuyenmon,bacluong into DN.dbo.UD2 from DN.dbo.nhanvien --CT03 AND name ='UD1' ) drop table SG.dbo.UD1 select manv,tennv,diachi into SG.dbo.UD1 from SG.dbo.nhanvien AND name ='UD2' ) drop table SG.dbo.UD2 select manv,chuyenmon,bacluong into SG.dbo.UD2 from SG.dbo.nhanvien exec PHANTAN --3.1 Cho biết tên nhân viên thực hiện nhiều đề án nhất? create proc NVTGDA AS declare @tbl_nvda table(manv nvarchar(10),tennv nvarchar(30), slduan int) insert into @tbl_nvda (manv,tennv, slduan) select tbltg.manv,tblnv.tennv,count(tbltg.mada) from ( select tg.manv,da.mada from HN.dbo.thamgia tg inner join HN.dbo.duan da on tg.mada = da.mada select tg.manv, da.mada from DN.dbo.thamgia tg inner join DN.dbo.duan da on tg.mada = da.mada select tg.manv, da.mada from SG.dbo.thamgia tg inner join SG.dbo.duan da on tg.mada = da.mada )tbltg inner join ( select manv,tennv from HN.dbo.nhanvien select manv,tennv from DN.dbo.nhanvien
Trang 6 select manv,tennv from SG.dbo.nhanvien )tblnv on tbltg.manv = tblnv.manv group by tbltg.manv,tblnv.tennv select * from @tbl_nvda where slduan>=all(select slduan from @tbl_nvda) END exec NVTGDA --3.2 Chuyển nhân viên có mã số NV01 từ công ty tại Hà nội sang công ty tại Đà nẵng? create proc ChuyenNhanVien as BEGIN insert into DN.dbo.nhanvien select * from HN.dbo.nhanvien where manv ='NV01' insert into DN.dbo.UD1 select * from HN.dbo.UD1 where manv ='NV01' insert into DN.dbo.UD2 select * from HN.dbo.UD2 where manv ='NV01' END delete from HN.dbo.nhanvien where manv ='NV01' delete from HN.dbo.UD1 where manv ='NV01' delete from HN.dbo.UD2 where manv ='NV01' exec ChuyenNhanVien