Untitled

 avatar
unknown
plain_text
a year ago
3.2 kB
10
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')
Editor is loading...
Leave a Comment