Untitled

 avatar
unknown
plain_text
15 days ago
3.2 kB
1
Indexable
use master
go
create database QLSV
go
use QLSV
go
create table SV(
masv nchar(10) not null primary key,
hoten nvarchar(20),
quequan nvarchar(20),
gioitinh nchar(10),
ngaysinh date,
malop nchar(10)
)
--
create table LOP(
malop nchar(10) not null primary key,
tenlop nvarchar(20),
phong nvarchar(20),
magv char(10)
)
--
create table GV(
magv char(10) not null primary key,
hotengv nvarchar(20),
sodt nchar(10)
)
alter table SV add constraint fk_sv_lop foreign key(malop) references LOP(malop)
alter table LOP add constraint fk_lop_gv foreign key(magv) references GV(magv)
--
go
insert into GV Values('GV01', N'Nguyen Mai Linh', '0961982703'),
('GV02', N'Tran Manh Hung', '0973514904')
--
insert into LOP Values('HTTT01', N'Co So Du Lieu', N'P701', 'GV01'),
('HTTT02', N'SQL SERVER', N'P702', 'GV02'),
('HTTT03', N'Ki Thuat Lap Trinh', N'P703', 'GV01'),
('HTTT04', N'Do Hoa May Tinh', N'P701', 'GV02')
--
insert into SV Values('601375',N'Bui Viet Tuan',N'Nam Dinh',N'Nam','09-19-2005',N'HTTT02'),
('601234', N'Pham Duc Thinh', N'Hai Duong', N'Nam', '09-21-2005', 'HTTT01'),
('601345', N'Bui Anh Quan', N'Hung Yen', N'Nam', '06-07-2005', 'HTTT04'),
('601789', N'Dao Xuan Xam', N'Soc Son', N'Nam', '10-22-2005', 'HTTT03'),
('601268', N'Nguyen Xuan Tu', N'Hoai Duc', N'Nu', '11-22-2005', 'HTTT02'),
('601475', N'Nguyen Thanh Tung', N'Hai Phong', N'Nam', '12-26-2005', 'HTTT04')

--
create view vw_DSSVND
as 
       select * from SV where quequan = N'Nam Dinh'
 select * from vw_DSSVND
--
create function fn_vd1(@msv nchar(10))
returns nvarchar(20)
as
begin
  declare @ten nvarchar(20)
   set @ten = (select hoten from SV where masv = @msv)
   return @ten
end
 --
 select dbo.fn_vd1('601375')
 select dbo.fn_vd1('601234')
--
create function fn_vd2(@x int, @y int, @z nvarchar(20))
returns int
as
begin
  declare @tong int
  set @tong = (select count(*)
              from SV inner join LOP on  SV.malop=LOP.malop
			  where tenlop =@z
			  and year(getdate())-year(ngaysinh) between @x and @y
			  )
  return @tong
  end
  select dbo.fn_vd2(14,20,'HTTT01')
  --
create function fn_vd3(@x nvarchar(20), @y nvarchar(20))
returns int
as
begin
  declare @dem int
  set @dem = (select count(*)
              from SV inner join LOP on SV.malop=LOP.malop
			          inner join GV on LOP.maGV=GV.magv
					  where gv.hotengv =@x and tenlop = @y)
	return @dem
end
select dbo.fn_vd3(N'Tran Manh Hung','HTTT02')
--
create function fn_vd4(@x nvarchar(20), @y nchar(10), @z nvarchar(20))
returns @bang table(
                   masv nchar(10),
				                hoten nvarchar(20),
								quequan nvarchar(20),
								tuoi int,
								tenlop nvarchar(20),
								phong nvarchar(20))
as
begin
  insert into @bang
              select masv,sv.hoten,quequan,year(getdate())-year(ngaysinh),
			              tenlop,phong
						  from SV inner join LOP on SV.malop=LOP.malop
						          inner join GV on LOP.magv=GV.magv
								  where tenlop = @x and gioitinh = @y and gv.hotengv =@z
	return
end
select * from fn_vd4('HTTT01', N'Nam', N'Pham Duc Thinh')
Leave a Comment