IMG-LOGO
Trang Chủ Chủ Đề [Share Code] bài giảng tim hiểu nâng cáo select , join trong lập trình SQL Server
× 1) [Share Code] Hướng dẫn tạo table + insert trong SQL Server 2) [Video] Bài giảng - Thiết kế CSDL quản lý lớp học - sinh viên - create - alter - insert - update - delete trong CSDL - Học lập trình SQL Server 3) [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 4. [Share Code] bài giảng tim hiểu nâng cáo select , join trong lập trình SQL Server 5) [Share Code] Thiết kế hệ quản trị CSDL - Quản lý sinh viên (create, alter, update, insert, select) - Lập trình SQL Server 6) [Share Code] Tìm hiểu về View + Stored (Proceduce & Function) trong SQL Server - Lập trình SQL Server 7) [Video] Bài tập - Quản lý quán cafe - Lập trình SQL Server - MySQL 8) Hướng dẫn tìm hiểu index + trigger trong SQL Server - Lập trình SQL Server 9) [Share Code] Bài tập - Quản lý nhân khẩu - Lập trình SQL Server - MySQL

[Share Code] bài giảng tim hiểu nâng cáo select , join trong lập trình SQL Server

by TRẦN VĂN ĐIỆP - 22:00 11/08/2020 1,162 Lượt Xem



Chủ Đề Học : Tìm hiểu xâu về select.
- Select
	- Like
	- And
	- Not
	- In
	- Group By ... Having
	- Order By
		- Asc
		- Desc
	- Union
- Join
	- Left Join
	- Right Join
	- Inner Join
	- Full Outer Join

=================================================
================= Mini Project ==================
=================================================
Yêu cầu xậy một hệ thống cơ sở dữ liệu quản lý chuỗi khách sạn.

Phân tích các bảng sử dụng trong CSDL
	- Khách sạn : hotel
		- id : int -} primary key -} identity [1,1]
		- name =} nvarchar[50]
		- address =} nvarchar [200]
		- type =} nvarchar [50]
	- Phòng : room
		- room_no =} nvarchar[20] =} primary key
		- floor =} int
		- capacity : int
		- price =} float
		- hotel_id : foreign key -} lien ket vs bang hotel [id]
	- Thiết bị : device
		- device_id : nvarchar [50] -} primary key
		- name =} nvarchar[50]
		- price =} float
		- manufacturer_name : nvarchar [150]
		- buy_date =} datetime
		- shop_infor =} nvarchar [200]
		- room_no =} nvarchar [20] =} foreign key =} lien ket voi bang Room [room_no]
		- Note =} nvarchar [300]
	- Menu đồ ăn, uống : menu
		- id =} int =} primary key =} identity [1, 1]
		- name =} nvarchar [50]
		- price =} float
		- buy_date =} date
		- expired_date =} date
		- number =} int
- Sử dụng lại : bài trước =} tạo CSDL, tạo bảng, insert dữ liệu
- Liệt kê thông tin phong theo đầu ra : tên khách sạn, loại khách sạn, địa chỉ, mã phòng, tầng mấy, giá, số lượng
	- Liệt kế tất cả
	- Khách sạn loại 5*, phòng 2 người
	- Khách sạn loại 5*, phòng 2 người, giá 200000
	- Khách sạn có địa chỉ ở quận Ba Đinh
	- Khách sạn ko có địa chỉ ở quận Ba Đình
	- Phòng chứa 1,2,3,5 người
Liệt kê thông tin : tên khách sạn, loại khách sạn, địa chỉ, số lượng phòng
Liệt kê thông tin : tên khách sạn, loại khách sạn, địa chỉ, số lượng phòng, số lượng phòng } 2
Liệt kê thông tin : tên khách sạn, loại khách sạn, địa chỉ, số lượng phòng =} Sắp xếp số lượng phọng tăng dần

Liệt kê thông tin : tên khách sạn, loại khách sạn, địa chỉ, số lượng phòng =} Sắp xếp số lượng phọng giảm dần




-- Tao CSDL => QuanLyKhachSan
create database QuanLyKhachSan
go

-- Active CSDL => QuanLyKhachSan
use QuanLyKhachSan
go

-- Tao bang hotel
create table hotel (
	id int primary key identity(1, 1),
	name nvarchar(50) not null,
	address nvarchar(200),
	type nvarchar(20)
)
go

-- Tao bang room
create table room (
	room_no nvarchar(20) primary key,
	floor int,
	price float,
	capacity int
)
go

-- Tao bang device
create table device (
	device_id nvarchar(20) primary key,
	name nvarchar(50),
	price float,
	manufacturer_name nvarchar(50),
	buy_date date,
	shop_infor nvarchar(200),
	room_no nvarchar(20) references room (room_no),
	note nvarchar(300)
)
go

-- Tao bang menu
create table menu (
	id int primary key identity(1, 1),
	name nvarchar(50),
	price float,
	buy_date date,
	expired_date date,
	number int
)
go

----- Them du lieu : INSERT
insert into hotel (name, address, type)
values
('Hoa Mai', '285 Doi Can, Ba Dinh, Ha Noi', '5*'),
('Sao Mai Diem Hen', 'Le Thanh Nghi, Hai Ba Trung, Ha Noi', '4*')
go

insert into room (room_no, floor, capacity, price)
values
('HM1001', 1, 2, 150000),
('HM1002', 1, 2, 100000),
('HM2001', 2, 1, 50000),
('HM2002', 2, 2, 150000)
go

insert into device(device_id, name, price, manufacturer_name, buy_date, shop_infor, room_no,
note)
values
('R001', 'Dieu Hoa Daikin 9000KWH', 10000000, 'Daikin', '2020-01-02', 'Media Mart', 'HM1001', ''),
('R002', 'Tivi', 3000000, 'LG', '2020-05-02', 'Media Mart', 'HM1001', ''),
('R003', 'Dieu Hoa', 10000000, 'Daikin', '2020-06-02', 'Media Mart', 'HM1002', ''),
('R004', 'Tivi', 5000000, 'Sony', '2020-02-02', 'Media Mart', 'HM1002', ''),
('R005', 'Dieu Hoa Daikin 9000KWH', 10000000, 'Daikin', '2020-10-02', 'Media Mart', 'HM2001', ''),
('R006', 'Shower Curtain', 500000, 'GokiSoft', '2020-11-02', 'Media Mart', 'HM2002', '')
go

insert into menu(name, price, buy_date, expired_date, number)
values
('Bo Huc', 20000, '2020-06-02', '2020-12-02', 50),
('Lavi', 15000, '2020-06-05', '2020-12-05', 100),
('Tra Xanh Oo', 15000, '2020-02-02', '2020-12-02', 50)
go

----- Hieu ky hon ve primary key & foreign key
select * from room

-- Cau lenh sau bi error => Ma HM1001 => ton tai trong bang room.
insert into room(room_no, floor, price, capacity)
values
('HM1001', 3, 200000, 2)
go

select * from room
select * from device

---- Y nghia su dung foreign key trong csdl
insert into device(device_id, name, price, manufacturer_name, buy_date, shop_infor, room_no,
note)
values
('R007', 'Dieu Hoa Daikin 9000KWH', 10000000, 'Daikin', '2020-01-02', 'Media Mart', 'HM2009', '')
go

--- Fix
alter table room
add hotel_id int references hotel(id)

select * from hotel
select * from room

update room set hotel_id = 1
----------------------- SELECT ---------------------------
---- Liệt kế tất cả
select hotel.name, hotel.address, hotel.type, room.room_no, room.floor, room.price, room.capacity
from hotel, room
where room.hotel_id = hotel.id

----- Khách sạn loại 5*, phòng 2 người
select hotel.name, hotel.address, hotel.type, room.room_no, room.floor, room.price, room.capacity
from hotel, room
where room.hotel_id = hotel.id
	and hotel.type = '5*'
	and room.capacity = 2

----- Khách sạn loại 5*, phòng 2 người, giá 200000
select hotel.name, hotel.address, hotel.type, room.room_no, room.floor, room.price, room.capacity
from hotel, room
where room.hotel_id = hotel.id
	and hotel.type = '5*'
	and room.capacity = 2
	and room.price >= 200000

------ Khách sạn có địa chỉ ở quận Ba Đinh
select hotel.name, hotel.address, hotel.type, room.room_no, room.floor, room.price, room.capacity
from hotel, room
where room.hotel_id = hotel.id
	and hotel.address like '%Ba Dinh%'

select hotel.name, hotel.address, hotel.type, room.room_no, room.floor, room.price, room.capacity
from hotel, room
where room.hotel_id = hotel.id
	and hotel.address not like '%Ba Dinh%'

------ Phòng chứa 1,2,3,5 người
select hotel.name, hotel.address, hotel.type, room.room_no, room.floor, room.price, room.capacity
from hotel, room
where room.hotel_id = hotel.id
	and (
		room.capacity = 1
		or room.capacity = 2
		or room.capacity = 3
		or room.capacity = 5
	)
--- Viet cach khac
select hotel.name, hotel.address, hotel.type, room.room_no, room.floor, room.price, room.capacity
from hotel, room
where room.hotel_id = hotel.id
	and room.capacity in (1, 2, 3, 5)

select hotel.name, hotel.address, hotel.type, room.room_no, room.floor, room.price, room.capacity
from hotel, room
where room.hotel_id = hotel.id
	and room.capacity not in (2, 3, 5)

----- Liệt kê thông tin : tên khách sạn, loại khách sạn, địa chỉ, số lượng phòng
select * from hotel
select * from room

select hotel.name, hotel.address, hotel.type, room.room_no
from hotel, room
where hotel.id = room.hotel_id

select hotel.name, hotel.address, hotel.type, count(room.room_no) 'So Phong'
from hotel, room
where hotel.id = room.hotel_id
	group by hotel.name, hotel.address, hotel.type

-- Liệt kê thông tin : tên khách sạn, loại khách sạn, địa chỉ, số lượng phòng, số lượng phòng > 2
insert into room(room_no, floor, price, capacity, hotel_id)
values
('SMDH1001', 3, 200000, 2, 2)
go

select hotel.name, hotel.address, hotel.type, count(room.room_no) 'So Phong'
from hotel, room
where hotel.id = room.hotel_id
	group by hotel.name, hotel.address, hotel.type
	having count(room.room_no) > 2

select hotel.name, hotel.address, hotel.type, count(room.room_no) 'So Phong'
from hotel, room
where hotel.id = room.hotel_id
	group by hotel.name, hotel.address, hotel.type
	order by 'So Phong' asc

select hotel.name, hotel.address, hotel.type, count(room.room_no) 'So Phong'
from hotel, room
where hotel.id = room.hotel_id
	group by hotel.name, hotel.address, hotel.type
	order by 'So Phong' desc

------ JOIN
select hotel.name, hotel.address, hotel.type, room.room_no
from hotel, room
where hotel.id = room.hotel_id

select * from hotel
select * from room
delete from room where hotel_id = 2

--- Chuyen menh de tren sang select inner join
select hotel.name, hotel.address, hotel.type, room.room_no
	from hotel inner join room on hotel.id = room.hotel_id

--- TH hien thi tat ca du lieu trong bang hotel => left join
---- hotel : table left, room -> table right
select hotel.name, hotel.address, hotel.type, room.room_no
	from hotel left join room on hotel.id = room.hotel_id

---- hotel : table right, room -> table left
select hotel.name, hotel.address, hotel.type, room.room_no
	from room left join hotel on hotel.id = room.hotel_id

select hotel.name, hotel.address, hotel.type, room.room_no
	from room right join hotel on hotel.id = room.hotel_id

select hotel.name, hotel.address, hotel.type, room.room_no
	from room full outer join hotel on hotel.id = room.hotel_id


select hotel.name, hotel.address, hotel.type, count(room.room_no) 'So Phong'
from hotel left join room on hotel.id = room.hotel_id
	group by hotel.name, hotel.address, hotel.type
	having count(room.room_no) = 0

select * from hotel
select * from room

delete from room where hotel_id = 2




Theo dõi cập nhật nội dung học trên Youtube


Bình luận



Chia sẻ từ lớp học

Danh Sách Bài Học

Quick Quizzz!!!

User ImageUser ImageUser Image
User ImageUser ImageUser Image
User ImageUser ImageUser Image
User ImageUser ImageUser Image
User ImageUser ImageUser Image
User Image
User ImageUser ImageUser Image
>> Hiển Thị Quizzz
Đã sao chép!!!