Tải bản đầy đủ (.pdf) (22 trang)

■ Bài tập MSSQL (SQL Server) có lời giải ■ Quản lý hàng hóa và điểm thi của sinh viên

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (831.13 KB, 22 trang )

Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên

Biên soạn: Th.s Nguyễn Anh Việt

Trang 1


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
* Kết nối SQL Server
Chạy chương trình HeidiSQL ( và nối kết
vào SQL Server:

VIET-PC: Tên
máy

Nếu không kết nối được thì cần cài Visual Studio 2008 (máy chạy Windows XP, cài thêm SQLServer
2008 SP1 và 2, chọn Upgrade SQL =>2008) hay Visual Studio 2010 (máy chạy Windows 7 trở lên)
* Tạo CSDL: Database QLHH
Kích chọn phần thực hiện Truy vấn SQL

rồi nhập lệnh

CREATE DATABASE "QLHH";

Bấm phím [F9] để thực thi hoặc nút mũi tên xanh giống như hình trên
USE "QLHH";

Thực thi xong chọn nút Refresh ([F5]) đề quan sát kết quả. Bấm chọn vào Database QLHH
* Tạo Table: KhachHang
CREATE TABLE "KhachHang" (
"MaKH" NVARCHAR(4) NOT NULL,


"TenKH" NVARCHAR(30) NULL DEFAULT NULL,
"DiaChi" NVARCHAR(255) NULL DEFAULT NULL,
"DThoai" NVARCHAR(255) NULL DEFAULT NULL,
PRIMARY KEY ("MaKH")
)
;

Biên soạn: Th.s Nguyễn Anh Việt

Trang 2


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
* Tạo Table: MatHang
CREATE TABLE "MatHang" (
"MaMH" NVARCHAR(4) NOT NULL,
"TenMH" NVARCHAR(255) NOT NULL,
"DVT" NVARCHAR(255) NULL DEFAULT NULL,
"DonGia" INT NULL DEFAULT NULL,
PRIMARY KEY ("MaMH")
)
;

* Tạo Table: DonDH
CREATE TABLE DonDH (
"MaDH" NVARCHAR(4) NOT NULL,
"NgayDH" DATE NULL,
"NgayGH" DATE NULL,
"MaKH" NVARCHAR(255) NULL DEFAULT NULL,
PRIMARY KEY ("MaDH")

)
;

* Tạo Table: ChiTietDH
CREATE TABLE "ChiTietDH" (
"MaDH" NVARCHAR(4) NOT NULL,
"MaMH" NVARCHAR(4) NOT NULL,
"SoLuong" INT NULL DEFAULT NULL
)
;

* Nhập dữ liệu cho Table: KhachHang

Biên soạn: Th.s Nguyễn Anh Việt

Trang 3


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
* Nhập dữ liệu cho Table: MatHang

* Nhập dữ liệu cho Table: DonDH

* Nhập dữ liệu cho Table: ChiTietDH

Biên soạn: Th.s Nguyễn Anh Việt

Trang 4



Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
* Khoá ngoại
Là các cột ở một Table khác nhưng có liên kết dữ liệu đến một cột là khoá chính của một Table

Khoá
ngoại
Foreign

* Hiển thị tất cả các Đơn đặt hàng
SELECT DonDH.MaDH, DonDH.MaKH, KhachHang.TenKH, MatHang.TenMH,
MatHang.DVT, MatHang.DonGia, ChiTietDH.SoLuong, [DonGia]*[SoLuong] AS
[Thành tiền]
FROM MatHang INNER JOIN (KhachHang INNER JOIN (DonDH INNER JOIN ChiTietDH
ON DonDH.MaDH = ChiTietDH.MaDH) ON KhachHang.MaKH = DonDH.MaKH) ON
MatHang.MaMH = ChiTietDH.MaMH;

Kết quả như sau:

Biên soạn: Th.s Nguyễn Anh Việt

Trang 5


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
Muốn giới hạn chỉ hiển thị các đơn đặt hàng của công ty Hoàng Hôn, thêm vào điều kiện WHERE
SELECT DonDH.MaDH, DonDH.MaKH, KhachHang.TenKH, MatHang.TenMH,
MatHang.DVT, MatHang.DonGia, ChiTietDH.SoLuong, [DonGia]*[SoLuong] AS
[Thành tiền]
FROM MatHang INNER JOIN (KhachHang INNER JOIN (DonDH INNER JOIN ChiTietDH
ON DonDH.MaDH = ChiTietDH.MaDH) ON KhachHang.MaKH = DonDH.MaKH) ON

MatHang.MaMH = ChiTietDH.MaMH
Where KhachHang.TenKH = 'Hoàng Hôn'

Kết quả như sau:

Tuy nhiên, để tìm các đơn đặt hàng của Biti’s thì khó hơn một chút:
SELECT DonDH.MaDH, DonDH.MaKH, KhachHang.TenKH, MatHang.TenMH,
MatHang.DVT, MatHang.DonGia, ChiTietDH.SoLuong, [DonGia]*[SoLuong] AS
[Thành tiền]
FROM MatHang INNER JOIN (KhachHang INNER JOIN (DonDH INNER JOIN ChiTietDH
ON DonDH.MaDH = ChiTietDH.MaDH) ON KhachHang.MaKH = DonDH.MaKH) ON
MatHang.MaMH = ChiTietDH.MaMH
Where KhachHang.TenKH = 'Biti' + Char(39) + 's'

Kết quả như sau:

* Hiển thị các Đơn đặt hàng có Ngày giao hàng trong thời điểm từ 1-3-2004 đến 30-4-2004
SELECT DonDH.MaDH, DonDH.NgayGH, DonDH.MaKH, KhachHang.TenKH,
MatHang.TenMH, MatHang.DVT, MatHang.DonGia, ChiTietDH.SoLuong,
[DonGia]*[SoLuong] AS [Thành tiền]
FROM MatHang INNER JOIN (KhachHang INNER JOIN (DonDH INNER JOIN ChiTietDH
ON DonDH.MaDH = ChiTietDH.MaDH) ON KhachHang.MaKH = DonDH.MaKH) ON
MatHang.MaMH = ChiTietDH.MaMH
Where DonDH.NgayGH >= '2004-03-01' and DonDH.NgayGH <= '2004-04-30'

Biên soạn: Th.s Nguyễn Anh Việt

Trang 6



Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
Kết quả như sau:

* Tính Tổng số lượng và Thành tiền các mặt hàng
SELECT ChiTietDH.MaMH, MatHang.TenMH, Sum(ChiTietDH.SoLuong) AS [So
Luong], Sum([SoLuong]*[DonGia]) AS [Thanh Tien]
FROM MatHang INNER JOIN ChiTietDH ON MatHang.MaMH = ChiTietDH.MaMH
GROUP BY ChiTietDH.MaMH, MatHang.TenMH;

Kết quả như sau:

* Tính tổng số tiền đã đặt hàng theo từng công ty, hiển thị MaKH, TenKH, Tong So Tien. Chú ý
cột Tong So Tien = DonGia * SoLuong
SELECT DonDH.MaKH, KhachHang.TenKH, Sum([SoLuong]*[DonGia]) AS [Tong so
tien]
FROM MatHang INNER JOIN (KhachHang INNER JOIN (DonDH INNER JOIN ChiTietDH
ON DonDH.MaDH = ChiTietDH.MaDH) ON KhachHang.MaKH = DonDH.MaKH) ON
MatHang.MaMH = ChiTietDH.MaMH
GROUP BY DonDH.MaKH, KhachHang.TenKH;

Kết quả như sau:

Biên soạn: Th.s Nguyễn Anh Việt

Trang 7


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
* Tìm công ty đặt hàng có Tổng trị giá cao nhất, hiển thị MaKH, TenKH, Tong So Tien
- Trước tiên, tạo View để hiển thị Tổng thành tiền theo Khách hàng:

Create View "View - Thanh tien theo Khach hang" as
SELECT DonDH.MaKH, KhachHang.TenKH, Sum([SoLuong]*[DonGia]) AS [Tong so
tien]
FROM MatHang INNER JOIN (KhachHang INNER JOIN (DonDH INNER JOIN ChiTietDH
ON DonDH.MaDH = ChiTietDH.MaDH) ON KhachHang.MaKH = DonDH.MaKH) ON
MatHang.MaMH = ChiTietDH.MaMH
GROUP BY DonDH.MaKH, KhachHang.TenKH

Kết quả như sau, (vào mục Data để xem):

- Sau đó tìm Công ty có Tổng giá trị mua hàng cao nhất:
SELECT MaKH, TenKH, "Tong so tien"
FROM "View - Thanh tien theo Khach hang"
Where "Tong so tien" = (Select Max("Tong so tien") from "View - Thanh tien
theo Khach hang")

Kết quả như sau :

- Cuối cùng, tạo View theo Kết quả trên:
Create View "View - Max Thanh tien theo Khach hang" as
SELECT MaKH, TenKH, "Tong so tien"
FROM "View - Thanh tien theo Khach hang"
Where "Tong so tien" = (Select Max("Tong so tien") from "View - Thanh tien
theo Khach hang")

Biên soạn: Th.s Nguyễn Anh Việt

Trang 8



Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
* Tìm công ty đặt hàng có Tổng trị giá thấp nhất, hiển thị MaKH, TenKH, TongSoTien
- Tìm Công ty có Tổng giá trị mua hàng thấp nhất:
SELECT MaKH, TenKH, "Tong so tien"
FROM "View - Thanh tien theo Khach hang"
Where "Tong so tien" = (Select Min("Tong so tien") from "View - Thanh tien
theo Khach hang")

Kết quả như sau :

- Cuối cùng, tạo View theo Kết quả trên:
Create View "View - Max Thanh tien theo Khach hang" as
SELECT MaKH, TenKH, "Tong so tien"
FROM "View - Thanh tien theo Khach hang"
Where "Tong so tien" = (Select Min("Tong so tien") from "View - Thanh tien
theo Khach hang")

* Tìm mặt hàng bán chậm nhất (có Tổng trị giá nhỏ nhất). Hiển thị MaMH, TenMH, Tong So
Tien
- Trước tiên, tạo View để hiển thị Tổng thành tiền theo Mặt hàng:
Create View "View – Tong thanh tien theo mat hang" as
Select ChiTietDH.MaMH, MatHang.TenMH, Sum (ChiTietDH.SoLuong *
MatHang.DonGia) as ThanhTien From ChiTietDH Inner Join MatHang on
ChiTietDH.MaMH = MatHang.MaMH
Group by ChiTietDH.MaMH, MatHang.TenMH

Kết quả như sau (vào mục Data để xem):

Biên soạn: Th.s Nguyễn Anh Việt


Trang 9


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
- Sau đó tìm Mặt hàng có Tổng giá trị thấp nhất:
Select MaMH, TenMH, ThanhTien from "View – Tong thanh tien theo mat hang"
Where ThanhTien = (Select Min(ThanhTien) from "View – Tong thanh tien theo
mat hang")

Kết quả như sau :

- Cuối cùng, tạo View theo Kết quả trên:
Create View "View - Min Tong thanh tien theo mat hang" as
Select MaMH, TenMH, ThanhTien from "View – Tong thanh tien theo mat hang"
Where ThanhTien = (Select Min(ThanhTien) from "View – Tong thanh tien theo
mat hang")

* Tìm mặt hàng bán chạy nhất (có Tổng trị giá cao nhất). Hiển thị MaMH, TenMH, TongSoTien
- Tìm Mặt hàng có Tổng giá trị cao nhất:
Select MaMH, TenMH, ThanhTien from "View – Tong thanh tien theo mat hang"
Where ThanhTien = (Select Max(ThanhTien) from "View – Tong thanh tien theo
mat hang")

Kết quả như sau :

- Cuối cùng, tạo View theo Kết quả trên:
Create View "View - Min Tong thanh tien theo mat hang" as
Select MaMH, TenMH, ThanhTien from "View – Tong thanh tien theo mat hang"
Where ThanhTien = (Select Max(ThanhTien) from "View – Tong thanh tien theo
mat hang")


Biên soạn: Th.s Nguyễn Anh Việt

Trang 10


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
* Tìm mặt hàng được khách đặt hàng nhiều nhất (có số lần đặt hàng lớn nhất). Hiển thị MaMH,
TenMH, SoLanDatHang
- Trước hết, tạo View để chứa số lần đặt hàng của các mặt hàng
Create View "View - Dem Mat hang" as
Select ChiTietDH.MaMH, MatHang.TenMH, Count(ChiTietDH.MaMH) as SoLan From
ChiTietDH Inner Join MatHang On ChiTietDH.MaMH = MatHang.MaMH
Group by ChiTietDH.MaMH, MatHang.TenMH

- Kết quả như sau:

- Tiếp tục các mặt hàng được đặt hàng nhiều nhất
Select MaMH, TenMH, SoLan from "View - Dem Mat hang"
Where SoLan = (Select Max(SoLan) from "View - Dem Mat hang")

- Kết quả như sau:

* Tìm Khách hàng có Tổng số tiền đặt hàng trung bình trên một hoá đơn là lớn nhất. Hiển thị
MaKH, TenKH, SoTienTB_HD
- Trước hết, tạo View để chứa số lượng hoá đơn của các khách hàng
Create View "View - So luong Hoa don" as
SELECT DonDH.MaKH, KhachHang.TenKH, Count(DonDH.MaKH) AS [SoLuongHD]
FROM KhachHang INNER JOIN DonDH ON KhachHang.MaKH = DonDH.MaKH
GROUP BY DonDH.MaKH, KhachHang.TenKH


Biên soạn: Th.s Nguyễn Anh Việt

Trang 11


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
- Kết quả như sau:

- Trong “View – Tong Thanh tien theo Khach hang” đã có Tổng số tiền của từng Khách hàng, Đem số
này chia cho Số lượng HĐ là có kết quả:
Create View "View - So tien TB tren HD" as
SELECT "View - So luong Hoa don".MaKH, "View - So luong Hoa don".TenKH,
"View - Thanh tien theo Khach hang"."Tong So Tien" / "View - So luong Hoa
don".SoLuongHD as TBSoTienHD
FROM "View - So luong Hoa don" INNER JOIN "View - Thanh tien theo Khach
hang" ON "View - Thanh tien theo Khach hang".MaKH = "View - So luong Hoa
don".MaKH

- Kết quả như sau:

- Cuối cùng tìm khách hàng có số tiền TB trên hoá đơn cao nhất:
SELECT MaKH, TenKH, TBSoTienHD
From "View - So tien TB tren HD"
Where TBSoTienHD = (Select Max(TBSoTienHD) from "View - So tien TB tren
HD")

- Kết quả như sau:

Biên soạn: Th.s Nguyễn Anh Việt


Trang 12


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
- Tạo View cho truy vấn:
Create View "View - Max So tien TB tren HD" as
SELECT MaKH, TenKH, TBSoTienHD
From "View - So tien TB tren HD"
Where TBSoTienHD = (Select Max(TBSoTienHD) from "View - So tien TB tren
HD")

* Tìm các Khách hàng không có đặt hàng trong tháng 5/2004. Hiển thị MaKH, TenKH
- Trước hết, tạo View để tìm các khách hàng có đặt hàng trong tháng 5/2004:
Create View "View - Khach hang dat hang thang 5/2004" as
SELECT CONVERT(VARCHAR(10),NgayGH,103) as [Ngay GH], DonDH.MaKH,
KhachHang.TenKH
FROM KhachHang INNER JOIN (DonDH INNER JOIN ChiTietDH ON DonDH.MaDH =
ChiTietDH.MaDH) ON KhachHang.MaKH = DonDH.MaKH
Where NgayGH >= '2004/05/01' And NgayGH <= '2004/05/31'

- Kết quả như sau:

- Sau đó tìm các khách hàng có trong danh sách KhachHang nhưng không có trong danh sách trên
Create View "View - Khach hang khong dat hang thang 5/2004" as
Select KhachHang.MaKH, KhachHang.TenKH from KhachHang
where KhachHang.MaKH not in (Select MaKH from "View - Khach hang dat hang
thang 5/2004")

- Kết quả như sau:


Biên soạn: Th.s Nguyễn Anh Việt

Trang 13


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
* Tìm các Mặt hàng không có khách hàng nào đặt hàng. Hiển thị MaMH, TenMH
- Trước hết, tạo View để tìm các mặt hàng có đặt hàng trong tất cả các đơn đặt hàng:
Create View "View - Mat hang co dat hang" as
Select Distinct ChiTietDH.MaMH, MatHang.TenMH from ChiTietDH Inner Join
MatHang on ChiTietDH.MaMH = MatHang.MaMH

- Kết quả như sau:

- Tiếp tục tìm các mặt hàng không được đặt hàng:
Create View "View - Mat hang khong co dat hang" as
Select MaMH, TenMH from MatHang
Where MaMH not in
(Select MaMH from "View - Mat hang co dat hang")

- Kết quả như sau:

Biên soạn: Th.s Nguyễn Anh Việt

Trang 14


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên


Biên soạn: Th.s Nguyễn Anh Việt

Trang 15


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
* Tạo Database QuanLySinhVien
- Trước hết, nếu đã có QuanLySinhVien thì xoá đi, sau đó tạo và Chọn QuanLySinhVien để làm việc:
If Exists (Select Name from Sys.Databases Where Name=N'QuanLySinhVien')
Drop Database QuanLySinhVien;
Create Database QuanLySinhVien;
Use QuanLySinhVien;

- Chọn Refresh để xem kết quả:

* Tạo Table SinhVien
- Trước hết, nếu đã có Table SinhVien thì xoá đi, sau đó tạo lại Table SinhVien:
If Exists (Select Name from Sys.Tables Where Name=N'SinhVien') Drop Table
SinhVien;
Create Table SinhVien
(
MaSV Int Not Null Primary Key Identity,
TenSV NVarChar(50) Not Null,
GioiTinh NVarchar(5),
NgaySinh Date,
Que NVarChar(50),
Lop NVarChar(5)
)

* Tạo Table MonHoc

- Nếu đã có Table MonHoc thì xoá đi, sau đó tạo lại Table MonHoc:
If Exists (Select Name from Sys.Tables Where Name=N'MonHoc') Drop Table
MonHoc;
Create Table MonHoc
(
MaMH Int Not Null Primary Key Identity,
TenMH NVarChar(50),
DVHT Int
)

Biên soạn: Th.s Nguyễn Anh Việt

Trang 16


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
* Tạo Table KetQua
- Nếu đã có Table KetQua thì xoá đi, sau đó tạo lại Table KetQua:
If Exists (Select Name from Sys.Tables Where Name=N'KetQua') Drop Table
KetQua;
Create Table KetQua
(
MaSV Int,
MaMH Int,
Diem Int,
Constraint Check_Diem Check (Diem Between 0 and 10),
Constraint Primary_Key Primary Key (MaSV, MaMH),
Constraint KhoaNgoai_SV_KQ Foreign Key (MaSV) References SinhVien (MaSV),
Constraint KhoaNgoai_MH_KQ Foreign Key (MaMH) References MonHoc (MaMH)
)


* Nhập dữ liệu vào Table SinhVien
Insert
Select
Select
Select
Select
Select
Select
Select
Select

Into Sinhvien
N'Phạm Trung Tính', 'Nam', '03/30/1996', N'Quảng Ninh', 'L01' Union All
N'Trần Bảo Trọng', 'Nam', '12/14/1995', N'Hà Giang', 'L02' Union All
N'Lê Thùy Dung', N'Nữ', '05/12/1997', N'Hà Nội', 'L03' Union All
N'Lê Trường An', 'Nam', '11/20/1995', N'Ninh Bình', 'L04' Union All
N'Phạm Thị Hương Giang', N'Nữ', '2/21/1999', N'Hòa Bình', 'L02' Union All
N'Đoàn Duy Thức', 'Nam', '4/12/1994', N'Hà Nội', 'L01' Union All
N'Dương Tuấn Thông', 'Nam', '4/12/1991', N'Nam Định', 'L03' Union All
N'Lê Thành Đạt', 'Nam', '4/15/1993', N'Phú Thọ', 'L04'

- Bấm phím F5 (hoặc chọn Refresh), chọn dbo.SinhVien và mục Data để xem kết quả:

Biên soạn: Th.s Nguyễn Anh Việt

Trang 17


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên

* Nhập dữ liệu vào Table MonHoc
Insert
Select
Select
Select
Select
Select

Into MonHoc
N'Toán cao cấp', 3 Union All
N'Mạng máy tính', 3 Union All
N'Tin học đại cương', 4 Union All
N'Hệ quản trị cơ sở dữ liệu', 2 Union All
N'Cơ sở dữ liệu', 2

- Tương tự, xem kết quả như sau:

* Nhập dữ liệu vào Table KetQua
Insert
Select
Select
Select
Select
Select
Select
Select
Select
Select
Select
Select

Select
Select
Select
Select

Into Ketqua
1,1,8 Union
1,2,5 Union
2,2,1 Union
3,2,7 Union
4,2,3 Union
1,3,7 Union
2,1,9 Union
4,1,2 Union
3,1,4 Union
2,3,2 Union
5,1,4 Union
6,1,2 Union
6,3,9 Union
6,2,7 Union
6,5,10

All
All
All
All
All
All
All
All

All
All
All
All
All
All

Biên soạn: Th.s Nguyễn Anh Việt

Trang 18


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
- Tương tự, xem kết quả như sau:

Ví dụ 1: Cho biết mã số, tên, điểm thi tất cả các môn của sinh viên Phạm Trung Tính
- Tìm điểm của sinh viên theo tên sinh viên:
Select MH.MaMH, TenMH, Diem
From SinhVien SV, MonHoc MH, KetQua KQ
Where SV.MaSV = KQ.MaSV and MH.MaMH = KQ.MaMH and TenSV = N'Phạm Trung
Tính'

- Kết quả như sau:

Ví dụ 2: Cho biết mã số, tên, điểm thi tất cả các môn của sinh viên có mã sinh viên = 2
- Tìm điểm của sinh viên theo mã sinh viên:
Select MH.MaMH, TenMH, Diem
From SinhVien SV, MonHoc MH, KetQua KQ
Where SV.MaSV = KQ.MaSV and MH.MaMH = KQ.MaMH and SV.MaSV = 2


Biên soạn: Th.s Nguyễn Anh Việt

Trang 19


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
- Kết quả như sau:

Ví dụ 3: Cho biết mã số, tên môn và điểm thi ở những môn mà sinh viên Đoàn Duy Thức phải thi lại
(điểm<5)
- Thực hiện:
Select MH.MaMH, TenMH, Diem
From SinhVien SV, MonHoc MH, KetQua KQ
Where SV.MaSV = KQ.MaSV and MH.MaMH = KQ.MaMH and Diem < 5
and TenSV = N'Đoàn Duy Thức'

- Kết quả như sau:

Ví dụ 4: Cho biết mã số, tên những sinh viên đã thi ít nhất là 1 trong 3 môn Cơ sở dữ liệu, cấu trúc dữ
liệu, mạng máy tính.
- Thực hiện:
Select SV.MaSV, TenSV
From SinhVien SV, MonHoc MH, KetQua KQ
Where SV.MaSV = KQ.MaSV and MH.MaMH = KQ.MaMH and TenMH in (N'Cơ sở dữ
liệu', N'Cấu trúc dữ liệu', N'Mạng máy tính')

- Kết quả như sau:

Biên soạn: Th.s Nguyễn Anh Việt


Trang 20


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
Ví dụ 5: Cho biết mã số, tên những môn mà sinh viên có mã số 1 chưa có điểm.
- Thực hiện:
Select MaMH, TenMH
From MonHoc MH
Except
(Select MH.MaMH, TenMH
From SinhVien SV, MonHoc MH, KetQua KQ
Where SV.MaSV = KQ.MaSV and MH.MaMH = KQ.MaMH and SV.MaSV = 1)

- Kết quả như sau:

Ví dụ 6: Cho biết mã số, tên những sinh viên có điểm thi môn 1 không thấp nhất khoa.
- Thực hiện:
Select SV.MaSV, TenSV, KQ.Diem
From SinhVien SV, MonHoc MH, KetQua KQ
Where SV.MaSV = KQ.MaSV and MH.MaMH = KQ.MaMH and MH.MaMH = 1 and Diem >
(select MIN(Diem) from KetQua where MaMH = 1)

- Kết quả như sau:

Ví dụ 7: Cho biết mã số và tên những sinh viên có điểm thi môn 1 lớn hơn điểm thi môn 1 của sinh
viên 3.
- Thực hiện:
Select SV.MaSV, TenSV
From SinhVien SV, MonHoc MH, KetQua KQ
Where SV.MaSV = KQ.MaSV and MH.MaMH = KQ.MaMH and MH.MaMH = 1 and Diem >

(Select Diem From KetQua Where MaMH = 1 and MaSV = 3)

Biên soạn: Th.s Nguyễn Anh Việt

Trang 21


Cơ sở Dữ liệu MSSQL – Bài tập về Quản lý hàng hóa và Quản lý điểm của Sinh viên
- Kết quả như sau:

Ví dụ 8: Cho biết số sinh viên phải thi lại môn Cơ sở dữ liệu.
- Thực hiện:
Select COUNT(*) as N'Số sv thi lại'
From MonHoc MH, KetQua KQ
Where MH.MaMH = KQ.MaMH and TenMH = N'Mạng máy tính' and Diem < 5

- Kết quả như sau:

Ví dụ 9: Cho biết MaSV, TenSV, Điểm của các sinh viên phải thi lại môn Cơ sở dữ liệu.
- Thực hiện:
Select SV.MaSV, SV.TenSV, KQ.Diem
From MonHoc MH, KetQua KQ, SinhVien SV
Where MH.MaMH = KQ.MaMH and TenMH = N'Mạng máy tính' and Diem < 5 and
SV.MaSV=KQ.MaSV

- Kết quả như sau:

Biên soạn: Th.s Nguyễn Anh Việt

Trang 22




×