Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 37 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
37
Dung lượng
819,93 KB
Nội dung
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN KHOA CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP THỰC HÀNH ĐỀ CƯƠNG BÀI GIẢNG HỌC PHẦN: CƠ SỞ DỮ LIỆU ĐạiDỮ học LIỆU Trình độ đào tạo HỌC PHẦN: CƠ:SỞ Hệ đào tạo : Chính quy Chuyên ngành : Kỹ thuật Phần mềm Trình độ đào tạo : Đại học Hệ đào tạo : Chính quy Lưu hành nội MỤC LỤC Bài 16: Thực hành câu lệnh CREATE DATABASE/ TABLE, ALTER TABLE, DROP TABLE 16.1 Nhắc lại lý thuyết 16.2 Bài tập làm mẫu 16.3 Bài tập thực hành 10 Bài 17: Thực hành RBTV 11 17.1 Nhắc lại lý thuyết 11 17.2 Bài tập làm mẫu 11 17.3 Bài tập thực hành 14 Bài 18: Thực hành cập nhật liệu 15 18.1 Nhắc lại lý thuyết 15 18.2 Bài tập mẫu 16 18.3 Bài tập thực hành 18 Bài 19: Thực hành truy vấn 19 19.1 Nhắc lại lý thuyết 19 19.2 Bài tập mẫu 21 19.3 Bài tập thực hành 22 Bài 20: Thực hành truy vấn lồng phép toán tập hợp 23 20.1 Nhắc lại lý thuyết 23 20.2 Bài Tập mẫu 26 20.3 Bài tập thực hành 27 Bài 21: Thực hành hàm kết hợp gom nhóm 28 21.1 Nhắc lại lý thuyết 28 21.2 Bài tập mẫu 30 21.3 Bài tập thực hành 32 Bài 22: Thực hành số dạng truy vấn khác 33 22.1 Nhắc lại lý thuyết 33 22.2 Bài tập mẫu 34 22.3 Bài tập thực hành 34 Bài 23: Kiểm tra thực hành 36 Bài 16: Thực hành câu lệnh CREATE DATABASE, CREATE TABLE, ALTER TABLE, DROP TABLE Mục tiêu: Học xong học, người học có khả năng: - Vận dụng thành thạo câu lệnh CREATE DATABASE, create table để tạo sở liệu tạo bảng - Sử dụng thành thạo câu lệnh alter table, drop table để sửa, xoá bảng CSDL - Áp dụng kiến thức học vào tình thực tế CHO CSDL QLMUONSACH GỒM CÁC BẢNG SAU LinhVuc: Thông tin lĩnh vực sách Tên trường Kiểu liệu Mô tả Độ rộng maLV Char Mã lĩnh vực 10 tenLV Nvarchar Tên lĩnh vực 50 NXB: Thông tin nhà xuất Tên trường Kiểu liệu Mô tả Độ rộng maNXB char Mã nhà xuất 10 tenNXB Nvarchar Tên nhà xuất 50 diaChi Nvarchar Địa nhà xuất 50 dienThoai char Điện thoại 10 TacGia: Thông tin tác giả Tên trường Kiểu liệu Mô tả Độ rộng maTG char mã tác giả 10 tenTG Nvarchar Tên tác giả 25 diaChi Nvarchar Địa tác giả 50 dienThoai char Điện thoại tác giả 10 4.Bảng DauSach: Lưu trữ thông tin đầu sách có thư viện Tên trường Kiểu liệu Mơ tả Độ rộng maDS char mã đầu sách 10 tenSach Nvarchar tên sách 50 namXB int năm xuất ngayNhap DateTime Ngày nhập soLuong int Số lượng maLV char Mã lĩnh vực 10 maNXB char Mã nhà xuất 10 maTG char Mã tác giả 10 Sach: Thông tin sách Tên trường Kiểu liệu Mô tả Độ rộng maSach char Mã sách 10 maDS char Mã đầu sách 10 tinhTrang Nvarchar Tình trạng sách 10 Bảng DocGia: lưu trữ thông tin độc gia Tên trường Kiểu liệu Mô tả Độ rộng Sothe char Số thẻ thư viện 10 hoTen Nvarchar Họ tên 50 ngaySinh DateTime ngày sinh tenLop Nvarchar Lớp 15 Gt Nvarchar Giới tính PhieuMuon: thơng tin phiếu mượn Tên trường Kiểu liệu Mô tả Độ rộng Sophieu char Mã phiếu mượn 10 Sothe char Mã thẻ thư viện 10 maSach char Mã sách 10 ngayMuon DateTime Ngày mượn sách ngayTra DateTime Ngày trả sách Ràng buộc: ngày trả phải sau ngày mượn (Ràng buộc phải khai báo mức bảng) 16.1 Nhắc lại lý thuyết a Lệnh CREATE Lệnh dùng để tạo đối tượng DATABASE, TABLE,… Ví dụ: Tạo CSDL có tên QLTV CREATE DATABASE QLTV Sau tạo song bảng ta ấn F5 để thực thi, sau thực thi thư mục DATA CỦA thư mục cài đặt, có file liệu tạo đĩa: QLTV.MDF file liệu QLTV_LOG.LDF file nhật ký Hoặc: Sales thư mục Thu saledat.mdf, salelog.ldf sau: Tạo CSDL có tên ổ D với tệp liệu nhật ký USE master; GO CREATE DATABASE Sales ON ( NAME = Sales_dat, FILENAME = 'D:\thu\saledat.mdf', thư mục thu ổ D tồn SIZE = 10, MAXSIZE = 50, FILEGROWTH = ) LOG ON ( NAME = Sales_log, FILENAME = 'D:\thu\salelog.ldf', thư mục thu ổ D tồn SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) ; GO CREATE TABLE - Bảng cấu trúc để cất giữ quan hệ.Có khn dạng hai chiều gồm có cột hàng Nó yếu tố cho thao tác khác Có thể nói việc tạo bảng bước quan trọng để thiết lập CSDL -Cú pháp lệnh này: CREATE TABLE table_name (colom_name type (size) ) Khi tạo bảng phải kiểu liệu cột cột có mơt kiểu liệu Khi tạo bảng ta đưa ràng buộc Các ràng buộc trường là: primary key, foreign key, unique, not null VD: Tạo bảng nhân viên CREATE TABLE NHAN_VIEN (maNV char(11) constraint p _NV Primary key, hoten Varchar(25), Ngaysinh datetime, chucvu varchar(20), diachi varchar(30), luong float); VD ta tạo ràng buộc p_NV định nghĩa khóa Ta tạo bảng với cấu trúc liệu từ bảng khác Cú pháp: SELECT into FROM [WHERE ] Với cấu trúc này, bảng tạo có cấu trúc liệu, nhiên bảng khơng có ràng buộc khóa VD: Tạo bảng có tên NVN (maNV, Hoten) từ bảng NHAN_VIEN SELECT maNv, hoten into NVN FROM NHAN_VIEN; b Lệnh ALTER - Dùng để thêm hay nhiều trường vào bảng sửa đổi kiểu liệu cột thêm thay đồi ràng buộc -Cú pháp: ALTER TABLE TABLE_name ADD | ALTER |DROP option (colum Datatype ) + ADD: thêm cột mới, ràng buộc + ALTER: sửa đổi kiểu liệu cột + DROP: xoá bỏ ràng buộc, cột VD1: Thêm cột giadinh kiểu char (1) vào bảng R1 ALTER TABLE R1 ADD giadinh char (1) VD2: Thay đổi kiểu liệu cột diachi nvarchar (30) R1 thành diachi Nvarchar(20): ALTER TABLE R1 ALTER COLUMN diachi Nvarchar (20) VD3: Xóa cột diachi khỏi bảng R1 ALTER TABLE R1 Drop COLUMN diachi VD4: Xóa bỏ ràng buộc trường khoá cột Manv R1 ALTER TABLE R1 DROP constraint NV_prim Trong đó, NV_prim tên ràng buộc khóa bảng R1 Lưu ý: Khi xóa cột bảng có ràng buộc phải xóa ràng buộc trước tạo bảng c Lệnh DROP - Dùng để xoá bỏ bảng, ta xố bỏ bảng tất đối tượng gắn bảng bị loại bỏ Cú pháp: DROP TABLE Name VD: Xoá bỏ bảng Nhan_vien DROP TABLE Nhan_vien 16.2 Bài tập làm mẫu Sử dụng câu lệnh SQL tạo bảng NXB CSDL QLMUONSACH - Ta nhận thấy với bảng NXB, trường maNXB khóa bảng, trường tenNXB, diaChi ta u cầu khơng trống, trường dienThoai trống - Để tạo bảng ta sử dụng câu lệnh create table - Để tạo khóa bảng ta sử dụng ràng buộc primary key Thực thi câu lệnh hệ quản trị CSDL access hệ quản trị CSDL SQL server Cài đặt hệ quản trị 2000 trở lên Sau cửa sổ soạn thảo thực thi câu lệnh SQL môi trường hệ quản trị SQL Server 2008 trở lên: Cửa sổ soạn thảo câu lệnh SQL Click vào 1, mở cửa sổ 2, cửa sổ cho phép soạn thảo câu lệnh ngôn ngữ SQL, database mở thị Lưu ý: Trong trình làm việc với CSDL cần lưu ý tên Database làm việc hành mục hình vẽ (Đây tên CSDL làm việc hành) - Tạo database có tên QLTV CREATE DATABASE QLTV Bơi đen dùng F5 để thực câu lệnh này, hệ thống tạo sở liệu ổ đĩa với đường dẫn sau: Muốn thao tác với CSDL này, dùng câu lệnh: USE QLTV mục đích hiểu thị Database có tên QLTV muốn thao tác mục hình vẽ Hoặc tạo CSDL QLTV thư mục có sẵn giống với CSDL ví dụ có saledat.mdf, salelog.ldf thư mục “D:\thu” Để tạo bảng NXB ta sử dụng câu lệnh sau đây: CREATE TABLE NXB ( maNXB char(10) primary key, tenNXB varchar(50) not null, diaChi varchar(50) not null, dienThoai varchar(10) null ) Sau thực thi câu lệnh này, bảng NXB tạo CSDL có tên QLTV, hệ thống tạo cho bảng ràng buộc khóa với tên hệ thống quy định Muốn đặt tên ràng buộc cho khóa (tên ràng buộc P_NXB), câu lệnh viết lại sau: CREATE TABLE NXB (maNXB char(10) constraint p_NXB primary key, tenNXB varchar(50) not null, diaChi varchar(50) not null, dienThoai varchar(10) null ) Lưu ý: Có thể tạo cấu trúc bảng chưa có khóa sau dùng câu lệnh thêm ràng buộc để tạo khóa Tuy nhiêu, cột ý định tham gia vào khóa khơng phép rỗng chính, khố ngoại SELECT tenSach FROM DauSach ds INNER JOIN LinhVuc lv ON ds.MaLV = lv.MaLV WHERE tenLV= „Công nghệ thông tin‟ ORDER BY tenSach; d) SELECT * FROM DocGia WHERE soThe =‟sv10118734‟; 19.3 Bài tập thực hành Bài 1: Sử dụng câu lệnh SQL thực truy vấn sau: Hiển thị thông tin độc giả mượn sách ngày hôm (ngày tại) Hiển thị tất đầu sách tác giả Quách Tuấn Ngọc Hiển thị tất độc giả mượn sách Hiển thị tất thông tin sách thuộc lĩnh vực „Kinh tế‟, xếp kết theo trường ngayNhap Hiển thị tất tác giả viết sách „C# nâng cao‟ Hiển thị tất tác giả có địa Hà Nội Hiển thị tất độc giả sinh ngày năm 15/10/1988 Hiển thị thông tin độc giả sinh năm 1987 Hiển thị thông tin độc giả giới tính nữ mượn sách có tên “CSDL” 10 Hiển thị thông tin độc giả có giới tính nam sinh vào tháng mượn sách tác giả có mã „tg006‟ Bài 2: Cho CSDL QLDIEM gồm bảng sau: Khoa(MaKhoa, TenKhoa) MonHoc(MaMH, TenMH, SoTc) SinhVien(MaSV, Hoten, Ngaysinh, Quequan, GioiTinh, MaKhoa) KetQua(MaSV, MaMH, DiemL1, DiemL2 ) Hãy tạo CSDL thiêt lập ràng buộc theo mô tả đây: -Một khoa có nhiều sinh viên -Một sinh viên có nhiều kết (một sinh viên học nhiều môn học) -Một mơn học có nhiều kết (mỗi sinh viên có KQ riêng) Sau nhập liệu cho bảng thực yêu cầu sau đây: Liệt kê tất sinh viên, thông tin gồm MaSV, TenSV, GioiTinh Tên sinh viên viết Hoa, xếp tên sinh viên theo thứ tự giảm dần bảng chữ Hiển thị thông tin sinh viên họ „Nguyễn‟ 22 Hiển thị thông tin sinh viên gồm: Masv, Hoten, Tuoi (đây thuộc tính tự đặt) Hiển thị thơng tin sinh viên thuộc khoa „Cơng nghệ thơng tin‟ có điểm thi lần môn >=8 Hiển thị thơng tin mơn học có số tín >=3 thuộc khoa có mã “KT” Hiển thị thơng tin khoa có sinh viên tên: „Lan‟, „Mai‟, „Hoa‟ Bài 20: Thực hành truy vấn lồng phép toán tập hợp Mục tiêu: Học xong học, người học có khả năng: - Rèn luyện kỹ việc nhận biết câu lệnh truy vấn lồng - Biết cách áp dụng câu lệnh truy vấn lồng tình cụ thể - Vận dụng phép toán tập hợp quan hệ (bảng) 20.1 Nhắc lại lý thuyết - Các phép toán tập hợp: Toán tử UNION cho phép ta hợp kết hai hay nhiều truy vấn thành tập kết Cú pháp phép hợp sau: Query_1 [UNION [ALL] Query_2 ] [UNION [ALL] Query_N ] [ORDER BY clause] [COMPUTE clause] Trong Query_1 có dạng sau: SELECT SELECT_list [INTO clause] [FROM clause] [WHERE clause] [GROUP BY clause] 23 [HAVING clause] Toán tử INTERSECT: phép giao SELECT FROM WHERE INTERSECT [ALL] SELECT FROM WHERE Toán tử EXCEPT: phép trừ SELECT FROM WHERE EXCEPT [ALL] SELECT FROM WHERE Truy vấn lồng Cú pháp câu truy vấn lồng Ví dụ: Trong sở liệu quản lý sách thư viện trường ĐHSPKTHY, hiển thị tên đầu sách không nhập năm 2007, thiết kế câu truy vấn sau: SELECT tenDS FROM DauSach WHERE maDS NOT IN (SELECT maDS FROM PhieuNhap WHERE ngayNhap BETWEEN '1/1/2007' AND '31/12/2007'); câu lệnh SELECT lồng nhiều mức truy vấn thường trả tập giá trị câu truy vấn mệnh đề WHERE kết hợp phép nối logic Mệnh đề WHERE câu truy vấn cha - - So sánh tập hợp thường với số toán tử: IN, NOT IN, ALL, ANY 24 SOME - Kiểm tra tồn tại: EXISTS, NOT EXISTS Truy vấn lồng phân cấp + Mệnh đề WHERE truy vấn khơng tham chiếu đến thuộc tính quan hệ mệnh đề FROM truy vấn cha + Khi thực hiện, câu truy vấn thực trước Ví dụ: SELECT MANV, TENNV FROM NHANVIEN INNER JOIN PHONGBAN ON PHG=MAPHG WHERE TENPHG=„Nghien cuu‟ Truy vấn lồng tương quan: + Mệnh đề WHERE truy vấn tham chiếu thuộc tính quan hệ mệnh đề FROM truy vấn cha + Khi thực hiện, câu truy vấn thực nhiều lần, lần tương ứng với truy vấn cha Ví dụ: SELECT MANV, TENNV FROM NHANVIEN INNER JOIN PHONGBAN ON PHG=MAPHG WHERE TENPHG=„Nghien cuu‟ 25 Toán tử In Exists IN - IN - Thuộc tính mệnh đề SELECT truy vấn phải có kiểu liệu với thuộc tính mệnh đề WHERE truy vấn cha EXISTS - Khơng cần có thuộc tính, số hay biểu thức khác đứng trước - Không thiết liệt kê tên thuộc tính mệnh đề SELECT truy vấn Những câu truy vấn có ANY hay IN chuyển thành câu truy vấn có EXISTS 20.2 Bài Tập mẫu Hãy viết câu truy vấn lấy tất đầu sách có người mượn vào ngày ‟20-92008‟ Hướng dẫn: Ta nhận thấy ta cần lấy thông tin sách có maDS bảng DauSach trùng với maDS mượn ngày „20/9/2008‟ Bài làm: SELECT * FROM DauSach 26 WHERE maDS IN (SELECT maDS FROM Sach WHERE maSach IN (SELECT maSach FROM PhieuMuon WHERE ngayMuon = „20/9/2008‟)) Hãy viết câu truy vấn SQL thực lấy tất sách sách NXB giao thông vận tải Hướng dẫn Ta nhận thấy ta cần lấy thông tin sách có maNXB khác với maNXB NXB Giao thông vận tải Bài làm: SELECT * FROM DauSach WHERE maNXB not in (SELECT maNXB FROM NXB WHERE tenNXB = „NXB Giao Thông Vận Tải‟) 20.3 Bài tập thực hành Hãy viết câu truy vấn SQL thực yêu cầu sau: Hiển thị tất nhà xuất có sách mượn vào ngày „3/9/2008‟ Hiển thị tất sinh viên mược sách tác giả „Quách Tuấn Ngọc‟ Hiển thị tất sách NXB Lao Động có tình trạng sách hỏng Hiển thị thông tin đầu sách xuất Hà Nội Hiển thị tất sinh viên mượn sách thuộc lĩnh vực „Tin Học‟ Hiển thị tất sách thuộc lĩnh vực „Ơ tơ‟ lĩnh vực „Tin học‟ Hiển thị tất sinh viên mượn sách vào ngày „25/8/2008‟ Hiển thị thông tin sách nhập vào năm 2008 Hiển thị thông tin sách in nhà xuất Hà Nội 10 Hiển thị thông tin độc giả chưa mượn sách 27 11 Hiển thị sothe mượn sách 12 Hiển thị tất đầu sách có số lượng lớn 100 (Chú ý: Sinh viên phải hoàn thành tất tập cuối nộp cho giáo viên) Bài 21: Thực hành hàm kết hợp gom nhóm Mục tiêu: Học xong học, người học có khả năng: - Vận dụng thành thạo hàm kết hợp gom nhóm vào giải tập phần tập thực hành - Áp dụng kiến thức học vào tình thực tế 21.1 Nhắc lại lý thuyết Hàm kết hợp Hàm count(), min(), max(), sum(), avg() Cú pháp hàm COUNT: SELECT COUNT (tên_cột) FROM tên_bảng Hàm COUNT (*): Hàm COUNT (*) trả số lượng dòng chọn bảng Hàm COUNT (column): Hàm COUNT (column) trả số lượng dịng có giá trị khác NULL cột định Mệnh đề COUNT DISTINCT Lưu ý: Các ví dụ hoạt động với CSDL Oracle MS SQL Server, không hoạt động MS Access (chưa thử nhiệm với hệ CSDL khác!) Từ khoá DISTINCT COUNT dùng chung với để đếm số lượng kết không trùng Cú pháp sau: SELECT COUNT (DISTINCT ) As „Tên cột tự đặt‟ FROM table SQL có sẵn nhiều hàm để thực đếm tính tốn Cú pháp: 28 Cú pháp để gọi hàm câu lệnh SQL sau: SELECT function (tên_cột) As FROM tên_bảng Hàm AVG (column) Hàm AVG trả giá trị trung bình tính theo cột định dịng chọn Các giá trị NULL không xét đến tính giá trị trung bình Hàm MAX (column) Hàm MAX trả giá trị lớn cột Các giá trị NULL không xét đến Hàm MIN (column) Hàm MAX trả giá trị nhỏ cột Các giá trị NULL không xét đến Lưu ý: Hàm MIN MAX áp dụng cho cột có liệu chuỗi văn Dữ liệu cột so sánh theo thứ tự tăng dần từ điển Hàm SUM (column) Hàm SUM trả tổng giá trị cột Các giá trị NULL khơng xét đến Gom nhóm Cú pháp Các hàm tập hợp (ví dụ SUM) thông thường cần thêm chức mệnh đề GROUP BY GROUP BY Mệnh đề GROUP BY thêm vào SQL hàm tập hợp (như SUM) trả tập hợp giá trị cột chúng gọi, khơng có GROUP BY ta khơng thể tính tổng giá trị theo nhóm riêng lẻ cột Cú pháp GROUP BY sau: SELECT tên_cột, SUM (tên_cột) FROM tên_bảng GROUP BY tên_cột Điều kiện nhóm HAVING Mệnh đề HAVING thêm vào SQL mệnh đề WHERE không áp dụng hàm tập hợp (như SUM, AVG, COUNT,…) Nếu khơng có HAVING, ta không 29 thể kiểm tra điều kiện với hàm tập hợp Cú pháp HAVING sau: SELECT tên_cột, SUM (tên_cột) FROM tên_bảng GROUP BY tên_cột HAVING SUM (tên_cột) điều_kiện giá_trị Biểu thức điều kiện trả giá trị true false 21.2 Bài tập mẫu 1.Viết câu truy vấn SQL hiển thị tất mặt hàng có số lượng nhập lớn Hướng dẫn - Sử dụng hàm Max để tính số lượng đầu sách nhập - Chỉ nhận ghi có số lượng nhập = số lượng lớn Bài làm SELECT * FROM DauSach WHERE maDS IN ( SELECT maDS FROM PhieuNhap WHERE soLuong = (SELECT max (soLuong) FROM Dausach); Hoặc: SELECT * FROM DauSach WHERE maDS IN ( SELECT maDS FROM PhieuNhap WHERE soLuong >=ALL (SELECT soLuong FROM Dausach); Đếm số đầu sách có thư viện Hướng dẫn 30 Vì đầu sách có mã đầu sách, để đếm số đầu sách có thư viện ta cần đếm số lượng ghi có bảng DauSach Bài làm SELECT count (maDS) as [Số lượng đầu sách] FROM DauSach Đếm số lượng đầu sách tác giả „Quách Tuấn Ngọc‟ có thư viện Hướng dẫn Vì đầu sách có mã đầu sách, để đếm số đầu sách có thư viện ta cần đếm số lượng ghi có bảng DauSach thỏa mãn điều kiện có maTG mã tác giả „Quách Tuấn Ngọc‟ Bài làm: SELECT count (maDS) as [Số lượng đầu sách] FROM DauSach WHERE maTG in (SELECT maTG FROM TacGia WHERE tenTG = „Quách Tuấn Ngọc‟) Hiển thị số lượng sách lĩnh vực có thư viện Hướng dẫn Ta thực gom nhóm số lượng đầu sách theo lĩnh vực Bài làm SELECT maLV, sum (soLuong) as [Số Lượng] FROM DauSach Group by maLV Hiển thị thơng tin lĩnh vực có số lượng sách đầu sách >=100 Hướng dẫn - Ta thực gom nhóm số lượng đầu sách theo lĩnh vực - Thiết lập điều kiện với số lượng đầu sách Bài làm SELECT maLV, count (mads) as [Số Lượng] FROM DauSach Group by maLV Having count (mads)>=100 Trong câu truy vấn trên, cột chứa hàm tính tốn count (mads) bỏ qua đề khơng u cầu thị thông tin Sử dụng truy vấn với mệnh đề HAVING 31 Một truy vấn sử dụng mệnh đề HAVING truy vấn khác Trong trường hơp này, kết truy vấn sử dụng để tạo nên điều kiện hàm gộp Ví dụ: Câu lệnh cho biết mã lĩnh vực, số lượng đầu sách lĩnh vực có số lượng đầu sách lớn số lượng đầu sách lĩnh vực có mã „CNTT‟ SELECT maLV, count (mads) as [Số Lượng] FROM DauSach Group by maLV Having count (mads)>(SELECT count (mads) FROM DAUSACH WHERE MALV=’CNTT’ ) Lưu ý: Các cột nằm mệnh đề SELECT mà khơng chứa hàm tập hợp phải đặt mệnh đề Group by 21.3 Bài tập thực hành Viết câu truy vấn SQL thực yêu cầu sau: Hiển thị số lượng tác giả có sách thư viện Hiển thị số lượng sách tác giả có thư viện Hiển thị tác giả có nhiều đầu sách thuộc lĩnh vực Công Nghệ Thông Tin Hiển thị số lượng trung bình đầu sách có thư viện Hiển thị đầu sách mượn nhiều năm 2008 Hiển thị Số lượng sách trả ngày „3/9/2008‟ Hiển thị số lượng độc giả có thư viện Hiển thị nhà xuất có số lượng sách xuất lớn số lượng sách nhà xuất Kim Đồng Hiển thị tất đầu sách có số lượng nhập lớn số lượng nhập sách nhà xuất Giao thông Vận tải Gợi ý: Trong SQL ‘Lớn mọi’ biểu diễn >ALL 10 Hiển thị số lượng sách „Cơ sở liệu‟có thư viện 11 Hiển thị số lượt người mượn sách vào năm 2017 12 Hiển thị tất độc giả có mã số thẻ bắt đầu xâu „101‟ 32 13 Hiển thị tổng số tiền sử dụng để nhập sách năm 2018 14 Tính số lượng đầu sách thuộc lĩnh vực 15 Hiển thị thông tin tác giả viết đầu sách 16 Hiển thị thơng tin lĩnh vực có nhiều đầu sách thư viện 17 Hiển thị thông tin sách có nhiều độc giả mượn 18 Hiển thị thơng tin sách có số lần mượn nhiều ngày 12/09/2010 19 Hiển thị mã sách tất độc giả mượn 20 Hiển thị thông tin tác giả viết nhiều sách năm 2016 Chú ý: Sinh viên hoàn thành tất tập thực hành, cuối buổi nộp lại làm cho giáo viên Bài 22: Thực hành số dạng truy vấn khác Mục tiêu: Học xong học, người học có khả năng: - Vận dụng thành thạo câu lệnh thuộc số dạng truy vấn khác (kết nối, truy vấn mệnh đề FROM, ) để giải tập phần tập thực hành 22.1 Nhắc lại lý thuyết Truy vấn mệnh đề FROM: Kết trả câu truy vấn phụ bảng - Bảng trung gian trình truy vấn Khơng có lưu trữ thật Cú pháp: SELECT FROM R1, R2, () AS tên_bảng WHERE Điều kiện kết nối mệnh đề FROM + Kết nối bằng: 33 SELECT FROM R1 [INNER] JOIN R2 ON WHERE INNER JOIN: trả tất hàng từ hai bảng điều kiện so trùng Nếu hàng bảng R1 không so trùng bảng R2, hàng khơng chọn + Kết nối ngoài: SELECT FROM R1 LEFT|RIGHT [OUTER] JOIN R2 ON WHERE LEFT JOIN: Trả tất hàng từ bảng thứ R1, cho dù khơng so trùng bảng thứ hai R2 Nếu hàng bảng R1 không so trùng bảng R2, hàng liệt kê (thay giá trị NULL) RIGHT JOIN: Trả tất hàng từ bảng thứ R2, cho dù khơng so trùng bảng thứ hai R1 Nếu hàng bảng R2 không so trùng bảng R1, hàng liệt kê (thay giá trị NULL) 22.2 Bài tập mẫu Trong sở liệu quản lý vật tư, ta muốn hiển thị tên nhân viên xuất vật tư ngày „12/08/2008‟, Hướng dẫn: Có nhiều cách để thực yêu cầu này, sau cách dùng truy vấn mệnh đề FROM, câu lệnh truy vấn sau thực yêu cầu sau: - Truy vấn lấy manv_xuat bảng phieu_xuat, đặt tên Temp - Thực truy vấn có điều kiện kết nối bảng NHAN_VIEN với bảng Temp Bài làm: SELECT nv.ten_nv FROM nhan_vien As nv, (SELECT manv_xuat FROM phieu_xuat WHERE ngay_xuat = ‘08/12/2008’) As Temp WHERE nv.ma_nv = Temp.manv_xuat 22.3 Bài tập thực hành Trong CSDL QLTV, thực yêu cầu sau: Hiển thị thông tin sách: Masach, tensach, mượn ngày hôm Hiển thị thơng tin sách có độc giả mượn Hiển thị thông tin sách chưa có độc giả mượn 34 Hiển thị thông tin tác giả viết sách thuộc lĩnh vực có mã „cntt‟ Hiển thị thơng tin đầu sách xuất nhà xuất “Kim đồng” Thực tập tổng hợp: Đây thực hành tổng hợp tất câu lệnh thuộc nhóm DDL, DML có ngơn ngữ SQL Cho CSDL BANHANG sau: Thực yêu cầu sau: Dùng tập lệnh DDL cuả ngôn ngữ SQL Bài 1: Dùng tập lệnh DDL Tạo lập cấu trúc bảng ràng buộc cần thiết (dựa vào thực tế) bảng CSDL Xóa ràng buộc vừa thiết lập tạo bảng Tạo lại ràng buộc bảng (đã tồn cấu trúc bảng chưa có ràng buộc) Bài 2: Dùng tập lệnh DML Mã hàng, tên hàng số lượng mặt hàng có cơng ty Họ tên địa năm bắt đầu làm việc nhân viên Địa điện thoại nhà cung cấp có tên giao dịch VINAMILK g Cho biết mã tên mặt hàng có giá lớn 100000 số lượng 50 35 Loại hàng thực phẩm công ty cung cấp Những khách hàng (tên giao dịch) đặt mua mặt hàng Sữa hộp XYZ công ty? Những nhân viên công ty chưa lập hoá đơn đặt hàng nào? Những nhân viên cơng ty có lương cao nhất? 10 Tổng số tiền mà khách hàng phải trả cho đơn đặt hàng bao nhiêu? 11 Xoá đơn đặt hàng trước năm 2000 khỏi sở liệu 12.Tăng số lượng hàng mặt hàng công ty VINAMILK cung cấp lên gấp đôi 13 Tăng lương lên gấp rưỡi cho nhân viên bán số lượng hàng nhiều 100 năm 2003 14 Xoá khỏi bảng LOAIHANG loại hàng khơng có mặt hàng Bài 23: Kiểm tra thực hành 36