By GokiSoft.com| 21:05 06/08/2020|
SQL Server/MySQL

[Share Code] Hướng dẫn tìm hiểu select nhiều bảng trong CSDL - select multi table - Lập trình SQL Server



Nội dụng: Tìm hiểu về select
	- Select trên nhiều bảng
	- Join
		- Left Join
		- Right Join
		- Inner Join
		- Full Outer Join
==========================================================
===================== Mini Project =======================
==========================================================
Quản lý nhân khẩu:
- Quản Lý Quận Huyện : QuanHuyen
	- Tên quận => TenQH => nvarchar(50)
	- Mã quận huyện => MaQH => Primary Key => nvarchar(20)
	
- Đường Phố : DuongPho
	- Mã Đường Phó => MaDP => Primary Key => nvarchar(20)
	- Tên Đường => TenDuong => nvarchar(100)
	- MaQH : nvarchar(20) => foreign key

- Quản Lý Nhà Ở : NhaTrenPho
	- id => int => primary => identity(1,1)
	- Tên Chủ Nhà : OwnerName => nvarchar(50)
	- Số Nhân Khẩu : SoNhanKhau => int
	- Ngày Đến Ở : NgayDen => date
	- MaDP => nvarchar(20) => foreign key => DuongPho (MaDP)
	- Số nhà : SoNha => nvarchar(50)

Yêu cầu:
- Thiết kế database trên : QuanLyNhanKhau
- Thêm dữ liệu (insert) => 3 bản ghi là OK
- Update tên đường
	- Tên Đường : Giai Toa => Giai Phong
- Xem dữ liệu (select)
	- Hiển thị thông tin đường phố : Mã ĐP, Tên Đường Phố, Mã Quận, Tên Quân
	- Hiển thị dữ liệu theo định dạng sau : Ten Chu Nha, So Nha, Ten Duong, Ten Quan, So Nhan Khau, Ngay Den
	- Hiển thị thông tin nhân khẩu : Ten Chu Nha, So Nha, Ten Duong, Ten Quan, So Nhan Khau, Ngay Den => Với điều kiện => Đến từ ngày 2020-01-01 tới bây giờ
	- Hiển thị thông tin nhân khẩu : Ten Chu Nha, So Nha, Ten Duong, Ten Quan, So Nhan Khau, Ngay Den => Với điều kiện => Đến từ ngày 2020-01-01 tới bây giờ + số nhân khẩu lớn hơn 2 người.




-- Tao CSDL : QuanLyNhaTrenPho
create database QuanLyNhaTrenPho
go

-- Active CSDL : QuanLyNhaTrenPho => Su dung thao tac data
use QuanLyNhaTrenPho
go

-- Tao bang QuanHuyen
create table QuanHuyen (
	MaQH nvarchar(20) primary key,
	TenQH nvarchar(50) not null
)
go

-- Tao bang DuongPho
create table DuongPho (
	MaDP nvarchar(20) primary key,
	TenDuong nvarchar(100) not null,
	MaQH nvarchar(20),
	constraint fk_ma_qh foreign key (MaQH) references QuanHuyen (MaQH)
)
go

-- Tao bang NhaTrenPho
create table NhaTrenPho (
	id int primary key identity(1,1),
	OwnerName nvarchar(50) not null,
	SoNhanKhau int,
	NgayDen date,
	MaDP nvarchar(20) references DuongPho (MaDP)
)
go

alter table NhaTrenPho
add SoNha int

alter table NhaTrenPho
alter column SoNha nvarchar(50)

----- Nhap Du Lieu Mau => Them du lieu chuan => Hieu ky hon ve y nghia => xem trong video khac.
insert into QuanHuyen (MaQH, TenQH)
values
('CG', 'Cau Giay'),
('HM', 'Hoang Mai'),
('BD', 'Ba Dinh')
go

insert into QuanHuyen (MaQH, TenQH)
values
('BT', 'Hai Ba Trung')
go

insert into DuongPho (MaQH, MaDP, TenDuong)
values
('CG', 'DP01', 'Duy Tan'),
('HM', 'DP02', 'Minh Khai'),
('HM', 'DP', 'Linh Dam')
go

insert into DuongPho (MaQH, MaDP, TenDuong)
values
('BT', 'GP01', 'Giai Toa')
go

insert into NhaTrenPho (OwnerName, SoNhanKhau, NgayDen, SoNha, MaDP)
values
('Tran Van Diep', 3, '2020-02-06', 'So Nha 18', 'DP'),
('Hoang Nam Tien', 5, '2019-07-08', 'P1001', 'DP02'),
('Nguyen Hoai Nam', 2, '2018-06-09', '16', 'DP02')
go

insert into NhaTrenPho (OwnerName, SoNhanKhau, NgayDen, SoNha, MaDP)
values
('Tran Van A', 1, '2020-02-06', 'So Nha 18', 'GP01'),
('Hoang Nam B', 2, '2019-07-08', 'P1001', 'DP02'),
('Nguyen Hoai C', 1, '2018-06-09', '16', 'GP01')
go

-- Update
select * from DuongPho

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

-- Select
select * from QuanHuyen
select * from DuongPho

----- Hiển thị thông tin đường phố : Mã ĐP, Tên Đường Phố, Mã Quận, Tên Quân
----- Du lieu => 2 bang >> DuongPho, QuanHuyen
select DuongPho.MaDP N'Ma Duong Pho', DuongPho.TenDuong 'Ten Duong', QuanHuyen.MaQH as 'Ma Quan Huyen', QuanHuyen.TenQH as N'Ten Quan Huyen'
from DuongPho, QuanHuyen
where DuongPho.MaQH = QuanHuyen.MaQH
go

----- Hiển thị dữ liệu theo định dạng sau : Ten Chu Nha, So Nha, Ten Duong, Ten Quan, So Nhan Khau, Ngay Den
----- Du lieu => 3 bang => DuongPho, Quan Huyen, NhaTrenPho
select NhaTrenPho.OwnerName, NhaTrenPho.SoNha, DuongPho.TenDuong, QuanHuyen.TenQH, NhaTrenPho.SoNhanKhau, NhaTrenPho.NgayDen
from DuongPho, QuanHuyen, NhaTrenPho
where
	DuongPho.MaQH = QuanHuyen.MaQH
	and NhaTrenPho.MaDP = DuongPho.MaDP
go

----- Hiển thị thông tin nhân khẩu : Ten Chu Nha, So Nha, Ten Duong, Ten Quan, So Nhan Khau, Ngay Den => Với điều kiện => Đến từ ngày 2020-01-01 tới bây giờ
select NhaTrenPho.OwnerName, NhaTrenPho.SoNha, DuongPho.TenDuong, QuanHuyen.TenQH, NhaTrenPho.SoNhanKhau, NhaTrenPho.NgayDen
from DuongPho, QuanHuyen, NhaTrenPho
where
	DuongPho.MaQH = QuanHuyen.MaQH
	and NhaTrenPho.MaDP = DuongPho.MaDP
	and NhaTrenPho.NgayDen >= '2020-01-01'
go

------ Hiển thị thông tin nhân khẩu : Ten Chu Nha, So Nha, Ten Duong, Ten Quan, So Nhan Khau, Ngay Den => Với điều kiện => Đến từ ngày 2020-01-01 tới bây giờ + số nhân khẩu lớn hơn 2 người.
select NhaTrenPho.OwnerName, NhaTrenPho.SoNha, DuongPho.TenDuong, QuanHuyen.TenQH, NhaTrenPho.SoNhanKhau, NhaTrenPho.NgayDen
from DuongPho, QuanHuyen, NhaTrenPho
where
	DuongPho.MaQH = QuanHuyen.MaQH
	and NhaTrenPho.MaDP = DuongPho.MaDP
	and NhaTrenPho.NgayDen >= '2020-01-01'
	and NhaTrenPho.SoNhanKhau >= 2
go




Tags:

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

5

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