Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
590,5 KB
Nội dung
BÀI 1: THỰC HÀNH CÂU LỆNH CREATE DATABASE, CREATE TABLE, ALTER TABLE, DROP TABLE CHO CSDL QUẢN LÝ THƯ VIỆN GỒM CÁC BẢNG SAU Bảng tblDauSach: 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 varchar mã đầu sách tenSach varchar tên sách 50 namXB int năm xuất ngayNhap DateTime Ngày nhập soLuong int Số lượng maLV varchar Mã lĩnh vực 10 maNXB varchar Mã nhà xuất 10 maTG varchar Mã tác giả 10 Bảng tblDocGia: lưu trữ thông tin độc gia Tên trường Kiểu liệu Mô tả Độ rộng soThe varchar Số thẻ thư viện hoTen varchar Họ tên 50 ngaySinh DateTime ngày sinh tenLop varchar Lớp Gt varchar Giới tính tblLinhVuc: Thông tin lĩnh vực sách Tên trường Kiểu liệu Mô tả Độ rộng maLV varchar Mã lĩnh vực 10 tenLV varchar Tên lĩnh vực 50 tblNXB: Thông tin nhà xuất Tên trường Kiểu liệu Mô tả Độ rộng maNXB varchar Mã nhà xuất 10 tenNXB varchar Tên nhà xuất 50 diaChi varchar Địa nhà xuất 50 dienThoai varchar Điện thoại 10 tblPhieuMuon: thông tin phiếu mượn Tên trường Kiểu liệu Mô tả Độ rộng Sophieu varchar Mã phiếu mượn 10 soThe varchar Mã thẻ thư viện 10 maSach varchar Mã sách 10 ngayMuon DateTime Nhày mượn sách ngayTra DateTime Ngày trả sách tblSach: Thông tin sách Tên trường Kiểu liệu Mô tả Độ rộng maSach varchar Mã sách 10 maDS varchar Mã đầu sách 10 tinhTrang varchar Tình trạng sách 10 tblTacGia: Thông tin tác giả Tên trường Kiểu liệu Mô tả Độ rộng maTG varchar mã tác giả 10 tenTG varchar Tên tác giả 25 diaChi varchar Địa tác giả 50 dienThoai varchar Điện thoại tác giả 10 I Nhắc lại lý thuyết a Lệnh CREATE Lệnh dùng để tạo đối tượng DATABASE, TABLE CREATE TABLE - Bảng cấu trúc để cất giữ quan hệ.Có khuôn 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 : primary key, foreign key , unique, not null VD:Tạo bảng nhân viên CREATE TABLE NHAN_VIEN (NV varchar(4) constraint p_NV Primary key, ho_ten Varchar(25), Ng_sinh datetime, chứcvụ varchar(20), đia_chi varchar(30), luong int); VD ta tạo ràng buộc p_NV định nghĩa primary key 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 ràng buộc khóa VD: Tạo bảng có tên NVN (NV,họ_tên) từ bảng NHAN_VIEN SELECT NV,họ_tên 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 trường gia đình kiểu varchar(1) vào R1 ALTER TABLE R1 ADD gia đình varchar(1) VD2: thay đổi trường Địa_chỉ Varvarchar(30) R1 thành Địa_Chỉ(20): ALTER TABLE R1 ALTER COLUMN Địa_Chỉ varvarchar(20) VD3: Xóa cột Địa_chỉ khỏi bảng R1 ALTER TABLE R1 Drop COLUMN Địa_Chỉ VD4: huỷ bỏ ràng buộc trường khoá #NV R1 ALTER TABLE R1 DROP constraint NV_prim c Lệnh DROP - Dùng để xoá bỏ bảng, ta xoá 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 II Bài tập làm mẫu Sử dụng câu lệnh SQL tạo bảng tblNXB CSDL Quản lý thư viện - Ta nhận thấy với bảng tblNXB, trường maNXB khóa bảng, trường tenNXB, diaChi ta yê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: 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ị - 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 Để tạo bảng tblNXB ta sử dụng câu lệnh sau đây: CREATE TABLE tblNXB ( maNXB varchar(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 tblNXB 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 tblNXB ( maNXB varchar(10) constraint p_NXB primary key, tenNXB varchar(50) not null, diaChi varchar(50) not null, dienThoai varchar(10) null ) - Để xem cấu trúc bảng TblNXB vừa tạo ra, ta dùng câu lệnh sau: Exec sp_help tblnxb Sử dụng câu lệnh SQL sửa đổi độ rộng trường tenNXB có độ rộng 40 ký tự Alter table tblNXB alter column tenNXB varchar(40) not null Sử dụng câu lệnh SQL xóa bảng tblNXB - Để xóa bảng ta sử dụng câu lệnh drop sau: Drop table tblNXB III Bài tập thực hành Anh/Chị dùng câu lệnh SQL thực yêu cầu sau: Tạo sở liệu Quản lý sách thư viện Tạo bảng CSDL Quản lý sách thư viện Thêm cột idSach vào bảng tblDauSach Thêm bảng nhapSach (gồm trường maPhieuNhap, maDS, ngayNhap, soLuong, đơn giá) vào CSDL Xóa trường ngayNhap, soLuong bảng tblDauSach Xóa cột idSach bảng tblDauSach Chú ý: Sinh viên làm tập thực hành trên, cuối buổi thực hành nộp lại làm cho giáo viên BÀI 2: THỰC HÀNH VỀ RBTV, CẬP NHẬT DỮ LIỆU I Nhắc lại lý thuyết: A RBTV Có loại ràng buộc sau: o NOT NULL o NULL o UNIQUE o DEFAULT o PRIMARY KEY o FOREIGN KEY / REFERENCES o CHECK Cách đặt tên cho ràng buộc: CONSTRAINT B CẬP NHẬT DỮ LIỆU Câu lệnh INSERT INTO dùng để chèn dòng vào bảng Cú pháp: - Chèn ghi vào bảng: INSERT INTO tên_bảng VALUES (giá_trị_1, giá_trị_2, ) Bạn rõ cột/trường cần chèn liệu: INSERT INTO tên_bảng (cột_1, cột_2, ) VALUES (giá_trị_1, giá_trị_2, ) - Chèn nhiều ghi vào bảng từ bảng khác: INSERT INTO SELECT Clause Câu lệnh UPDATE sử dụng để cập nhật/sửa đổi liệu có bảng Cú pháp: UPDATE tên_bảng SET tên_cột = giá_trị_mới WHERE tên_cột = giá_trị Câu lệnh DELETE dùng để xoá tất dòng tất dòng khỏi bảng Cú pháp: Xóa ghi thỏa mãn điều kiện: DELETE FROM tên_bảng WHERE Xoá tất dòng: Đôi ta muốn xoá tất liệu bảng giữ lại bảng với cấu trúc tất thuộc tính bảng, ta dùng câu lệnh: DELETE FROM table_name II Bài tập làm mẫu 1) Đặt tên ràng buộc khóa cột: HoNV, MaNV, luong bảng NHANVIEN CREATE TABLE NHANVIEN ( HONV VARCHAR(10) CONSTRAINT NV_HONV_NN NOT NULL, TENLOT VARCHAR(20) NOT NULL, TENNV VARCHAR(10) NOT NULL, MANV CHAR(9) CONSTRAINT NV_MANV_PK PRIMARY KEY, NGSINH DATETIME, DCHI VARCHAR(50), PHAI CHAR(3), LUONG INT CONSTRAINT NV_LUONG_DF DEFAULT (10000), MA_NQL CHAR(9), PHG INT) Muốn xem thông tin ràng buộc bảng, ta dùng câu lệnh sau: Exec sp_helpconstraint NHANVIEN Ràng buộc toàn vẹn tạo ta tạo cấu trúc bảng sau tạo cấu trúc bảng: Ví dụ: Cấu trúc tạo bảng sau có ràng buộc khóa chính: CREATE TABLE tblNXB ( maNXB varchar(10) primary key, tenNXB varchar(50), diaChi archar(50), dienThoai varchar(10)) với này, hệ thống quy định tên ràng buộc ta viết theo cách khác sau: cách 1: CREATE TABLE tblNXB ( maNXB varchar(10) constraint p_NXB primary key, tenNXB varchar(50), diaChi varchar(50), dienThoai varchar(10)) cách 2: CREATE TABLE tblNXB ( maNXB varchar(10) , tenNXB varchar(50), diaChi archar(50), dienThoai varchar(10), constraint p_NXB primary key(MaNXB) ) với cách này, ta tự đặt tên cho ràng buộc khóa p_NXB - Cách 1, phù hợp với trường hợp ràng buộc khóa có cột cách áp dùng cho trường hợp (số lượng cột tham gia ràng buộc >=1) Câu lệnh thêm ràng buộc: ALTER TABLE ADD CONSTRAINT , CONSTRAINT , … Câu lệnh sử dụng tạo xong cấu trúc bảng (bảng chưa có liệu) Ví dụ 1: Thêm ràng buộc check có tên c_PHAI cột PHAI bảng NHANVIEN: ALTER TABLE NHANVIEN ADD CONSTRAINT c_PHAI CHECK (PHAI IN (‘Nam’, ‘Nu’)) Hoặc: ALTER TABLE NHANVIEN ADD CONSTRAINT c_phai CHECK(PHAI='nam' OR PHAI='nu') Chú ý: Ngôn ngữ SQL không phân biệt chữ hoa, chữ thường Ví dụ 1: - Tạo bảng PHONGBAN: CREATE TABLE PhongBan ( maphong varchar(10) NOT NULL, tenphong varchar(50), diadiem varchar(50)) - Thêm ràng buộc khóa cột maphong: ALTER TABLE PHONGBAN ADD CONSTRAINT P_PHONG primary key (maphong) Lưu ý: Cột tham gia vào ràng buộc khóa phải NOT NULL - Thêm cột maphong Varchar(10) vào bảng NHANVIEN: ALTER TABLE NHANVIEN ADD maphong varchar(10) - Thêm ràng buộc khóa ngoại bảng NHANVIEN ràng buộc tham chiếu đến bảng PHONGBAN thông qua cột Maphong: ALTER TABLE NHANVIEN ADD f_NV FOREIGN key(maphong) REFERENCES PHONGBAN(maPhong) ON DELETE CASCADE ON UPDATE CASCADE - Tùy chọn: ON DELETE CASCADE: Khi xóa liệu bảng bị tham chiếu bảng tham chiếu bị xóa theo ON UPDATE CASCADE: Khi sửa liệu bảng bị tham chiếu bảng tham chiếu bị sửa theo Ví dụ 2: Ràng buộc khóa gồm nhiều thuộc tính: CREATE TABLE Thuctap(masv VARCHAR(10), madt VARCHAR(10) , NTT NVARCHAR(25), kqtt FLOAT CONSTRAINT c_kqtt CHECK(kqtt>0 AND kqtt= Lớn = 2004) and (namXB =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’ Hiển thị thông tin sinh viên chưa tham gia thi môn (chưa có kết thi môn học) BÀI 5: TRUY VẤN LỒNG, HÀM KẾT HỢP VÀ GOM NHÓM I Nhắc lại lý thuyết A 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] [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 B TRUY VẤN LỒNG Cú pháp câu truy vấn lồng Ví dụ : 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 tblDauSach WHERE maDS NOT IN (SELECT maDS FROM tblPhieuNhap '31/12/2007' ); WHERE ngayNhap BETWEEN '1/1/2007' AND Các câu lệnh SELECT lồng nhiều mức Câu truy vấn thường trả tập giá trị Các 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 SOME - Kiểm tra tồn 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, PHONGBAN WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG 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, PHONGBAN WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG 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 C 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 ‘Ten_cot’ FROM table SQL có sẵn nhiều hàm để thực đếm tính toán Cú pháp: 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 D HÀM 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, GROUP BY ta 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 HAVING, ta 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ị II 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 tblDauSach trùng với maDS mượn ngày ‘20/9/2008’ Lời giải: Select * from tblDauSach where maDS IN (select maDS from tblSach where maSach IN (select maSach from tblPhieuMuon 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 Lời giải Select * From tblDauSach Where maNXB not in (select maNXB From tblNXB Where tenNXB = ‘NXB Giao Thông Vận Tải’) 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ìm 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 tblDauSach Where maDS IN ( select maDS from tblPhieuNhap where soLuong = (Select max(soLuong) From TblDausach); Hoặc: Select * from tblDauSach Where maDS IN ( select maDS from tblPhieuNhap where soLuong >=ALL (Select soLuong From TblDausach); Đếm số đầu sách 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 tblDauSach Bài làm Select count(maDS) as [Số lượng đầu sách] From tblDauSach Đế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 tblDauSach thỏa mãn điều kiện có maTG mã tác giả ‘Quách Tuấn Ngọc’ Lời giải Select count(maDS) as [Số lượng đầu sách] From tblDauSach Where maTG in (select maTG from tblTacGia 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 tblDauSach Group by maLV Hiển thị thông tin lĩnh vực có số lượng sách >=100 đầu sách Biết rằng, thông tin xếp theo TenSach 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 - Sắp xếp theo tensach Bài làm Select maLV, count(mads) as [Số Lượng] From tblDauSach Group by maLV Having count(mads)>=100 Order by TenSach Trong câu truy vấn trên, cột chứa hàm tính toán count(mads) bỏ qua đề không yêu cầu thị thông tin Sử dụng truy vấn với mệnh đề HAVING 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ã, tên trung bình điểm lần môn học có trung bình lớn trung bình điểm lần tất môn học SELECT diemthi.mamonhoc,tenmonhoc,AVG(diemlan1) FROM diemthi,monhoc WHERE diemthi.mamonhoc=monhoc.mamonhoc GROUP BY diemthi.mamonhoc,tenmonhoc HAVING AVG(diemlan1)> (SELECT AVG(diemlan1) FROM diemthi) Lưu ý: cột nằm mệnh đề Group by phải có mặt mệnh đề Select (các cột không chứa hàm tính toán) III Bài tập thực hành Bài 1: 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 Bài 2: 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 ‘Lập trình hướng đối tượng với C#’có thư viện 11 Hiển thị số lượt người mượn sách vào năm 2007 12 Hiển thị tất sinh viên có mã số thẻ bắt đầu xâu ‘101’ 13 Hiển thị tổng số tiền sử dụng để nhập sách năm 2007 BÀI : MỘT SỐ DẠNG TRUY VẤN KHÁC I 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: 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) II Bài tập mẫu Bài 1: 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 III Bài tập thực hành Cho CSDL KHÁCH HÀNG 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 Những mặt hàng chưa khách hàng đặt mua? Mã hàng, tên hàng số lượng mặt hàng có côn 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 Loại hàng thực phẩm công ty cung cấp gì? 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? Trong công ty có nhân viên có ngày sinh? Những đơn đặt hàng yêu cầu giao đơn công ty nào? Những nhân viên công ty chưa lập hoá đơn đặt hàng nào? 10 Những nhân viên công ty có lương cao nhất? Kiểm tra thực hành [...]... lệnh truy vấn SQL thực hiện sửa năm xuất bản của đầu sách có mã 1010111 thành 1010110 Hướng dẫn Để thực hiện sửa đổi dữ liệu ta thực hiện các câu lệnh: insert into : Thêm một bộ dữ liệu vào CSDL; update: để thay đổi giá trị của một hoặc nhiều trường của một bảng nào đó; delete from: để thực hiện xóa một hoặc nhiều bộ dữ liệu trong một bảng nào đó - Với mỗi câu lệnh insert into ta chỉ thực hiện thêm được... thị tất cả các tác giả viết sách thuộc về lĩnh vực Công Nghệ Thông Tin 10 Thực hiện các bài tập trong phần 18.3 Chú ý: Sinh viên làm các bài tập thực hành ở trên, cuối buổi thực hành nộp lại bài làm cho giáo viên BÀI 3: TRUY VẤN DỮ LIỆU I Nhắc lại lý thuyết Cú pháp cơ bản của câu lệnh select + Gồm 3 mệnh đề SELECT FROM WHERE - :... bởi giá trị NULL) II Bài tập mẫu Bài 1: Trong cơ sở dữ liệu quản lý vật tư, ta muốn hiển thị tên những nhân viên đã xuất vật tư trong ngày ‘12/08/2008’, Hướng dẫn: Có nhiều cách để thực hiện yêu cầu này, sau đây là một cách dùng truy vấn con ở mệnh đề From, câu lệnh truy vấn sau sẽ thực hiện yêu cầu trên như sau: - Truy vấn con lấy manv_xuat trong bảng phieu_xuat, đặt tên là Temp Thực hiện truy vấn có... 2007, ‘101’, ‘Nxb02’, ‘Tg004’); 2 delete from tblDauSach where maDS like ‘%11’; 3 update tblDauSach Set maDS =’1010110’ Where maDS = ‘1010111’ ; II Bài tập thực hành Bài 1: Anh/Chị hãy dùng các câu lệnh SQL thực hiện các yêu cầu sau (Sử dụng CSDL của bài thực hành số 1): 1 Tạo ràng buộc kiểm tra có tên c_SL trên cột Soluong trong bảng tblDauSach đảm bảo phải >=10 2 Tạo ràng buộc trên cột tenSach trong... NHAN_VIEN với bảng mới 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 III Bài tập thực hành Cho CSDL về KHÁCH HÀNG như sau: Thực hiện cá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 1 Tạo lập các cấu trúc bảng và các ràng buộc cần thiết (dựa vào thực tế) trên các bảng... Vật liệu may 4 Thay đổi mã của tác giả Quách Tuấn Ngọc thành ‘Tg005’ 5 Thay đổi tên tác giả có mã ‘TG007’ thành ‘Đỗ Xuân Lôi’ 6 Thay đổi tên cuốn sách có mã ‘2010111’ thành ‘Kết cấu ô tô’ 7 Xóa tất cả các độc giải có mã bắt đầu bằng chuỗi ‘10103’ 8 Xóa tất cả các đầu sách được nhập vào ngày ‘20/6/2008’ 9 Hiển thị tất cả các tác giả viết sách thuộc về lĩnh vực Công Nghệ Thông Tin 10 Thực hiện các bài. .. diemthi.mamonhoc,tenmonhoc HAVING AVG(diemlan1)> (SELECT AVG(diemlan1) FROM diemthi) Lưu ý: các cột nằm trong mệnh đề Group by phải có mặt trong mệnh đề Select (các cột không chứa hàm tính toán) III Bài tập thực hành Bài 1: Hãy viết các câu truy vấn SQL thực hiện các yêu cầu sau: 1 Hiển thị tất các nhà xuất bản có sách được mượn vào ngày ‘3/9/2008’ 2 Hiển thị tất cả các sinh viên mược các cuốn sách của tác giả ‘Quách Tuấn Ngọc’... trong mệnh đề FROM ở truy vấn cha + Khi thực hiện, câu truy vấn con sẽ được thực hiện trước Ví dụ: SELECT MANV, TENNV FROM NHANVIEN, PHONGBAN WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG Truy vấn lồng tương quan: + Mệnh đề WHERE của truy vấn con tham chiếu ít nhất một thuộc tính của các quan hệ trong mệnh đề FROM ở truy vấn cha + Khi thực hiện, câu truy vấn con sẽ được thực hiện nhiều lần, mỗi lần tương ứng... giá trị NULL sẽ không được xét đến Hàm MIN(column) Hàm MAX trả về giá trị nhỏ nhất trong cột Các giá trị NULL sẽ không được xét đến Lưu ý: Hàm MIN và MAX cũng có thể áp dụng cho các cột có dữ liệu là chuỗi văn bản Dữ liệu trong cột sẽ được so sánh theo thứ tự tăng dần của từ điển Hàm SUM(column) Hàm SUM trả về tổng giá trị của cột Các giá trị NULL sẽ không được xét đến D HÀM GOM NHÓM Cú pháp Các hàm tập... Hướng dẫn Ta thực hiện 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 tblDauSach Group by maLV 4 Hiển thị thông tin các lĩnh vực có số lượng sách >=100 đầu sách Biết rằng, thông tin được sắp xếp theo TenSach Hướng dẫn - Ta thực hiện 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 - Sắp xếp theo tensach Bài làm Select ... idSach bảng tblDauSach Chú ý: Sinh viên làm tập thực hành trên, cuối buổi thực hành nộp lại làm cho giáo viên BÀI 2: THỰC HÀNH VỀ RBTV, CẬP NHẬT DỮ LIỆU I Nhắc lại lý thuyết: A RBTV Có loại ràng... lĩnh vực Công Nghệ Thông Tin 10 Thực tập phần 18.3 Chú ý: Sinh viên làm tập thực hành trên, cuối buổi thực hành nộp lại làm cho giáo viên BÀI 3: TRUY VẤN DỮ LIỆU I Nhắc lại lý thuyết Cú pháp... tblDauSach Set maDS =’1010110’ Where maDS = ‘1010111’ ; II Bài tập thực hành Bài 1: Anh/Chị dùng câu lệnh SQL thực yêu cầu sau (Sử dụng CSDL thực hành số 1): Tạo ràng buộc kiểm tra có tên c_SL cột Soluong