Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 4

Trần Thị Ngọc Mai-27201448177

Q1

I. Short answer
1. What is SQL? What are the different types of statements supported by SQL?
- SQL (Structured Query Language) is a programming language used to
manage and manipulate relational databases.
- The different types of statements supported by SQL:
+ Data Definition Language (DDL)
+ Data Manipulation Language (DML)
+ Data Control Language (DCL)
+ Transaction Control Language (TCL)
2. What difference between data and information?
- Data is raw, unprocessed facts and figures, while information is processed,
organized, and meaningful data.

3. Why do we use SQL constraints? Which constraints we can use while


creating a database in SQL?

- SQL constraints are used to enforce rules and restrictions on the data in a
database, ensuring data integrity and consistency. They help maintain the accuracy
and reliability of the data.

- Constraints can be used when creating a database in SQL: NOT NULL,


UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK, DEFAULT, INDEX.

4. What is DBMS? What are the advantages of having the DBMS between the
end user’s applications and the database?

- DBMS (Database Management System) is software that enables users to


create, manage, and manipulate databases.

- Advantages of having the DBMS between the end user’s applications and
the database: Data integrity, security, data sharing, data independence, data
recovery, improved performance, scalability, and flexibility.

II. SQL

DOCGIA(MaDG, HoTen,NgaySinh,DiaChi,SoDT)
SACH(MaSach,TenSach,TheLoai,NhaXuatBan)
PHIEUTHUE(MaPM,MaDG,NgayThue,NgayTra,SoSachMuon)
CHITIET_PM(MaPM,MaSach)

QUAN HỆ THUỘC TÍNH KIỂU DỮ LIỆU DIỄN GIẢI


MaDG char(5) Mã độc giả
HoTen varchar(30) Họ tên
DOCGIA NgaySinh smalldatetime Ngày sinh
DiaChi varchar(30) Địa chỉ
SoDT varchar(15) Số điện thoại
MaSach char(5) Mã sách
TenSach varchar(25) Tên sách
SACH
TheLoai varchar(25) Thể loại
NhaXuatBan varchar(30) Nhà xuất bản
MaPT char(5) Mã phiếu thuê
MaDG char(5) Mã độc giả
PHIEUTHUE NgayThue smalldatetime Ngày thuê
NgayTra smalldatetime Ngày trả
SoSachThue int Số sách thuê
MaPT char(5) Mã phiếu thuê
CHITIET_PT
MaSach char(5) Mã sách

CREATE TABLE DOCGIA ( MaDG CHAR(5)

PRIMARY KEY, HoTen VARCHAR(50), NgaySinh DATE, DiaChi


VARCHAR(100), SoDT VARCHAR(15) );

CREATE TABLE SACH ( MaSach CHAR(5) PRIMARY KEY, TenSach


VARCHAR(100), TheLoai VARCHAR(25), NhaXuatBan VARCHAR(30) );

CREATE TABLE PHIEUTHUE ( MaPM CHAR(5) PRIMARY KEY, MaDG


CHAR(5), NgayThue DATE, NgayTra DATE, SoSachMuon INT, FOREIGN KEY
(MaDG) REFERENCES DOCGIA(MaDG) );
CREATE TABLE CHITIET_PM ( MaPM CHAR(5), MaSach CHAR(5),
PRIMARY KEY (MaPM, MaSach), FOREIGN KEY (MaPM) REFERENCES
PHIEUTHUE(MaPM), FOREIGN KEY (MaSach) REFERENCES
SACH(MaSach) );

1. Hiện thực các ràng buộc toàn vẹn sau:

1.1.
ALTER TABLE PHIEUTHUE
ADD CONSTRAINT CHK_THOI_GIAN_THUE
CHECK (DATEDIFF(day, NgayThue, NgayTra) <= 10);

1.2
ALTER TABLE PHIEUTHUE
ADD CONSTRAINT CHK_SO_SACH_THUE
CHECK (SoSachMuon = (SELECT COUNT(*) FROM CHITIET_PM WHERE CHITIET_PM.MaPM = PHIEUTHUE.MaPM));

2.

2.1
SELECT DOCGIA.MaDG, DOCGIA.HoTen
FROM DOCGIA
JOIN PHIEUTHUE ON DOCGIA.MaDG = PHIEUTHUE.MaDG
JOIN CHITIET_PM ON PHIEUTHUE.MaPM = CHITIET_PM.MaPM
JOIN SACH ON CHITIET_PM.MaSach = SACH.MaSach
WHERE SACH.TheLoai = 'Tin học' AND YEAR(PHIEUTHUE.NgayThue) = 2007;

2.2
SELECT TOP 1 DOCGIA.MaDG, DOCGIA.HoTen
FROM DOCGIA
JOIN PHIEUTHUE ON DOCGIA.MaDG = PHIEUTHUE.MaDG
JOIN CHITIET_PM ON PHIEUTHUE.MaPM = CHITIET_PM.MaPM
JOIN SACH ON CHITIET_PM.MaSach = SACH.MaSach
GROUP BY DOCGIA.MaDG, DOCGIA.HoTen
ORDER BY COUNT(DISTINCT SACH.TheLoai) DESC;

2.3
SELECT DISTINCT SACH.TheLoai, SACH.TenSach
FROM SACH
JOIN CHITIET_PM ON SACH.MaSach = CHITIET_PM.MaSach
GROUP BY SACH.TheLoai, SACH.TenSach
HAVING COUNT(*) = (
SELECT MAX(Total)
FROM (
SELECT COUNT(*) AS Total
FROM SACH
JOIN CHITIET_PM ON SACH.MaSach = CHITIET_PM.MaSach
GROUP BY SACH.TheLoai, SACH.TenSach
) AS Counts
WHERE Counts.TheLoai = SACH.TheLoai
);

You might also like