ALTER TABLE SINHVIEN ADD CONSTRAINT SINHVIEN_FK_maSV PRIMARY KEYmaSV; Tạo bảng SACH, khóa chính: CREATE TABLE SACH maSach nchar5 not null, ALTER TABLE SACH ADD CONSTRAINT SACH_PK_maSach
Trang 1ASSIGNMENT
CƠ SỞ DỮ LIỆU
Trang 2Câu 1 Phân tích bài toán, xác định các thực thể và các thuộc tính của chúng
Trang 3o Tên sinh viên
N
N
Trang 4Câu 2: Thiết kế sơ đồ ERD:
Có
Thông tin
Ho ten Tên
Họ
MSV
Thẻ sinh viên Email
Chuyen nghanh hoc
Số điện thoại
Ho ten
Tên
Họ
Giá tiền Bản sao
Quản lý
Trang 5Sinh viên:
SÁCH:
PHIẾU MƯỢN SÁCH:
hosinhvien Text(50) Họ và tên lót sinh viên
Tên cột Kiểu dữ liệu Mô Tả
chuyennghanhhoc Text(100) Chuyên ngành học
Trang 6Ghichu Text(255) Ghi chú
Câu 3 Tạo các bảng trong CSDL, tạo các ràng buộc: khoá chính, khoá ngoại, ràng buộc duy nhất, ràng buộc kiểm tra …
Tạo bảng SINHVIEN, khóa chính;
CREATE TABLE SINHVIEN(
Trang 7ALTER TABLE SINHVIEN
ADD CONSTRAINT SINHVIEN_FK_maSV
PRIMARY KEY(maSV);
Tạo bảng SACH, khóa chính:
CREATE TABLE SACH(
maSach nchar(5) not null,
ALTER TABLE SACH
ADD CONSTRAINT SACH_PK_maSach
PRIMARY KEY(maSach);
Tạo bảng PHIEUMUONSACH khóa chính, khóa ngoại:
CREATE TABLE PHIEUMUONSACH(
Sophieu int identity not null,
Trang 8/*Khóa chính*/
ALTER TABLE PHIEUMUONSACH
ADD CONSTRAINT PHIEUMUONSACH_PK_Sophieu
PRIMARY KEY(Sophieu);
/*Khóa ngoại*/
ALTER TABLE PHIEUMUONSACH
ADD CONSTRAINT PHIEUMUONSACH_FK_maSV
FOREIGN KEY(maSV)
REFERENCES SINHVIEN(maSV);
ALTER TABLE PHIEUMUONSACH
ADD CONSTRAINT PHIEUMUONSACH_FK_maSach
FOREIGN KEY(maSach)
REFERENCES SACH(maSach);
Tạo ràng buộc kiểm tra cho bảng sách:
ALTER TABLE SACH ADD CONSTRAINT soluong check(soluong>=1);ALTER TABLE SACH ADD CONSTRAINT giatien check(giatien>=1);ALTER TABLE SACH ADD CONSTRAINT bansao check(bansao>=1)
Trang 9Câu 5: Nhập dữ liệu cho bảng ghi;
*Bảng SINHVIEN:
insertinto SINHVIEN
(tenSV,hovatenlotSV,maSV,Ngaysinh,Gioitinh ,Chuyennghanhhoc,Email,Sodienthoai)
Trang 10*Bảng SACH
insert into SACH
(maSach,Tieude,Nhaxuatban,Tacgia,Soluong,Bansao,Giatien,Ngaynhap,Loaisach,Vitridacasach)
values ('IT001','SQL sever','NXB Ha Noi','Herbert
Schildt','30' ,'4','500000','11/12/2017','Cong nghe thong tin','1'),('IT002','Lap trinh huong doi tuong','NXB Ha
Noi','Herbert Schildt','20' ,'4','400000','11/20/2017','Cong nghe thong tin','1'), ('IT003','Tin hoc co so','NXB Ha
Noi','Herbert Schildt','15' ,'4','200000','11/22/2017','Cong nghe thong tin','1'), ('IT004','Photoshop','NXB Ha
Noi','Herbert Schildt','25' ,'4','350000','11/25/2017','Cong nghe thong tin','2'), ('IT005','Photoshop nang cao','NXB Ha Noi','Herbert Schildt','20' ,'4','500000','11/25/2017','Cong nghe thong tin','2')
*Bảng PHIEUMUONSACH
insert into PHIEUMUONSACH
(Sophieu,ngaymuon,ngaytra,tenSV,hovatenlotSV,maSV,maLop,STT,
maSach,soluongsachmuon,tenSach,nhaxuatban,ghichu)
Trang 11values ('12/11/2017', '12/18/2017', 'Nhat', 'Pham Phu',
'PD02142', 'PT13303', '1', 'IT001', '3', 'SQL sever', 'NXB
Ha Noi', 'Chua tra sach'),('12/13/2017', '12/20/2017',
'Thach', 'Nguyen Van', 'PD02151', 'PT13303', '1', 'IT001',
'2', 'SQL sever', 'NXB Ha Noi', 'Chua tra
sach'),('12/15/2017', '12/22/2017', 'Phuoc', 'Nguyen Thien Hong', 'PD02154', 'PT13303', '1', 'IT002', '2', 'Lap trinh huong doi tuong', 'NXB Ha Noi', 'Chua tra sach'),
('12/20/2017', '12/27/2017', 'Duc', 'Nguyen Kong',
'PD02132', 'PT13303', '1', 'IT003', '3', 'Tin hoc co so',
'NXB Ha Noi', 'Da tra sach'),
('12/20/2017', '12/27/2017', 'Hung','Nguyen Van',
'PD02521', 'PT13303', '1', 'IT005', '2', 'Photoshop nang cao', 'NXB Ha Noi', 'Da tra sach')
Câu 6: Viết câu truy vấn:
Viết câu sử dụng dữ liệu để có thể truy vẫn đến các bảng;
use Assignemnt2;
6.1: Liệt kê tất cả thông tin của các đầu sách gồm tên sách, mã sách, giá tiền , tác giảthuộc loại sách có mã “IT”
Trang 12SELECT Tieude, maSach, Giatien, Tacgia
FROM SACH
where SACH.maSach like'IT%';
6.2: Liệt kê các phiếu mượn gồm các thông tin mã phiếu mượn, mã sách , ngày mượn, mã sinh viên có ngày mượn trong tháng 01/2017
SELECT sophieu, maSach, ngaymuon, maSV
FROM PHIEUMUONSACH
WHERE PHIEUMUONSACH.ngaymuon like'%2017-12%'
Trang 136.3: Liệt kê các phiếu mượn chưa trả sách cho thư viên theo thứ tự tăng dần của ngàymượn sách
SELECT
*FROM PHIEUMUONSACH
WHERE PHIEUMUONSACH.ghichu LIKE'Chua tra sach'ORDERBY
PHIEUMUONSACH.ngaymuon asc
Trang 146.4: Liệt kê tổng số đầu sách của mỗi loại sách ( gồm mã loại sách, tên loại sách, tổng số lượng sách mỗi loại)
SELECT maSach, Tieude, Soluong
FROM SACH
6.5: Đếm xem có bao nhiêu lượt sinh viên đã mượn sách
select COUNT(STT)as 'Số sinh viên mượn sách' from PHIEUMUONSACH;
Trang 156.6: Hiển thị tất cả các quyển sách có tiêu đề chứa từ khoá “SQL”
SELECT*FROM SACH
where Tieude like'%SQL%';
Trang 166.7: Hiển thị thông tin mượn sách gồm các thông tin: mã sinh viên, tên sinh viên,
mãphiếu mượn, tiêu đề sách, ngày mượn, ngày trả Sắp xếp thứ tự theo ngày mượn sách
SELECT SINHVIEN.maSV, SINHVIEN.tenSV,
PHIEUMUONSACH.sophieu, SACH.Tieude, PHIEUMUONSACH.ngaymuon FROM PHIEUMUONSACH INNERJOIN
SACH ON PHIEUMUONSACH.maSach = SACH.maSach INNERJOIN
SINHVIEN ON PHIEUMUONSACH.maSV = SINHVIEN.maSV ORDERBY PHIEUMUONSACH.ngaymuon;
6.8: Liệt kê các đầu sách có lượt mượn lớn hơn 20 lần
select tieude, maSach from SACH
WHERE (select count(soluongsachmuon) from PHIEUMUONSACH)>20
Trang 17Vì không có sách nào có lượt mượn lớn 20 nên không thể xuất bảng.
6.9: Viết câu lệnh cập nhật lại giá tiền của các quyển sách có ngày nhập kho trước năm2014 giảm 30%
Không có sách nào được nhập dưới năm 2014
Trang 186.10: Viết câu lệnh cập nhật lại trạng thái đã trả sách cho phiếu mượn của sinh viên
có mãsinh viên PD12301
UPDATE PHIEUMUONSACH
SET ghichu='Da tra sach'
WHERE maSV='PD02142'
Trang 196.11: 1 Lập danh sách các phiếu mượn quá hạn chưa trả gồm các thông tin: mã phiếu mượn, tên sinh viên, email, danh sách các sách đã mượn, ngày mượn
SELECT PHIEUMUONSACH.sophieu, SINHVIEN.tenSV,
SINHVIEN.Email, SACH.Tieude, PHIEUMUONSACH.ngaymuon
FROM PHIEUMUONSACH INNERJOIN
SACH ON PHIEUMUONSACH.maSach = SACH.maSach
Trang 206.13: Viết câu lệnh xoá các phiếu mượn có ngày mượn và ngày trả trước ‘1/1/2010’
DELETE FROM PHIEUMUONSACH
WHERE YEAR(ngaymuon)<2010
AND YEAR(ngaytra)<2010
Không có bảng nào có ngày mượn dưới năm 2010
Trang 21Câu 7: Tổ chức sao lưu dự phòng cho cơ sở dữ liệu