Untitled
unknown
plain_text
9 months ago
3.2 kB
3
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