Note
Cập nhật ngày 26/11/2024
- Cập nhật lại mục Created Table ngày 26/11/2024
- Cập nhật dữ liệu mẫu ngày 26/11/2024
- Readme.md : Cập nhật Readme.md
Note
- Trong thực thể
DanhGia, xoá đánh giá theo sao vì nó đã có sẵn trong thực thểDanhMucSanPham(nếu có sự thay đổi gì thì sẽ sửa lại và bổ sung sau) - Thay đổi mối quan hệ
Được Giao BởithànhChiTietDonHang - Thay đổi thực thể
Hoá ĐơnthànhChiTietHoaDon - Thêm cột id
MaNguoiPhuThuocđể dễ truy vấn hơn (trong trường hợp bắt buộc)
| Thực thể | Thuộc tính |
|---|---|
| Khách hàng | Điểm tích luỹ |
| Đơn hàng | Tiền thuốc |
| Hoá đơn | số tiền khuyến mãi |
| Danh mục sản phẩm | Số sao trung bình |
| Chi nhánh | Số lượng nhân viên và sản phẩm |
| File | Nội dung |
|---|---|
| BTL_2_Nhom_1_L12.sql | Chứa các bảng hiện thực từ ERD |
| BTL_2_Nhom_1_L12_Insert.sql | Insert Dữ liệu mẫu |
| BTL_2_Nhom1_L12_Producre.sql | Phần 2.4.1 trong bài |
| BTL_2_Nhom1_L12_Trigger.sql | Trigger |
Note
Những câu truy vấn hữu dụng khi làm bài (Vẫn trong quá trình hoàn thiện)
SELECT * FROM KhachHang
SELECT
KH.TenKhachHang,
KH.SoDienThoai,
DG.MaSanPham,
DG.NoiDungDanhGia
FROM
KhachHang KH
JOIN
DanhGia DG ON KH.MaKhachHang = DG.MaKhachHang;SELECT
N.MaNhanVien,
N.TenNhanVien,
CASE
WHEN B.MaNhanVien IS NOT NULL THEN 'BacSi'
WHEN D.MaNhanVien IS NOT NULL THEN 'DuocSi'
ELSE 'KhongXacDinh' -- Nếu không có trong cả 2 bảng
END AS LoaiNhanVien
FROM NhanVien N
LEFT JOIN BacSi B ON N.MaNhanVien = B.MaNhanVien
LEFT JOIN DuocSi D ON N.MaNhanVien = D.MaNhanVien;-- Disable all referential integrity constraints
EXEC sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
GO
-- Drop all PKs and FKs
declare @sql nvarchar(max)
SELECT @sql = STUFF((SELECT '; ' + 'ALTER TABLE ' + Table_Name +' drop constraint ' + Constraint_Name from Information_Schema.CONSTRAINT_TABLE_USAGE ORDER BY Constraint_Name FOR XML PATH('')),1,1,'')
EXECUTE (@sql)
GO
-- Drop all tables
EXEC sp_MSforeachtable 'DROP TABLE ?'
GOSELECT
SP.MaSanPham,
SP.TenSanPham,
SP.DonViNhoNhat,
SP.SoSaoTrungBinh,
CN.TenChiNhanh,
NCC.TenNhaCungCap
FROM DanhMucSanPham SP
JOIN ChiNhanh CN ON SP.MaChiNhanh = CN.MaChiNhanh
JOIN NhaCungCap NCC ON SP.MaNhaCungCap = NCC.MaNhaCungCap;
SELECT
CN.TenChiNhanh,
KM.MaKhuyenMai,
KMCT.NgayBatDau,
KMCT.NgayKetThuc,
KMCT.MoTa
FROM ChiNhanh CN
JOIN KhuyenMai KM ON CN.MaChiNhanh = KM.MaChiNhanh
JOIN ChuongTrinhKhuyenMai KMCT ON KM.MaKhuyenMai = KMCT.MaKhuyenMai;SELECT
cn.TenChiNhanh,
km.MaKhuyenMai,
ctkm.NgayBatDau,
ctkm.NgayKetThuc,
ctkm.MoTa
FROM ChiNhanh cn
JOIN KhuyenMai km ON cn.MaChiNhanh = km.MaChiNhanh
JOIN ChuongTrinhKhuyenMai ctkm ON km.MaKhuyenMai = ctkm.MaKhuyenMai;
use [master]
DECLARE
@DATABASENAME nVARCHAR(20)
DECLARE
@TABLE TABLE
(NAME nVARCHAR(50))
Declare @SQL nvarchar(100)
INSERT INTO @TABLE
SELECT
name
FROM sys.databases
WHERE name not in
('master'
,'tempdb'
,'model'
,'msdb'
,'ReportServer'
,'ReportServerTempDB')
while (select COUNT(*) from @table) > 0
begin
select @DATABASENAME = (select top 1 (name) from @TABLE)
DECLARE @kill varchar(8000) = '';
SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), spid) + ';'
FROM master..sysprocesses
WHERE dbid = db_id(@DATABASENAME)
EXEC(@kill);
set @SQL = 'drop database ' + @DATABASENAME
exec sp_executesql @SQL, N'@databasename nvarchar(50)', @databasename;
print @databasename + ' has been deleted'
delete from @TABLE where NAME = @DATABASENAME
end