By GokiSoft.com| 19:54 27/12/2023|
SQL Server/MySQL

Bài tập - Quản lý nhân khẩu - Lập trình SQL Server - MySQL

Phản hồi từ học viên

5

(Dựa trên đánh giá ngày hôm nay)

GokiSoft.com
GokiSoft.com

2023-12-27 13:24:09


-- Create database: QuanLyNhanKhau
create database QuanLyNhanKhau2

-- Active database: QuanLyNhanKhau
use QuanLyNhanKhau2

-- Create tables
create table QuanHuyen (
	MaQH INT IDENTITY(1,1) NOT NULL,
	TenQH NVARCHAR(100)
)

create table DuongPho (
	DuongID INT NOT NULL,
	MaQH INT NOT NULL,
	TenDuong NVARCHAR(MAX) NOT NULL,
	NgayDuyetTen DATETIME NULL
)

create table NhaTrenPho (
	NhaID INT NOT NULL,
	DuongID INT NOT NULL,
	ChuHo NVARCHAR(50) NULL,
	DienTich MONEY NULL
)

-- Clustered Index
create clustered index CI_NhaTrenPho_NhaID on NhaTrenPho (NhaID)

-- Non-clustered Index
create nonclustered index UI_QuanHuyen_TenQH on QuanHuyen (TenQH)

-- Add column: SoNhanKhau tren bang NhaTrenPho
alter table NhaTrenPho
add SoNhanKhau int

-- Constraint
---- Primary Key
alter table QuanHuyen
add constraint PK_QuanHuyen primary key (MaQH)

alter table DuongPho
add constraint PK_DuongPho primary key (DuongID)

alter table NhaTrenPho
add constraint PK_NhaTrenPho primary key (NhaID)

---- Foreign Key
alter table NhaTrenPho
add constraint FK_NhaTrenPho_DuongPho foreign key (DuongID) references DuongPho (DuongID)

alter table DuongPho
add constraint FK_DuongPho_QuanHuyen foreign key (MaQH) references QuanHuyen (MaQH)

---- CHECK
alter table DuongPho
add constraint CK_DuongPho_NgayDuyetTen check (NgayDuyetTen between '1945-09-02' and getdate())

-- Insert data
insert into QuanHuyen (TenQH)
values
('Ba Dinh'),
('Hoang Mai')

insert into DuongPho (DuongID, MaQH, TenDuong, NgayDuyetTen)
values
(1, 1, 'Doi Can', '1946-10-19'),
(2, 1, 'Van Phuc', '1998-12-30'),
(3, 2, 'Giai Toa', '1975-09-21')

insert into NhaTrenPho (NhaID, DuongID, ChuHo, DienTich, SoNhanKhau)
values
(1, 2, 'Tran Van Diep', 100, 4),
(2, 1, 'Le Hong Hai', 20, 12),
(3, 2, 'Tran Khanh Toan', 40, 1)

-- TEST
select * from QuanHuyen
select * from DuongPho
select * from NhaTrenPho

-- Query
update DuongPho set TenDuong = N'Giải Phóng' where TenDuong = 'Giai Toa'
go

-- View
---- Data: TenQH (QuanHuyen), TenDuong (DuongPho), NgayDuyetTen (DuongPho), ChuHo (NhaTrenPho)
------ DienTich (NhaTrenPho), SoNhanKhau (NhaTrenPho)
create view vw_all_nha_tren_pho
as
select QuanHuyen.TenQH, DuongPho.TenDuong, DuongPho.NgayDuyetTen, NhaTrenPho.ChuHo,
	NhaTrenPho.DienTich, NhaTrenPho.SoNhanKhau
from QuanHuyen, DuongPho, NhaTrenPho
where QuanHuyen.MaQH = DuongPho.MaQH
	and DuongPho.DuongID = NhaTrenPho.DuongID
go

select * from vw_all_nha_tren_pho
go

-- TenDuong (DuongPho), DienTichTrungBinh (AVG: NhaTrenPho), SoNhanKhauTrungBinh (AVG: NhaTrenPho)
create view vw_avg_nha_tren_pho
as
select DuongPho.TenDuong, avg(NhaTrenPho.DienTich) 'DienTichTrungBinh', avg(NhaTrenPho.SoNhanKhau) 'SoNhanKhauTrungBinh'
from DuongPho join NhaTrenPho on DuongPho.DuongID = NhaTrenPho.DuongID
group by DuongPho.TenDuong
go

select DuongPho.TenDuong, avg(NhaTrenPho.DienTich) 'DienTichTrungBinh', avg(NhaTrenPho.SoNhanKhau) 'SoNhanKhauTrungBinh'
from DuongPho left join NhaTrenPho on DuongPho.DuongID = NhaTrenPho.DuongID
group by DuongPho.TenDuong
go

select * from vw_avg_nha_tren_pho
order by DienTichTrungBinh, SoNhanKhauTrungBinh asc
go

-- Proc
create proc sp_ngayduyetten_duongpho
	@NgayDuyet datetime
as
begin
	--TenQH (QuanHuyen), TenDuong (DuongPho), NgayDuyetTen (DuongPho)
	select QuanHuyen.TenQH, DuongPho.TenDuong, DuongPho.NgayDuyetTen
	from QuanHuyen, DuongPho
	where QuanHuyen.MaQH = DuongPho.MaQH
		and DuongPho.NgayDuyetTen = @NgayDuyet
end

declare @NgayDuyet datetime
select @NgayDuyet = Convert(datetime, '30/12/1998', 103)
exec sp_ngayduyetten_duongpho @NgayDuyet
go

declare @NgayDuyet datetime
select @NgayDuyet = Convert(datetime, '30/12/1988', 103)
exec sp_ngayduyetten_duongpho @NgayDuyet
go

-- trigger
create trigger for_update_nha_tren_pho on NhaTrenPho
for update
as
begin
	if (select count(*) from inserted where SoNhanKhau <= 0) > 0
	begin
		print N'Khong dc update sonhankhau <= 0'
		rollback transaction
	end
end

select * from NhaTrenPho

update NhaTrenPho set SoNhanKhau = -2 where NhaID = 1
go

update NhaTrenPho set SoNhanKhau = 0 where NhaID = 1
go

create trigger InsteadOf_Delete_DuongPho on DuongPho
instead of delete
as
begin
	delete from NhaTrenPho where DuongID in (select DuongID from deleted)
	delete from DuongPho where DuongID in (select DuongID from deleted)
end

delete from DuongPho
where DuongID = 1
go




Nguyen Hai Anh
Nguyen Hai Anh

2023-12-27 12:55:26


create database QuanLyNhanKhau
go

use QuanLyNhanKhau
go

create table QuanHuyen (
	MaQH int identity(1, 1) not null,
	TenQH nvarchar(100)
)
go

create table DuongPho (
	DuongID int not null,
	MaQH int not null,
	TenDuong nvarchar(max) not null,
	NgayDuyetTen datetime null
)
go

create table NhaTrenPho (
	NhaID int not null,
	DuongID int not null,
	ChuHo nvarchar(50) null,
	DienTich money null
)
go

create clustered index CI_NhaTrenPho_NhaID on NhaTrenPho(NhaID)
go

create unique nonclustered index UI_QuanHuyen_TenQH on QuanHuyen(TenQH)
go

alter table NhaTrenPho
add SoNhanKhau int;
go

alter table QuanHuyen
add constraint PK_QuanHuyen primary key (MaQH)
go

alter table DuongPho
add constraint PK_DuongPho primary key (DuongID)
go

alter table NhaTrenPho
add constraint PK_NhaTrenPho primary key (NhaID)
go

alter table NhaTrenPho
add constraint FK_NhaTrenPho_DuongPho
foreign key (DuongID) references DuongPho(DuongID)
go

alter table DuongPho
add constraint FK_DuongPho_QuanHuyen
foreign key (MaQH) references QuanHuyen(MaQH)
go

alter table DuongPho
add constraint CK_DuongPho_NgayDuyetTen
check (NgayDuyetTen between '1945-09-02' and getdate())
go

insert into QuanHuyen (TenQH)
values
('Ba Dinh'),
('Hoang Mai');
go

insert into DuongPho (DuongID, MaQH, TenDuong, NgayDuyetTen)
values
(1, 1, 'Doi Can', '1946-10-19'),
(2, 1, 'Van Phuc', '1998-12-30'),
(3, 2, 'Giai Toa', '1975-09-21');
go

insert into NhaTrenPho (NhaID, DuongID, ChuHo, DienTich, SoNhanKhau)
values
(1, 1, 'Ha Khanh Toan', 100, 4),
(2, 1, 'Le Hong Hai', 20, 12),
(3, 2, 'Tran Khanh', 40, 1);
go

update DuongPho
set TenDuong = 'Giai Phong'
where TenDuong = 'Giai Toa'
go

create view vw_all_Nha_Tren_Pho as
select TenQH, TenDuong, NgayDuyetTen, ChuHo, DienTich, SoNhanKhau
from NhaTrenPho, DuongPho, QuanHuyen
where (DuongPho.MaQH = QuanHuyen.MaQH and DuongPho.DuongID = NhaTrenPho.DuongID)
go

-- select * from vw_all_Nha_Tren_Pho
-- go

create view vw_AVG_Nha_Tren_Pho as
select DuongPho.TenDuong, avg(NhaTrenPho.DienTich) 'Dien tich trung binh', avg(NhaTrenPho.SoNhanKhau) 'So Nhan Khau TB'
from NhaTrenPho, DuongPho
where (NhaTrenPho.DuongID = DuongPho.DuongID) group by DuongPho.TenDuong
go

select * from vw_AVG_Nha_Tren_Pho
order by 'Dien tich trung binh', 'So Nhan Khau TB' asc
go

create proc sp_NgayQuyetTen_DuongPho @NgayDuyet datetime as
select DuongPho.NgayDuyetTen, DuongPho.TenDuong, QuanHuyen.TenQH
from DuongPho, QuanHuyen
where DuongPho.MaQH = QuanHuyen.MaQH and DuongPho.NgayDuyetTen = @NgayDuyet
go

declare @NgayDuyet datetime
select @NgayDuyet = convert (datetime, '30/12/1998', 103)
exec sp_NgayQuyetTen_DuongPho @NgayDuyet
go




bui tien manh
bui tien manh

2023-12-27 12:55:01


create table QuanHuyen(
	MaQH int identity(1,1) not null,
	TenQH nvarchar(100)

)
go
create table DuongPho(
	DuongID int NOT NULL,
	MaQH  int not null,
	TenDuong nvarchar(MAX) not null,
	NgayDuyetTen DATETIME null

)
go
create table NhaTrenPho(
NhaID int not null,
DuongID int not null,
ChuHo nvarchar(50) null,
DienTich MONEY null
)
go
--3. tao index --
create clustered index CI_NhaTrenPho_NhaID on NhaTrenPho(NhaID)

create unique nonclustered index UI_QuanHuyen_TenQH on QuanHuyen(TenQH)
 
drop index UI_QuanHuyen_TenQH 

alter table NhaTrenPho
add SoNhanKhau int

alter table QuanHuyen
 add constraint PK_QuanHuyen Primary key (MaQH)

alter table DuongPho
 add constraint PK_DuongPho Primary key (DuongID)

alter table NhaTrenPho
 add constraint PK_NhaTrenPho Primary key (NhaID)

alter table NhaTrenPho
 add constraint FK_NhaTrenPho_DuongPho Foreign key (DuongID) references DuongPho(DuongID)

alter table DuongPho
 add constraint FK_DuongPho_QuanHuyen Foreign key (MaQH) references QuanHuyen(MaQH)


alter table DuongPho
add constraint CK_DuongPho_NgayDuyetTen check (NgayDuyetTen between '1945-09-02' and getdate())

alter table DuongPho
drop constraint CK_DuongPho_NgayDuyetTen

--them du lieu vao bang--
--quanhuyen--
insert into QuanHuyen(TenQH)
values
('Ba dinh'),
('Hoang Mai')
select * from QuanHuyen
go
--duongpho--
insert into DuongPho(DuongID,MaQH,TenDuong,NgayDuyetTen)
values
(1,1,'Doi Can','1946-10-19'),
(2,1,'Van Phuc','1998-12-30'),
(3,2,'Giai Toa','1975-09-21')
go
select * from DuongPho
go
--nhatrenpho--
select * from NhaTrenPho
insert into NhaTrenPho(NhaID,DuongID,ChuHo,DienTich,SoNhanKhau)
values
(1,1,'Ha Khanh Toan',100,4),
(2,1,'Le Hong Hai',20,12),
(3,2,'Tran Khanh',40,1)
go
--query option--
Update DuongPho
set TenDuong = 'Giai Phong'
where TenDuong ='Giai Toa'
go
select * from DuongPho
go
--7.view-
create view vw_all_Nha_Tren_Pho as
select TenQH,TenDuong,NgayDuyetTen,ChuHo,DienTich,SoNhanKhau
from NhaTrenPho,DuongPho,QuanHuyen
where DuongPho.DuongID = NhaTrenPho.DuongID
	and DuongPho.MaQH = QuanHuyen.MaQH
	
select * from vw_all_Nha_Tren_Pho
go
--8.views--
create view vw_AVG_Nha_Tren_Pho as
select TenDuong,avg(NhaTrenPho.DienTich) 'avg dien tich',avg(NhaTrenPho.SoNhanKhau) 'avg sonhakhau'
from NhaTrenPho,DuongPho
where DuongPho.DuongID = NhaTrenPho.DuongID
group by DuongPho.TenDuong

select *from vw_AVG_Nha_Tren_Pho
order by 'avg dien tich','avg sonhakhau' asc
go
--procedurces--
--trigger--
create trigger [FOR_UPDATE_NHA_TREN_PHO] on NhaTrenPho
for update
as
begin
	if(select count(SoNhanKhau) from inserted where SoNhanKhau <= 0 ) > 0
	begin 
	print N'loi vi so nhan khau nhap vao phai >0'
	rollback transaction
	end
end
update NhaTrenPho set SoNhanKhau = -5 where NhaID = 1
--11.trigger--
create trigger [InsteadOf_Delete_DuongPho] on DuongPho
instead of Delete
as 
begin 
	delete from NhaTrenPho where DuongID in (select DuongID from deleted)
	delete from DuongPho where DuongID in (select DuongID from deleted)
end




Đầu Khánh Ly
Đầu Khánh Ly

2023-12-27 12:54:55

create database QuanLyNhanKhau

use QuanLyNhanKhau


create table QuanHuyen(

MaQH int primary key identity(1,1) not null,

TenQH nvarchar(100)

)

go


create table DuongPho(

DuongID int not null,

MaQH int not null,

TenDuong nvarchar(max) not null,

NgayDuyetTen datetime null

)

go


create table NhaTrenPho (

NhaID int not null,

DuongID int not null,

ChuHo nvarchar(50) null,

DienTich money null

)

go


create clustered index CT_NhaTrenPho_NhaID on NhaTrenPho(NhaID)

go


create index UL_QuanHuyen_TenQH on QuanHuyen(TenQH)

go


alter table NhaTrenPho 

add SoNhanKhau int

go


 

--primary key

alter table QuanHuyen

add constraint PK_QuanHuyen Primary key (MaQH)


alter table DuongPho

add constraint PK_DuongPho primary key (DuongID)


alter table NhaTrenPho 

add constraint PK_NhaTrenPho primary key (NhaID)



--foreign key

alter table NhaTrenPho

add constraint FK_NhaTrenPho_DuongPho Foreign key (DuongID) references DuongPho(DuongID)


alter table DuongPho

add constraint FK_DuongPho_QuanHuyen foreign key (MaQH) references QuanHuyen (MaQH)


--check

alter table DuongPho

add constraint CK_DuongPho_NgayDuyetTen check (NgayDuyetTen between '1945-09-02' and getdate())


--insert data

insert into QuanHuyen(TenQH)

values

('Ba Dinh'),

('Hoang Mai')

go


insert into DuongPho(DuongID,MaQH,TenDuong,NgayDuyetTen)

values

(1,1,'Doi Can','1946-10-19'),

(2,1,'Van Phuc','1998-12-30'),

(3,2,'Giai Toa ','1975-09-21')

go


insert into NhaTrenPho(NhaID,DuongID,ChuHo,DienTich,SoNhanKhau)

values

(1,1,'Ha Khanh Toan',100,4),

(2,1,'Le Hong Hai',20,12),

(3,2,'Tran Khanh',40,1)

go

select * from DuongPho


--update

update DuongPho set TenDuong='Giai Phong' where TenDuong='Giai Toa'

go

--view

create view vw_all_Nha_Tren_Pho

as

select TenQH,TenDuong,NgayDuyetTen,ChuHo,DienTich,SoNhanKhau

from NhaTrenPho,DuongPho,QuanHuyen

where DuongPho.DuongID=NhaTrenPho.DuongID 

and QuanHuyen.MaQH=DuongPho.MaQH

go


select * from vw_all_Nha_Tren_Pho


create view vw_AVG_Nha_Tren_Pho

as

select TenDuong,avg (NhaTrenPho.DienTich) 'Dien Tich Trung Binh', 

avg (NhaTrenPho.SoNhanKhau) 'So Nhan Khau Trung Binh'

from NhaTrenPho,DuongPho

where NhaTrenPho.DuongID=DuongPho.DuongID

group by TenDuong

go


select * from vw_AVG_Nha_Tren_Pho

order by 'Dien Tich Trung Binh' , 'So Nhan Khau Trung Binh' asc


--proc

create proc sp_NgayQuyetTen_DuongPho

@NgayDuyet datetime

as

begin

select NgayDuyetTen,DuongPho.TenDuong,QuanHuyen.TenQH

from QuanHuyen,DuongPho

where QuanHuyen.MaQH=DuongPho.MaQH

and  DuongPho.NgayDuyetTen=@NgayDuyet

end


exec sp_NgayQuyetTen_DuongPho '1998-12-30'


--trigger

create trigger FOR_UPDATE_NHA_TREN_PHO on NhaTrenPho

for update

as 

begin

if(select count(SoNhanKhau) from updated where SoNhanKhau <= 0 ) > 0

begin

print N'So nhan khau khum duoc > 0'

rollback transaction

end

end


create trigger InsteadOf_Delete_DuongPho on DuongPho

instead of delete

as

begin


delete from NhaTrenPho where DuongID in (select DuongID from deleted)

delete from DuongPho where DuongID in (select DuongID from deleted)

end



Phạm Ngọc Ninh
Phạm Ngọc Ninh

2023-12-27 12:54:18

CREATE DATABASE QuanLyNhanKhau;

GO


USE QuanLyNhanKhau;

GO


CREATE TABLE QuanHuyen (

    MaQH INT IDENTITY(1,1) PRIMARY KEY NOT NULL,

    TenQH NVARCHAR(100)

);


CREATE TABLE DuongPho (

    DuongID INT PRIMARY KEY NOT NULL,

    MaQH INT FOREIGN KEY REFERENCES QuanHuyen(MaQH) NOT NULL,

    TenDuong NVARCHAR(MAX) NOT NULL,

    NgayDuyetTen DATETIME NULL

);


CREATE TABLE NhaTrenPho (

    NhaID INT PRIMARY KEY NOT NULL,

    DuongID INT FOREIGN KEY REFERENCES DuongPho(DuongID) NOT NULL,

    ChuHo NVARCHAR(50) NULL,

    DienTich MONEY NULL

);



CREATE CLUSTERED INDEX CI_NhaTrenPho_NhaID

ON NhaTrenPho(NhaID);


CREATE UNIQUE NONCLUSTERED INDEX UI_QuanHuyen_TenQH

ON QuanHuyen(TenQH);


ALTER TABLE QuanHuyen

ADD CONSTRAINT PK_QuanHuyen PRIMARY KEY (MaQH);


ALTER TABLE DuongPho

ADD CONSTRAINT PK_DuongPho PRIMARY KEY (DuongID);


ALTER TABLE NhaTrenPho

ADD CONSTRAINT PK_NhaTrenPho PRIMARY KEY (NhaID);


ALTER TABLE NhaTrenPho

ADD CONSTRAINT FK_NhaTrenPho_DuongPho FOREIGN KEY (DuongID) REFERENCES DuongPho(DuongID);


ALTER TABLE DuongPho

ADD CONSTRAINT FK_DuongPho_QuanHuyen FOREIGN KEY (MaQH) REFERENCES QuanHuyen(MaQH);


ALTER TABLE DuongPho

ADD CONSTRAINT CK_DuongPho_NgayDuyetTen CHECK (NgayDuyetTen BETWEEN '1945-09-02' AND GETDATE());



INSERT INTO QuanHuyen (MaQH, TenQH)

VALUES

(1, 'Ba Dinh'),

(2, 'Hoang Mai');


INSERT INTO DuongPho (DuongID, MaQH, TenDuong, NgayDuyetTen)

VALUES

(1, 1, 'Doi Can', '1946-10-19'),

(2, 1, 'Van Phitc', '1998-12-30'),

(3, 2, 'Giai Toa', '1975-09-21');


INSERT INTO NhaTrenPho (NhaID, DuongID, ChuHo, DienTich, SoNhanKhau)

VALUES

(1, 1, 'Ha Khanh Toan', 100, 4),

(2, 1, 'Le Hong Hai', 20, 12),

(3, 2, 'Tran Khanh', 40, 1);


UPDATE DuongPho

SET TenDuong = 'Giai Phong'

WHERE TenDuong = 'Giai Téa';


CREATE VIEW vw_all_Nha_Tren_Pho AS

SELECT

    QH.TenQH,

    DP.NgayDuyetTen,

    NTP.ChuHo,

    NTP.DienTich,

    NTP.SoNhanKhau

FROM

    NhaTrenPho NTP

JOIN DuongPho DP ON NTP.DuongID = DP.DuongID

JOIN QuanHuyen QH ON DP.MaQH = QH.MaQH;


SELECT * FROM vw_all_Nha_Tren_Pho;


CREATE VIEW vw_AVG_Nha_Tren_Pho AS

SELECT

    DP.TenDuong,

    AVG(NTP.DienTich) AS AVG_DienTich,

    AVG(NTP.SoNhanKhau) AS AVG_SoNhanKhau

FROM

    NhaTrenPho NTP

JOIN DuongPho DP ON NTP.DuongID = DP.DuongID

GROUP BY

    DP.TenDuong;



SELECT * 

FROM vw_AVG_Nha_Tren_Pho

ORDER BY AVG_DienTich, AVG_SoNhanKhau;


CREATE PROCEDURE sp_NgayQuyetTen_DuongPho

    @NgayDuyet DATETIME

AS

BEGIN

    SELECT

        DP.NgayDuyetTen,

        DP.TenDuong,

        QH.TenQH

    FROM

        DuongPho DP

    JOIN

        QuanHuyen QH ON DP.MaQH = QH.MaQH

    WHERE

        DP.NgayDuyetTen = @NgayDuyet;

END;


CREATE TRIGGER FOR_UPDATE_NHA_TREN_PHO

ON NhaTrenPho

FOR UPDATE

AS

BEGIN

    SET NOCOUNT ON;

    IF UPDATE(SoNhanKhau)

    BEGIN


        UPDATE NTP

        SET NTP.SomeOtherColumn = SomeValue

        FROM NhaTrenPho NTP

        JOIN inserted I ON NTP.NhaID = I.NhaID

        WHERE I.SoNhanKhau = 0;


        UPDATE NTP

        SET NTP.SomeOtherColumn = SomeOtherValue

        FROM NhaTrenPho NTP

        JOIN inserted I ON NTP.NhaID = I.NhaID

        WHERE I.SoNhanKhau > 0;

    END;

END;



CREATE TRIGGER InsteadOf_Delete_DuongPho

ON DuongPho

INSTEAD OF DELETE

AS

BEGIN

    SET NOCOUNT ON;

    INSERT INTO DeletedDuongPho (DuongID, MaQH, TenDuong, NgayDuyetTen)

    SELECT DuongID, MaQH, TenDuong, NgayDuyetTen

    FROM deleted;

    DELETE DP

    FROM DuongPho DP

    JOIN deleted D ON DP.DuongID = D.DuongID;

END;



Nguyễn Thị Xuân Thu
Nguyễn Thị Xuân Thu

2023-12-27 12:53:54

create database QuanLyNhapKhau

go


use QuanLyNhapKhau

go


create table QuanHuyen(

MaQH int identity(1,1) not null,

TenQH nvarchar(100)

)

go


create table DuongPho(

DuongID int not null,

MaQH int not null,

TenDuong nvarchar(max) not null,

NgayDuyetTen datetime null

)

go


create table NhaTrenPho(

NhaID int not null,

DuongID int not null,

ChuHo nvarchar(50) null,

DienTich money null

)

go


create clustered index CI_NhaTrenPho_NhaID on NhaTrenPho(NhaID)

go


create unique index UI_QuanHyen_TenQH on QuanHuyen(TenQH)

go


alter table NhaTrenPho

add SoNhanKhau int

go


alter table QuanHuyen

add constraint PK_QuanHuyen primary key (MaQH)

go


alter table DuongPho 

add constraint PK_DuongPho primary key (DuongID)

go


alter table NhaTrenPho

add constraint PK_NhaTrenPho primary key (NhaID)

go


alter table NhaTrenPho

add constraint PK_NhaTrenPho_DuongPho foreign key (DuongID) references DuongPho(DuongID)

go


alter table DuongPho

add constraint PK_DuongPho_QuanHuyen foreign key (MaQH) references QuanHuyen(MaQH)

go


alter table DuongPho

add constraint CK_DuongPho_NgayDuyetTen check (NgayDuyetTen between '1945-09-02' and getdate())

go


insert into QuanHuyen(TenQH)

values

(N'Ba Đình'),

(N'Hoàng Mai')

go



insert into DuongPho(DuongID, MaQH, TenDuong, NgayDuyetTen)

values

(1, 1, N'Đội Cấn', '1946-10-19'),

(2, 1, N'Vạn Phúc', '1998-12-30'),

(3, 2, N'Giải Tòa', '1975-09-21')

go


insert into NhaTrenPho(NhaID, DuongID, ChuHo, DienTich, SoNhanKhau)

values

(1, 1, N'Hà Khánh Toàn', 100, 4),

(2, 1, N'Lê Hồng Hải', 20, 12),

(3, 2, N'Trần Khánh', 40, 1)

go


update DuongPho set TenDuong = N'Giải Phóng' where TenDuong =  N'Giải Tòa'

go


create view vw_all_Nha_Tren_Pho

as

select QuanHuyen.TenQH,DuongPho.TenDuong,DuongPho.NgayDuyetTen,NhaTrenPho.ChuHo,NhaTrenPho.DienTich,NhaTrenPho.SoNhanKhau 

from NhaTrenPho,DuongPho,QuanHuyen

where DuongPho.DuongID = NhaTrenPho.DuongID 

and DuongPho.MaQH = QuanHuyen.MaQH

go

select * from vw_all_Nha_Tren_Pho


create view vw_AVG_Nha_Tren_Pho

as

select DuongPho.TenDuong, avg(NhaTrenPho.DienTich)'Dien Tich Trung Binh', avg(NhaTrenPho.SoNhanKhau)'So Nhan Khau Trung Binh'

from NhaTrenPho, DuongPho

where DuongPho.DuongID = NhaTrenPho.DuongID

group by DuongPho.TenDuong

go


select * from vw_AVG_Nha_Tren_Pho

order by 'Dien Tich Trung Binh','So Nhan Khau Trung Binh' asc

go


create proc sp_NgayQuyetTen_DuongPho

@NgayDuyet datetime

as

begin

select DuongPho.NgayDuyetTen, DuongPho.TenDuong, QuanHuyen.TenQH

from DuongPho, QuanHuyen

where DuongPho.MaQH = QuanHuyen.MaQH

and DuongPho.NgayDuyetTen = @NgayDuyet

end


exec sp_NgayQuyetTen_DuongPho '1998-12-30'

go


declare @NgayDuyet datetime

set @NgayDuyet = convert(datetime, '30/12/1998', 103)

exec sp_NgayQuyetTen_DuongPho @NgayDuyet

go


create trigger FOR_UPDATE_NHA_TREN_PHO on NhaTrenPho

for update

as

begin

if (select count(*) from inserted where SoNhanKhau <= 0) > 0

begin

print N'Không được phép cập nhật'

rollback transaction

end

end


select * from NhaTrenPho

update NhaTrenPho set SoNhanKhau = 2 where NhaID = 1


select * from QuanHuyen

select * from DuongPho

select * from NhaTrenPho

go


create trigger [InsteadOf_Delete_DuongPho] on DuongPho

instead of delete

as

begin

delete from NhaTrenPho where DuongID in (select DuongID from deleted)

delete from DuongPho where DuongID in (select DuongID from deleted)

end


select * from DuongPho

delete from DuongPho where DuongID = 2



BOMIMI123
BOMIMI123

2023-12-27 12:53:36

    create database QuanLyNhanKhau

go


use QuanLyNhanKhau

go

-- tao bang 

create table QuanHuyen(

MaQH int identity(1,1) not null,

TenQH nvarchar(100)

)

go


create table DuongPho(

DuongID int not null,

MaQH int not null,

TenDuong nvarchar(Max) not null,

NgayDuyetTen datetime null

)

go


create table NhaTrenPho(

NhaID int not null,

DuongID int not null,

ChuHo nvarchar(50) null,

DienTich Money null

)

go


--index

create clustered index CI_NhaTrenPho_NhaID on NhaTrenPho(NhaID)

go


create unique nonclustered index UI_QuanHuyen_TenQH on QuanHuyen(TenQH)

go


--alter table 

alter table NhaTrenPho 

add SoNhauKhau int

go



--primary key 

alter table QuanHuyen

add constraint pk_QuanHuyen primary key (MaQH)

go


alter table DuongPho

add constraint pk_DuongPho primary key (DuongID)

go


alter table NhaTrenPho

add constraint pk_NhaTrenPho primary key (NhaID)

go


--add foreign key 

alter table NhaTrenPho

add constraint fk_NhaTrenPho_DuongPho foreign key (DuongID) references DuongPho(DuongID)

go


alter table DuongPho

add constraint fk_DuongPho_QuanHuyen foreign key (MaQH) references QuanHuyen(MaQH)

go


--insert data 

insert into QuanHuyen 

values

('Ba Dinh'),

('Hoang Mai')

go


insert into DuongPho

values 

(1, 1, 'Doi Can', '1946-10-19'),

(2, 1 ,'Van Phuc', '1998-12-30'),

(3, 2, 'Giai Toa', '1975-09-21')

go


insert into NhaTrenPho

values 

(1, 1, 'Ha Khanh Toan', 100, 4),

(2, 1, 'Le Hong Hai', 20, 12),

(3, 2, 'Tran Khanh', 40, 1)

go


-- update  querry 

update DuongPho set TenDuong = 'Giai phong' where TenDuong = 'Giai toa'

go


-- 7. new view named

create view vw_all_Nha_Tren_pho 

as

select TenQH, TenDuong, NgayDuyetTen, ChuHo, DienTich, SoNhauKhau

from NhaTrenPho, DuongPho, QuanHuyen

where DuongPho.DuongID = NhaTrenPho.DuongID 

and DuongPho.MaQH= QuanHuyen.MaQH

go


-- new view named

create view vw_AVG_Nha_Tren_Pho

as

select TenDuong, AVG(NhaTrenPho.DienTich) 'Dien tich trung binh', AVG(NhaTrenPho.SoNhauKhau) 'So nhan khau trung binh'

from NhaTrenPho, DuongPho

where DuongPho.DuongID = NhaTrenPho.DuongID

group by DuongPho.TenDuong

go


-- create procedure 

create proc sp_NgayQuyetTen_DuongPho

@NgayDuyet datetime 

as

begin

select DuongPho.NgayDuyetTen,DuongPho.TenDuong,QuanHuyen.TenQH

from DuongPho, QuanHuyen

where DuongPho.MaQH = QuanHuyen.MaQH

and DuongPho.NgayDuyetTen =@NgayDuyet

end

go


--declare

declare @NgayDuyet datetime

select @NgayDuyet = CONVERT (datetime,'30/12/1998',103)

exec sp_NgayQuyetTen_DuongPho @NgayDuyet

go


-- create trigger updates

create trigger [FOR_UPDATE_NHA_TREN_PHO] on NhaTrenPho

for update

as 

begin 

if(select count(SoNhauKhau) from inserted where SoNhauKhau <= 0 ) > 0

begin 

print N'So Nhan Khau Yeu Cau Lon Hon Khong 0'

rollback transaction

end

end

go


update NhaTrenPho set SoNhauKhau = 0 where NhaID = 1 

go


-- create trigger delelte

create trigger [ISTEADOF_DELETE_DUONG_PHO] on DuongPho

instead of delete

as 

begin 

delete from NhaTrenPho where DuongID in (select DuongID from deleted)

delete from DuongPho where DuongID in (select DuongID from deleted)

end 

go


select * from QuanHuyen

select * from DuongPho

select * from NhaTrenPho

select * from vw_all_Nha_Tren_pho 

go


--NGUYEN HONG SON-C2311L


Đỗ Quốc Dũng
Đỗ Quốc Dũng

2023-12-27 12:49:38

create database QuanLyNhanKhau

Use QuanLyNhanKhau


create table QuanHuyen(

MaQH INT IDENTITY(1,1) NOT NULL,

TenQH NVARCHAR(100)

)


create table DuongPho(

DuongID INT NOT NULL,

MaQH INT NOT NULL,

TenDuong NVARCHAR(MAX) NOT NULL,

NgayDuyetTen DATETIME NULL

)


create table NhaTrenPho(

NhaID INT NOT NULL,

DuongID INT NOT NULL,

ChuHo NVARCHAR(50) NULL,

DienTich MONEY NULL

)


create clustered index CI_NhaTrenPho_NhaID on NhaTrenPho(NhaID)

create nonclustered index UI_QuanHuyen_TenQH on QuanHuyen(TenQH)


alter table NhaTrenPho add SoNhanKhau INT


alter table QuanHuyen add constraint PK_QuanHuyen primary key (MaQH)

alter table DuongPho add constraint PK_DuongPho primary key (DuongID)

alter table NhaTrenPho add constraint PK_NhaTrenPho primary key (NhaID)


alter table NhaTrenPho add constraint FK_NhaTrenPho_DuongPho foreign key(DuongID) references DuongPho(DuongID)

alter table DuongPho add constraint FK_DuongPho_QuanHuyen foreign key (MaQH) references QuanHuyen(MaQH)


alter table DuongPho add constraint CK_DuongPho_NgayDuyetTen check (NgayDuyetTen between '1945-09-02' and getdate())


insert into QuanHuyen (TenQH)

values

('Ba Dinh'),

('Hoang Mai')


insert into DuongPho(DuongID,MaQH,TenDuong,NgayDuyetTen)

values

(1,1,'Doi Can','1946-10-19'),

(2,1,'Van Phuc','1998-12-30'),

(3,2,'Giai Toa','1975-09-21')


insert into NhaTrenPho(NhaID,DuongID,ChuHo,DienTich,SoNhanKhau)

values

(1,1,'Ha Khanh Toan', 100, 4),

(2,1,'Le Hong Hai',20,12),

(3,2,'Tranh Khanh',40,1)


select * from QuanHuyen

select * from DuongPho

select * from NhaTrenPho


update DuongPho set TenDuong = 'Giai Phong' where TenDuong = 'Giai Toa'


create view vw_all_Nha_Tren_Pho 

as

select QuanHuyen.TenQH, DuongPho.TenDuong, DuongPho.NgayDuyetTen, NhaTrenPho.ChuHo,NhaTrenPho.DienTich, NhaTrenPho.SoNhanKhau

from QuanHuyen, DuongPho, NhaTrenPho

where QuanHuyen.MaQH = DuongPho.MaQH

and DuongPho.DuongID = NhaTrenPho.DuongID


select * from vw_all_Nha_Tren_Pho


create view vw_AVG_Nha_Tren_Pho

as

select top 2 DuongPho.TenDuong, AVG(NhaTrenPho.DienTich) 'Dien Tich Trung Binh',AVG(NhaTrenPho.SoNhanKhau) 'So Nhan Khau Trung Binh'

from DuongPho, NhaTrenPho

where DuongPho.DuongID = NhaTrenPho.NhaID

group by DuongPho.TenDuong

order by [Dien Tich Trung Binh], [So Nhan Khau Trung Binh] asc


select*from vw_AVG_Nha_Tren_Pho


create proc sp_NgayQuyetTen_DuongPho 

@NgayDuyet datetime

as

begin

select DuongPho.NgayDuyetTen, DuongPho.TenDuong, QuanHuyen.TenQH

from DuongPho, QuanHuyen

where DuongPho.NgayDuyetTen = @NgayDuyet 

and DuongPho.MaQH = QuanHuyen.MaQH

end


declare @NgayDuyet datetime

select @NgayDuyet = CONVERT(datetime, '30/12/1998',103)

exec sp_NgayQuyetTen_DuongPho @NgayDuyet


create trigger FOR_UPDATE_NHA_TREN_PHO on NhaTrenPho

for update

as

begin

begin

if (select count(*) from inserted where SoNhanKhau <= 0) > 0

print N'So nhan khau phai lon hon 0'

rollback transaction

end

end


drop trigger FOR_UPDATE_NHA_TREN_PHO


update NhaTrenPho set SoNhanKhau = -1 where NhaID = 1


create trigger InsteadOf_Delete_DuongPho on DuongPho

instead of delete

as

begin

delete from NhaTrenPho where DuongID in (select DuongID from deleted)

delete from DuongPho where DuongID in (select DuongID from deteled)

end


select*from NhaTrenPho

select*from DuongPho


delete from DuongPho where DuongID = 2



Nguyen Thanh Do
Nguyen Thanh Do

2023-12-27 12:40:51

create database QuanLyNhanKhau;

go


use QuanLyNhanKhau;


create table QuanHuyen(

MaQH int identity(1,1) not null,

TenQH nvarchar(100)

)

go


create table DuongPho(

DuongID int not null,

MaQH int not null,

TenDuong nvarchar(max) not null,

NgayDuyetTen Datetime null

)

go


create table NhaTrenPho(

NhaID int not null,

DuongID int not null,

ChuHo nvarchar(50) null,

DienTich money null

)

go



create clustered index CL_NhaTrenPho_NhaID on NhaTrenPho(NhaID)


create unique index UI_QuanHuyen_TenQH on QuanHuyen(TenQH)


alter table NhaTrenPho

add SoNhanKhau int

go


alter table QuanHuyen 

add primary key (MaQH)

go


alter table DuongPho

add primary key (DuongID)

go


alter table NhaTrenPho

add primary key (NhaID)

go


alter table NhaTrenPho

add constraint FK_NhaTrenPho_DuongPho 

foreign key (DuongID) references DuongPho(DuongID)

go


alter table DuongPho

add constraint FK_DuongPho_QuanHuyen

foreign key (MaQH) references QuanHuyen(MaQH)

go


alter table DuongPho

add constraint CK_DuongPho_NgayDuyetTen 

check (NgayDuyetTen between '1945-09-02' and '2023-12-27')

go


insert QuanHuyen(TenQH)

values

(N'Ba Dinh'),

(N'HoangMai')

go


insert into DuongPho(DuongID,MaQH,TenDuong,NgayDuyetTen)

values

(1,1,N'Doi Can','1946-10-19'),

(2,1,N'Van Phuc','1998-12-30'),

(3,2,N'Giai Toa','1975-09-21')

go


insert into NhaTrenPho(NhaID,DuongID,ChuHo,DienTich,SoNhanKhau)

values

(1,1,'Ha Khanh Toan',100,4),

(2,1,'le Hong Hai',20,12),

(3,2,'Tran Khanh',40,1)

go


update DuongPho 

set TenDuong = 'Giai Phong'

where TenDuong = 'Giai Toa' 

go


create view vw_all_Nha_Tren_Pho

as

select 

QuanHuyen.TenQH,

DuongPho.TenDuong,

DuongPho.NgayDuyetTen,

NhaTrenPho.ChuHo,

NhaTrenPho.DienTich,

NhaTrenPho.SoNhanKhau

from 

NhaTrenPho,

DuongPho,

QuanHuyen

where

NhaTrenPho.DuongID = DuongPho.DuongID

and DuongPho.MaQH = QuanHuyen.MaQH

go


select * from vw_all_Nha_Tren_Pho


create view vw_AVG_Nha_Tren_Pho 

as

select

DuongPho.TenDuong,

AVG(NhaTrenPho.DienTich) 'Dien Tich Trung Binh',

avg(NhaTrenPho.SoNhanKhau) 'So Nhan Khau Trung Binh'

from

NhaTrenPho,

DuongPho

where

DuongPho.DuongID = NhaTrenPho.DuongID

group by 

DuongPho.TenDuong

go


select * from vw_AVG_Nha_Tren_Pho


create proc sp_NgayQuyetTen_DuongPho

@NgayDuyet datetime

as 

begin

select

DuongPho.NgayDuyetTen,

DuongPho.TenDuong,

QuanHuyen.TenQH

from

DuongPho,

QuanHuyen

where 

DuongPho.MaQH = QuanHuyen.MaQH

and DuongPho.NgayDuyetTen = @NgayDuyet

end


exec sp_NgayQuyetTen_DuongPho '1998-12-30'


create trigger For_Update_Nha_Tren_Pho on NhaTrenPho

for update

as

begin

if(select SoNhanKhau from NhaTrenPho) <= 0

begin

print 'update tren bang NhaTrenPho loi'

rollback transaction

end 

end


create trigger InsteadOF_Delete_DuongPho on DuongPho

instead of delete

as

begin 

delete from NhaTrenPho where DuongID in (select DuongID from deleted)

delete from DuongPho where DuongID in (select DuongID from deleted)

end


delete from DuongPho where DuongID = 1


Đặng Thị Như Nguyệt
Đặng Thị Như Nguyệt

2023-12-27 12:40:45

create database QuanLyNhanKhau;

go


use QuanLyNhanKhau;


create table QuanHuyen(

MaQH int identity(1,1) not null,

TenQH nvarchar(100)

)

go


create table DuongPho(

DuongID int not null,

MaQH int not null,

TenDuong nvarchar(max) not null,

NgayDuyetTen Datetime null

)

go


create table NhaTrenPho(

NhaID int not null,

DuongID int not null,

ChuHo nvarchar(50) null,

DienTich money null

)

go


create clustered index  CL_NhaTrenPho_NhaID on NhaTrenPho(NhaID)


create unique index UI_QuanHuyen_TenQH on QuanHuyen(TenQH)


alter table NhaTrenPho

add SoNhanKhau int

go


alter table QuanHuyen

add primary key (MaQH)

go


alter table DuongPho

add primary key (DuongID)

go


alter table NhaTrenPho

add primary key (NhaID)

go


alter table NhaTrenPho

add constraint FK_NhaTrenPho_DuongPho

foreign key (DuongID) references DuongPho(DuongID)

go


alter table DuongPho

add constraint FK_DuongPho_QuanHuyen

foreign key (MaQH) references QuanHuyen(MaQH)

go


alter table DuongPho

add constraint CK_DuongPho_NgayDuyetTen

check (NgayDuyetTen between '1945-09-02' and '2023-12-27')

go


insert QuanHuyen(TenQH)

values

(N'Ba Dinh'),

(N'HoangMai')

go


insert into DuongPho(DuongID,MaQH,TenDuong,NgayDuyetTen)

values

(1,1,N'Doi Can','1946-10-19'),

(2,1,N'Van Phuc','1998-12-30'),

(3,2,N'Giai Toa','1975-09-21')

go


insert into NhaTrenPho(NhaID,DuongID,ChuHo,DienTich,SoNhanKhau)

values

(1,1,N'Ha Khanh Toan',100,4),

(2,1,N'Le Hong Hai',20,12),

(3,2,N'Tran Khanh',40,1)

go


update DuongPho

set TenDuong = 'Giai Phong'

where TenDuong = 'Giai Toa'

go


create view vw_all_Nha_Tren_Pho

as

select

QuanHuyen.TenQH,

DuongPho.TenDuong,

DuongPho.NgayDuyetTen,

NhaTrenPho.ChuHo,

NhaTrenPho.DienTich,

NhaTrenPho.SoNhanKhau

from

NhaTrenPho,

DuongPho,

QuanHuyen

where

NhaTrenPho.DuongID = DuongPho.DuongID

and DuongPho.MaQH = QuanHuyen.MaQH

go


select * from vw_all_Nha_Tren_Pho


create view vw_AVG_Nha_Tren_Pho

as

select

DuongPho.TenDuong,

AVG(NhaTrenPho.DienTich) 'Dien Tich Trung Binh',

avg(NhaTrenPho.SoNhanKhau) 'So Nhan Khau Trung Binh'

from

NhaTrenPho,

DuongPho

where

DuongPho.DuongID = NhaTrenPho.DuongID

group by

DuongPho.TenDuong

go


select * from vw_AVG_Nha_Tren_Pho 


create proc sp_NgayQuyetTen_DuongPho

@NgayDuyet datetime

as

begin

select

DuongPho.NgayDuyetTen,

DuongPho.TenDuong,

QuanHuyen.TenQH

from

DuongPho,

QuanHuyen

where

DuongPho.MaQH = QuanHuyen.MaQH

and DuongPho.NgayDuyetTen = @NgayDuyet

end


exec sp_NgayQuyetTen_DuongPho '1998-12-30'


create trigger For_Update_Nha_Tren_Pho on  NhaTrenPho

for update

as

begin

if(select SoNhanKhau from NhaTrenPho) <= 0

begin

print 'update tren bang NhaTrenPho loi'

rollback transaction

end

end


create trigger InsteadOF_Delete_DuongPho on DuongPho

instead of delete

as

begin

delete from NhaTrenPho where DuongID in (select DuongID from deleted)

delete from DuongPho where DuongID in (select DuongID from deleted)

end


delete from DuongPho where DuongID = 1