Bài tập thực hành 1 cơ sở dữ liệu

Chapter-6-Concurrency-Control-Monday-May-15th-2023-23_55-_-updated-Saturday-May-20th-2023-23_55_-Attempt-review.pdf

Show

Chapter-7-Database-Recovery-Monday-May-15th-2023-23_55-_-updated-Saturday-May-20th-2023-23_55_-Attempt-review.pdf

Bài tập và Thực hành 1 là phần nội dung được học trong chương trình Tin học lớp 12 tập 1. Để giúp các em học tốt phần này, VnDoc gửi tới các bạn lời giải cho các câu hỏi trong SGK Tin học 12 bài Bài tập và Thực hành 1. Mời các bạn cùng theo dõi bài viết dưới đây.

  • Giải bài tập SGK Tin học 12 bài 1
  • Giải bài tập SGK Tin học 12 bài 2

Mục đích, yêu cầu

  • Biết một số công việc cơ bản khi xây dựng một CSDL đơn giản.
  • Thực hiện được các thao tác cơ bản: khởi động và kết thúc Access, tạo CSDL mới.
  • Có các kĩ năng cơ bản về tạo cấu trúc bảng theo mẫu, chỉ định khóa chính.
  • Biết chỉnh sửa cấu trúc bảng.

Bài 1 trang 21 SGK Tin học 12

Tìm hiểu nội quy thư viện, thẻ thư viện, phiếu mượn/trả sách, sổ quản lí sách,… của thư viện trường trung học phổ thông.

Trả lời:

  • Cách thức phục vụ mượn đọc tại chỗ, mượn về nhà, nội quy thư viện.
  • Sổ theo dõi sách trong kho.
  • Sổ theo dõi tình hình sách cho mượn.
  • Số sách được mượn mỗi lần, thời hạn mượn sách.
  • Lập kế hoạch dự trù mua sách, thanh lí sách, cơ sở vật chất của thư viện…
  • Các tổ chức và thực hiện quản lí sách

- Nội quy: Không mang túi sách, báo vào phòng đọc, xuất trình thẻ thư viện, chứng minh thư với thủ thư. Chỉ đọc tại chỗ không được mang tài liệu ra ngoài phòng đọc thư viện.

- Thẻ thư viện:

Bài tập thực hành 1 cơ sở dữ liệu

- Phiếu mượn:

Bài tập thực hành 1 cơ sở dữ liệu

- Sổ quản lí mượn điện tử:

Bài tập thực hành 1 cơ sở dữ liệu

Bài 2 trang 21 SGK Tin học 12

Kể tên các hoạt động chính của thư viện.

Trả lời:

- Mua và nhập sách, thanh lí sách.

- Cho mượn: Kiểm tra thẻ đọc, phiếu mượn, tím sách trong kho, ghi mượn trả.

- Nhận sách trả: Kiểm tra thẻ đọc, phiếu mượn, đối chiếu sách trả với phiếu mượn, ghi sổ mượn/trả, ghi sự cố sách quá hạn hoặc hỏng, nhập sách về kho.

- Cấp thẻ thư viện cho bạn đọc

- Xử lí vi phạm.

Bài 3 trang 21 SGK Tin học 12

Hãy liệt kê các đối tượng cần quản lí khi xây dựng CSDL quản lí sách và mượn/trả sách. Với mỗi đối tượng, hãy liệt kê các thông tin cần quản lí.

BÀI TẬP HƯỚNG DẪN THỰC HÀNH MÔN CƠ SỞ DỮ LIỆU

Số tiết: 30

  • Sinh viên học thực hành mang theo phải mang theo bài tập, bài giảng và

thiết bị lưu trữ.

Phân bổ thời gian

STT Tuần

thứ

Số

tiết

Bài tập Ghi chú

1 3 Trang 3 12 Tạo CSDL bài tập 1 dùn g

công cụ Management và

dụng lệnh DDL

2 3 Mục 2 trang 13

Mục C, C trang 14

Sinh viên tự làm bài tập 2 và

bài tập 3 nộp vào tuần thứ 8

và 9

3 3 Mục C, C.

4 3 Mục C, C.

5 3 Mục C, C.

6 3 Mục C, C.

7 3 Mục C, C.

8 3 Bài tập 2 (lưu ý nhập

liệu đúng nguyên tắc đã

ràng buộc)

9 3 Ôn

10 3 Kiểm tra

I. Bài tập

Baøi 1. Quaûn lyù điểm sinh vieân

Các field in đậm và gạch dưới là khoá chính của bảng. Tạo bảng theo định nghĩa sauKETQUAField Name Field Type Field Size DescriptionMASV Char 3MAMH Char 2LANTHI TinyintDIEM Decimal 4,DMKHOAField Name Field Type Field Size DescriptionMAKHOA Char 2TENKHOA nVarChar 20DMMHField Name Field Type Field Size DescriptionMAMH Char 2TENMH nVarchar 30SOTIET TinyintDMSVField Name Field Type Field Size DescriptionMASV Char 3HOSV nVarchar 30TENSV nVarChar 10PHAI bitNGAYSINH Date/TimeNOISINH nVarchar 25MAKH Char 2HOCBONG floatNhấn OKBước 2. Tạo các bảngỞ Menu trái, mở QLDiem, click phải vào mục Table  New Table... như hình dưới

####### Đặt tên CSDL

  • Gõ vào 2 thuộc tính MaKhoa và TenKhoa với kiểu dữ liệu tương ứng.
  • Chọn dòng MaKhoa click vào biểu tượng để tạo khóa chính
  • Lưu bảng đặt tên DMKHOA Tương tự lần lượt tạo các bảng DMSV, KETQUA, DMMH2. Dùng Diagram để tạo liên kết khóa ngoại

####### Tên thuộc

####### tính

####### Kiểu dữ

####### liệu

####### Ràng

####### buộc rỗng

Kéo quan hệ từ DMKHOA qua DMSV theo MaKhoa. Hiển thị như hình sau:Lần lượt kéo quan hệ từ DMSV – KETQUA(theo MaSV)và DMMH – KETQUA (theo MaMH)Kết q uả quan hệ thể hiện như sau:3. Nhập liệu :Thứ tự nhập liệu:o Ưu tiên 1: Nhập bảng chỉ xuất hiện đầu khóa chínho Ưu tiên 2: Nhập bảng có - (một – nhiều)o Ưu tiên 3: Nhập bảng có - (nhiều – nhiều)Lần lượt nhập liệu vào các bảng sau:DMKhoaDMMonDMSVKETQUA

2. Dùng ngôn ngữ SQL

2. Định nghĩa cơ sở dữ liệu (DDL)

Cú pháp tạo cơ sở dữ liệu

Create Database

Cú pháp xóa cơ sở dữ liệu

Drop Database

Cú pháp mở CSDL

USE

Cú pháp tạo bảng

Create Table

(

[RBTV],

[RBTV],

...

[]

)

Cú pháp thêm ràng buộc

ALTER TABLE ADD

Constraint ,

Constraint ,

...

- Tạo cơ sở dữ liệu “QLDiem”

- Lần lược tạo các table như cấu trúc ở bài 1

- Tạo ràng buộc khóa

use master

if exists(select * from sysdatabases where name='QLDiem')

drop database QLDiem

create database QLDiem

use QLDiem

create table KETQUA

(

MaSV char ( 3 ),

MaMH char ( 2 ),

LanThi Tinyint,

Diem Decimal( 4 , 2 ),

constraint PK_KetQua primary key (MaSV,MaMH,LanThi)

)

create table DMKHOA

(

MaKhoa char( 2 ) constraint PK_Khoa primary key,

TenKhoa nVarChar( 20 ),

)

create table DMMH

(

MaMH char( 2 ) constraint PK_DMMH primary key,

TenMH nVarchar( 30 ),

SoTiet Tinyint,

)

create table DMSV

(

MaSV char( 3 ) constraint PK_DMSV primary key,

HoSV nvarchar( 30 ),

TenSV Nvarchar( 10 ),

Phai bit,

NgaySinh Datetime,

NoiSinh nvarchar( 25 ),

MaKH char( 2 ),

HocBong float,

)

alter table KETQUA add constraint FK_KetQua_SinhVien

foreign key(masv) references DMSV(MaSV),

constraint FK_KetQua_DMMH

foreign key(MaMH) references DMMH(MaMH)

alter table DMSV add constraint FK_DMSV_DMKHOA foreign key(MaKH)

references DMKHOA(MaKhoa)

2. Sử dụng sp hệ thống kiểm tra cấu trúc dữ liệu:

- Kiểm tra các bảng: sp_tables

- Kiểm tra cấu trúc bảng: sp_columns

- Kiểm tra khóa chính: sp_pkeys

- Kiểm tra các ràng buộc trong bảng: sp_helpconstraint

2. Thay đổi cấu trúc dữ liệu dùng ngôn ngữ DDL

- Thêm thuộc tính (cột)

ALTER TABLE ADD

[]

  • Cú pháp sửa
UPDATE
SET =,
=,
...
[WHERE <điều kiện>]

4. Thêm tất cả dữ liệu bằng lệnh insert.Câu lệnh: INSERT INTO DMMHVALUES (‘01’, N‘Cô sôû döõ lieäu’, 45)4. Cập nhật số tiết của môn Văn phạm thành 45 tiết.Câu lệnh: UPDATE DMMHSET SoTiet = 45WHERE TenMH = N’Văn phạm’4. Cập nhật tên của sinh viên Trần Thanh Mai thành Trần Thanh Kỳ.4. Cập nhật phái của sinh viên Trần Thanh Kỳ thành phái Nam.4. Cập nhật ngày sinh của sinh viên Trần thị thu Thuỷ thành 05/07/199 7.4. Tăng học bổng cho tất cả những sinh viên có mã khoa “AV” thêm 100000.Câu lệnh: UPDATE DMSVSET HocBong = HocBong + 100000WHERE MaKH = ‘AV’4. Xoá tất cả những dòng có điểm thi lần 2 nhỏ nhơn 5 trong bảng KETQUA.Câu lệnh: DELETE FROM KETQUAWHERE LANTHI = 2 AND DIEM < 54. Xoá những sinh viên không có học bổng. (Xóa được không? lý do).

C. Truy vấn

1. Truy vấn đơn giản

SELECT

FROM

WHERE <điều kiện>

1. Danh sách các môn học có tên bắt đầu bằng chữ T, gồm các thông tin: Mã môn, Tênmôn, Số tiết.Câu lệnh: SELECT MaMH, TenMH, SoTietFROM DMMHWHERE TenMH like N’T%’1. Liệt kê danh sách những sinh viên có chữ cái cuối cùng trong tên là I, gồm các thôngtin: Họ tên sinh viên, Ngày sinh, Phái.1. Danh sách những khoa có ký tự thứ hai của tên khoa có chứa chữ N, gồm các thôngtin: Mã khoa, Tên khoa.1. Liệt kê những sinh viên mà họ có chứa chữ Thị.1. Cho biết danh sách những sinh viên có ký tự đầu tiên của tên nằm trong khoảng từ ađến m, gồm các thông tin: Mã sinh viên, Họ tên sinh viên, Phái, Học bổng.1. Liệt kê các sinh viên có học bổng từ 150000 trở lên và sinh ở Hà Nội, gồm các thôngtin: Họ tên sinh viên, Mã khoa, Nơi sinh, Học bổng.1. Danh sách các sinh viên của khoa AV văn và khoa VL, gồm các thông tin: Mã sinhviên, Mã khoa, Phái.1. Cho biết những sinh viên có ngày sinh từ ngày 01/01/1992 đến ngày 05/06/gồm các thông tin: Mã sinh viên, Ngày sinh, Nơi sinh, Học bổng.1. Danh sách những sinh viên có học bổng từ 80 đến 150, gồm các thông tin:Mã sinh viên, Ngày sinh, Phái, Mã khoa.1. Cho biết những môn học có số tiết lớn hơ n 30 và nhỏ hơn 45 , gồm các thông tin: Mãmôn học, Tên môn học, Số tiết.1. Liệt kê những sinh viên nam của khoa Anh văn và khoa tin học, gồm các thông tin:Mã sinh viên, Họ tên sinh viên, tên khoa, Phái.1. Liệt kê những sinh viên có điểm thi môn sơ sở dữ liệu nhỏ hơn 5 , gồm thông tin: Mãsinh viên, Họ tên, phái, điểm1. Liệt kê những sinh viên học khoa Anh văn mà không có học bổng, gồm thông tin:Mã sinh viên, Họ và tên, tên khoa, Nơi sinh, Học bổng.2. Sắp xếp ( Order By)

SELECT

FROM

WHERE <điều kiện>

ORDER BY ACS|DESC, ACS|DESC

ASC : sắp xếp tăng, DESC : sắp xếp giảm2. Cho biết danh sách những sinh viên mà tên có chứa ký tự nằm trong khoảng từ a đếnm, gồm các thông tin: Họ tên sinh viên, Ngày sinh, Nơi sinh. Danh sách được sắpxếp tăng dần t heo tên sinh viên.Câu lệnh: SELECT HoSV+ ‘ ’ +TenSV AS HoTenSV, NgaySinh, NoiSinh,FROM DMSVWHERE TenSV like ‘%[a-m]%’ORDER BY TenSV ASC2. Liệt kê danh sách sinh viên, gồm các thông tin sau: Mã sinh viên, Họ sinh viên, Tênsinh viên, Học bổng. Danh sách sẽ được sắp xếp theo thứ tự Mã sinh viên tăng dần.2. Thông tin các sinh viên gồm: Họ tên sinh viên, Ngày sinh, Học bổng. Thông tin sẽđược sắp xếp theo thứ tự Ngày sinh tăng dần và Học bổng giảm dần.Câu lệnh:SELECT Count(*) AS SLSVFROM DMSV4. Cho biết tổng sinh viên và tổng sinh viên nữ.4. Cho biết tổng số sinh viên của từng khoa.Câu lệnh: SELECT s, TenKH, COUNT(MaSV) As SoSVFROM DMSV s, DMKHOA kWHERE s = kGROUP BY s, TenKH4. Cho biết số lượng sinh viên học từng môn (dùng Distinct loại trùng nhau)Câu lệnh: SELECT M, TenMH, COUNT(Distinct MaSV) As SoMHFROM DMMH M, KETQUA KWHERE M = KGROUP BY M, TenMH4. Cho biết số lượng môn học mà mỗi sinh viên đã họ c.4. Cho biết học bổng cao nhất của mỗi khoa.4. Cho biết tổng số sinh viên nam và tổng số sinh viên nữ của mỗi khoa.(Hướng dẫn: dùng SUM kết hợp với CASE... )SELECT K,TENKHOA,SUM(CASE WHEN PHAI= 0 THEN 1 ELSE 0 END ) AS TNAM,SUM(CASE WHEN PHAI = 1 THEN 1 ELSE 0 END ) AS TNUFROM DMKHOA K,DMSV SVWHERE K.MAKHOA=SVGROUP BY K,TENKHOA4. Cho biết số lượng sinh viên theo từng độ tuổi.4. Cho biết số lượng sinh viên đậu và số lượng sinh viên rớt của từng môn trong lần thi1.

5. Truy vấn theo điều kiện gom nhóm.
  • Điều kiện trên nhóm
SELECT
FROM
WHERE <điều kiện>
GROUP BY
HAVING <điều kiện trên nhóm>

5. Cho biết năm sinh nào có 2 sinh viên đang theo học tại trường.Câu lệnh: SELECT YEAR(NgaySinh) as NamSinhFROM DMSVGROUP BY YEAR(NgaySinh)HAVING COUNT(MASV) = 25. Cho biết nơi nào có hơn 2 sinh viên đang theo học tại trường.5. Cho biết môn nào có trên 3 sinh viên dự thi.5. Cho biết sinh viên thi lại trên 2 lần.5. Cho biết sinh viên nam có điểm trung bình lần 1 trên 7.5. Cho biết danh sách sinh viên rớt trên 2 môn ở lần thi 1.5. Cho biết k hoa nào có nhiều hơn 2 sinh viên nam.

5. Cho biết khoa có 2 sinh đạt học bổng từ 100 đến 200.

5. Cho biết sinh viên nam học trên từ 3 môn trở lên

5. Cho biết sinh viên có điểm trung bình lần 1 từ 7 trở lên nhưng không có môn nào

dưới 5.5. Cho biết môn không có sinh viên rớt ở lần 1. (rớt là điểm <5)5. Cho biết sinh viên đăng ký học hơn 3 môn mà thi lần 1 không bị rớt môn nào.

6. Truy vấn con trả về một giá trị

SELECT
FROM
WHERE (
SELECT
FROM
WHERE <điều kiện>)

So sánh tập hợp: =, >, >=, <, <=, <>

6. Cho biết sinh viên nào có học bổng cao nhất.B1. Tìm giá trị học bổng cao nhất (trả về một giá trị duy nhất).B2. Lấy những sinh viên có học bổng bằng học bổng BCâu lệnh: SELECT * FROM DMSVWHERE HocBong = (SELECT MAX(HocBong) FROM DMSV)6. Cho biết những sinh viên có điểm thi lần 1 môn cơ sở dữ liệu cao nhất.6. Cho biết sinh viên khoa anh văn có tuổi lớn nhất.6. Cho biết những sinh viên có cùng nơi sinh với sinh viên có mã số “A01”6. Cho biết sinh viên khoa anh văn học môn văn phạm có điểm thi lần 1 thấp nhất.6. Cho biế t sinh viên thi môn cơ sở dữ liệu lần 2 có điểm bằng điểm cao nhất của sinhviên thi môn cơ sở dữ liệu lần 1.6. Cho biết sinh viên có điểm thi môn cơ sở dữ liệu lần 2 lớn hơn tất cả điểm thi lần 1môn cơ sở dữ liệu của những sinh viên khác.6. Cho biết những sinh viên có học bổng lớn hơn tất cả học bổng của sinh viên thuộckhoa anh văn

7. Truy vấn con trả về nhiều giá trị, sử dụng lượng từ IN, ALL, ANY, UNION,
TOP

7. Cho biết khoa nào có đông sinh viên nhận học bổng nhất và khoa nào khoa nào có ítsinh viên nhận học bổng nhất.7. Cho biết môn nào có nhiều sinh viên rớt lần 1 nhiều nhất.7. Cho biết 3 sinh viên có học nhiều môn nhất.Câu lệnh:SELECT TOP 3 s, HoSV, TenSV, COUNT(DISTINCT(MaMH)) as SoMonFROM DMSV s, KETQUA kWHERE s = kGROUP BY s, HoSV, TenSVORDER BY COUNT(DISTINCT(MaMH)) DESC

8. Phép trừ

SELECT
FROM
WHERE (
SELECT
FROM
WHERE <điều kiện>)

So sánh tập hợp: NOT IN, NOT EXIST, <>ALL

8. Cho biết sinh viên chưa thi môn cơ sở dữ liệu.Câu lệnh: SELECT MaSV, HoSV, TenSVFROM DMSVWHERE MaSV NOT IN ( SELECT kFROM DMMH m, KETQUA kWHERE m = k ANDTenMH = N’Cơ sở dữ liệu’)Ghi chú: NOT IN tương đương với <>ALL8. Cho biết sinh viên nào không thi lần 1 mà có dự thi lần 2.8. Cho biết môn nào không có sinh viên khoa anh văn học.8. Cho biết những sinh viên khoa anh văn chưa học môn văn phạm.8. Cho biết những môn không có sinh viên rớt ở lần 1.8. Cho biết những khoa không có sinh viên nữ.8. Cho biết những sinh viên :

  • Học khoa anh văn có học bổng hoặc
  • Chưa bao giờ rớt.

SELECT SV,HOSV,TENSV,SV

FROM DMSV SV,DMKHOA K

WHERE SV.MAKHOA=K

AND TENKHOA LIKE N'ANH VĂN'

AND HOCBONG> 0

UNION

SELECT SV,HOSV,TENSV,MAKHOA

FROM DMSV SV ,KETQUA K

WHERE SV.MASV=K

AND SV NOT IN(SELECT MASV

FROM KETQUA

WHERE DIEM< 5 )

8. Cho biết những sinh viên:

  • Không có học bổng hoặc
  • Bị rớt môn học (sinh viên thi lần 1 bị rớt mà không thi lần 2 và sinh viên thi lần 2 bị rớt )
9. Truy vấn dùng phép chia

R:S  R-(S-R)

SELECT R1, R1, R1
FROM R R
WHERE NOT EXISTS (
SELECT *
FROM S
WHERE NOT EXISTS (
SELECT *
FROM R R
WHERE R2.D=S AND R2.E=S
AND R1.A=R2 AND R1.B=R2 AND R1.C=R2 ))

9. Cho biết những môn được tất cả các sinh viên theo học. (những môn học mà khôngcó sinh viên nào không không học)Câu lệnhSELECT *FROM DMMH KWHERE NOT EXISTS (SELECT * FROM DMSV SWHERE NOT EXISTS (SELECT *FROM KETQUA KWHERE K2 = SAND K2 = K1))