Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

SQL Code - Cheatsheet, Cheat Sheet of Data Warehousing

Cheatsheet for SQL about Query, Trigger,

Typology: Cheat Sheet

2023/2024

Uploaded on 12/11/2024

pham-vu-minh-kiet
pham-vu-minh-kiet 🇻🇳

3 documents

1 / 2

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
CREATE TABLE QUAYHANG
(
SOQUAY char(5) not null,
TENQUAY nvarchar(40),
VITRI char(5)
CONSTRAINT PK_QH PRIMARY KEY(SOQUAY)
)
Tạo khóa ngoại từ bảng NHANVIEN tham chiếu đến bảng
CONGVIEC
ALTER TABLE NHANVIEN
ADD CONSTRAINT FK_NHANVIEN_CONGVIEC
FOREIGN KEY (MaCV) REFERENCES CongViec(MaCV)
Tạo khóa chính cho bảng CTHD
ALTER TABLE CTHD
ALTER COLUMN MAHD char(4) NOT NULL
DELETE FROM CTHD
WHERE MAHD IN (SELECT MAHD
FROM (SELECT MAHD, ROW_NUMBER() OVER (PARTITION BY MAHD ORDER BY
MAHD) AS RowNum FROM CTHD) AS TempTable
WHERE TempTable.RowNum > 1);
ALTER TABLE CTHD
ADD CONSTRAINT PK_CTHD PRIMARY KEY(MAHD)
Tăng đơn giá (GIA) cho các sản phẩm có mã loại (MALOAI) là “CF”
thêm 20%
UPDATE SANPHAM
SET GIA = Gia * 1.2
WHERE MaLoai = 'CF'
Xoá những nhân viên bồi bàn nào giờ làm việc (GIOLAM) nhỏ hơn
250.
DELETE FROM NHANVIEN
WHERE MaNV in ( SELECT a.MaNV FROM NHANVIEN a INNER JOIN CONGVIEC b
ON a.MaCV = b.MaCV WHERE a.GIOLAM < 250 AND b.TENCV = N'Bồ<i bàn')
Cho biết khách hàng (MAKH), tên khách hàng (TENKH) mua
hàng trong tháng 5/2021
SELECT a.MaKH, b.TenKH FROM HOADON a inner join KHACHHANG b on
a.MaKH = b.MaKH WHERE MONTH(a.NGAYHD) = 5 AND YEAR(a.NGAYHD) = 2021
Cho biết tên các sản phẩm nào đã được khách hàng đặt mua (xuất
hiện trong chi tiết hóa đơn) và số lượng mua lớn hơn 4
SELECT * FROM CTHD a INNER JOIN SANPHAM b ON a.MASP = b.MASP WHERE
a.SL >4
Cho biết tên nhân viên không thực hiện bất kỳ hóa đơn nào
SELECT * FROM NHANVIEN WHERE MANV NOT IN ( SELECT a.MaNV FROM
NHANVIEN a inner join HOADON b on a.MANV = b.MANV )
Cho biết thông tin của loại sản phẩm (MALOAI, TENLOAI) được bán
nhiều nhất cùng với tổng số lượng đã bán ra của loại sản phẩm này
SELECT TOP 1 c.MaLoai, c.TenLoai, a.SL FROM CTHD a INNER JOIN SANPHAM
b ON a.MASP = b.MASP INNER JOIN LOAISANPHAM c ON b.MALOAI = c.MALOAI
ORDER BY a.SL DESC
Viết trigger để đảm bảo ràng buộc toàn vẹn sau: “Nhân viên thực hiện
hóa đơn phải là thu ngân” khi thêm dữ liệu vào bảng hoá đơn. Nếu nhân
viên không phải là thu ngân thì xuất thông báo “Lỗi do nhân viên xuất
hoá đơn không phải là thu ngân” và vô hiệu hóa transaction. Ngược lại,
thông báo “Thêm dữ liệu thành công” và hoàn tất transaction.
pf2

Partial preview of the text

Download SQL Code - Cheatsheet and more Cheat Sheet Data Warehousing in PDF only on Docsity!

CREATE TABLE QUAYHANG

SOQUAY char( 5 ) not null, TENQUAY nvarchar( 40 ), VITRI char( 5 ) CONSTRAINT PK_QH PRIMARY KEY(SOQUAY) )

Tạo khóa ngoại từ bảng NHANVIEN tham chiếu đến bảng

CONGVIEC

ALTER TABLE NHANVIEN

ADD CONSTRAINT FK_NHANVIEN_CONGVIEC

FOREIGN KEY (MaCV) REFERENCES CongViec(MaCV)

Tạo khóa chính cho bảng CTHD

ALTER TABLE CTHD

ALTER COLUMN MAHD char( 4 ) NOT NULL DELETE FROM CTHD WHERE MAHD IN (SELECT MAHD FROM (SELECT MAHD, ROW_NUMBER() OVER (PARTITION BY MAHD ORDER BY MAHD) AS RowNum FROM CTHD) AS TempTable WHERE TempTable.RowNum > 1 ); ALTER TABLE CTHD ADD CONSTRAINT PK_CTHD PRIMARY KEY(MAHD)

Tăng đơn giá (GIA) cho các sản phẩm có mã loại (MALOAI) là “CF”

thêm 20%

UPDATE SANPHAM

SET GIA = Gia * 1. WHERE MaLoai = 'CF'

Xoá những nhân viên bồi bàn nào có giờ làm việc (GIOLAM) nhỏ hơn

DELETE FROM NHANVIEN

WHERE MaNV in ( SELECT a.MaNV FROM NHANVIEN a INNER JOIN CONGVIEC b ON a.MaCV = b.MaCV WHERE a.GIOLAM < 250 AND b.TENCV = N'Bồ<i bàn')

Cho biết mã khách hàng (MAKH), tên khách hàng (TENKH) mua

hàng trong tháng 5/

SELECT a.MaKH, b.TenKH FROM HOADON a inner join KHACHHANG b on a.MaKH = b.MaKH WHERE MONTH(a.NGAYHD) = 5 AND YEAR(a.NGAYHD) = 2021

Cho biết tên các sản phẩm nào đã được khách hàng đặt mua (xuất

hiện trong chi tiết hóa đơn) và số lượng mua lớn hơn 4

SELECT * FROM CTHD a INNER JOIN SANPHAM b ON a.MASP = b.MASP WHERE a.SL > 4

Cho biết tên nhân viên không thực hiện bất kỳ hóa đơn nào

SELECT * FROM NHANVIEN WHERE MANV NOT IN ( SELECT a.MaNV FROM NHANVIEN a inner join HOADON b on a.MANV = b.MANV )

Cho biết thông tin của loại sản phẩm (MALOAI, TENLOAI) được bán

nhiều nhất cùng với tổng số lượng đã bán ra của loại sản phẩm này

SELECT TOP 1 c.MaLoai, c.TenLoai, a.SL FROM CTHD a INNER JOIN SANPHAM b ON a.MASP = b.MASP INNER JOIN LOAISANPHAM c ON b.MALOAI = c.MALOAI ORDER BY a.SL DESC

Viết trigger để đảm bảo ràng buộc toàn vẹn sau: “Nhân viên thực hiện

hóa đơn phải là thu ngân” khi thêm dữ liệu vào bảng hoá đơn. Nếu nhân

viên không phải là thu ngân thì xuất thông báo “ Lỗi do nhân viên xuất

hoá đơn không phải là thu ngân ” và vô hiệu hóa transaction. Ngược lại,

thông báo “ Thêm dữ liệu thành công ” và hoàn tất transaction.

CREATE TRIGGER Kiemtra_NVthungan ON HOADON FOR INSERT AS BEGIN IF EXISTS ( SELECT * FROM inserted i INNER JOIN HOADON a ON i.MAHD = a.MAHD INNER JOIN NHANVIEN b ON a.MANV = b.MANV INNER JOIN CONGVIEC c ON b.MACV = c.MACV WHERE c.TenCV = N'Thu ngân' ) BEGIN Print N'Thêm dữ liệu thành cồng' END Else Print N'LồFi do nhân viên xuâHt hoá đơn khồng phaMi là thu ngân' ROLLBACK TRAN Return END

Viết trigger để đảm bảo ràng buộc toàn vẹn sau: “Số lượng được mua

của một mặt hàng trong chi tiết hoá đơn (CTHD) phải nhỏ hơn hoặc

bằng số lượng đang có trên quầy của mặt hàng đó”. Nếu số lượng mua

lớn hơn số lượng tồn trên kệ thì xuất ra thông báo “Lỗi do số lượng

tồn không đủ” và vô hiệu hóa transaction. Ngược lại, thì xuất ra thông

báo “Thêm CTHD thành công” và hoàn tất transaction.

CREATE TRIGGER tr_CTHD ON CTHD FOR INSERT AS BEGIN IF EXISTS ( SELECT * FROM inserted i INNER JOIN CTHD a ON i.MaHang = a.MaHang INNER JOIN MATHANG b ON a.MaHang = b.MaHang WHERE a.SL > b.SL) BEGIN PRINT N'LồFi do sồHlượng tồ<n khồng đuM' ROLLBACK TRAN END ELSE PRINT N'Thêm CTHD thành cồng' END

Tạo trigger ràng buộc mồFi hộ nồng dân khồng quá 4 người thân

CREATE TRIGGER KIEMTRASONGUOITHAN ON NGUOITHAN

FOR INSERT

AS BEGIN

IF (SELECT COUNT(*) FROM NGUOITHAN, inserted WHERE NGUOITHAN.MaH = inserted.MaH) > 4 BEGIN Print N'MồFi hộ khồng được phép quá 4 người thân' ROLLBACK TRAN END END