Bài tập về SQL
lượt xem 176
download
NHẬP MÔN CSDL QUAN HỆ Soạn bởi bộ môn Công nghệ phần mềm 4. BµI TËP VÒ sql MỤC TIÊU CỦA BÀI NÀY GIÚP NGƯỜI HỌC Hiểu và phân biệt 3 nhóm lệnh của ngôn ngữ SQL Giải một số bài tập thao
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài tập về SQL
- NHẬP MÔN CSDL QUAN HỆ Soạn bởi bộ môn Công nghệ phần mềm 4. BµI TËP VÒ sql MỤC TIÊU CỦA BÀI NÀY GIÚP NGƯỜI HỌC Hiểu và phân biệt 3 nhóm lệnh của ngôn ngữ SQL Giải một số bài tập thao tác trên quan hệ có sử dụng 3 nhóm l ệnh trên. Vận dụng giải quyết các bài toán tổng hợp. A/ NHẮC LẠI LÝ THUYẾT I. CÁC NHÓM LỆNH CỦA NGÔN NGỮ SQL Phân biệt các nhóm câu lệnh sau: - Các lệnh DDL: CREATE, ALTER, DROP. a. Lệnh CREATE Lệnh này dùng để tạo ra các quan hệ như TABLE,VIEW,INDEX CREATE TABLE -Bảng là một cấu trúc c bn để cất giữ trong hệ thống quan hệ.Có khuôn d ạng hai chi ều g ồm có các cột và hàng.Nó là yếu tố cơ bản cho các thao tác khác nhau.Có th ể nói vi ệc t ạo b ảng là bước đầu tiên quan trọng nhất để thiết lập CSDL. -Cú pháp của lệnh này: CREATE TABLE table-name(colom_name type(size)..) Khi tạo ra bảng chúng ta phải chỉ ra kiểu dữ li ệu của cột và m ỗi c ột ch ỉ có th ể có môt ki ểu dữ liệu duy nhất.Khi tạo bảng ta có thể đưa ra các ràng buộc Các ràng buộc của các trường có thể là : primary key,foreign key ,unique,not null ... VD:Tạo bảng nhân viên CREATE TABLE NHAN_VIEN (#NV varchar(4) constraint NV_Primary key,ho_tên Varchar(25),Ng_sinh date,chứcvụ varchar(20),đia_chỉ varchar(30).l ưng number(7)); trong VD trên ta tạo ra một ràng buộc là #NV được định nghĩa là primary key -Ta cũng có thể tạo ra bảng mới với cấu trúc và dữ liệu từ 1 bảng khác. Cú pháp: CREATE TABLE TABLE_name[(colum_name..)]AS SELECT statement; VD:Tạo ra 1 bảng mới có tên là NVN (#NV,họ_tên) t ừ bảng NHAN_VIEN CREATE TABLE NVN AS SELECT #NV,họ_tên FROM NHAN_VIEN; b. Lệnh ALTER -Dùng để hoặc là thêm một hay nhiều trường vào bng hoặc sửa đ ổi một cột hi ện tại.SQL ANSI chuẩn không cho phép huỷ bỏ các cột. -Cú pháp: ALTER TABLE TABLE_name ADD | MODIFY | DROP option (colum Datatype..) +ADD:thêm cột mới +MODIFY:sửa đổi cột +DROP option xoá bỏ các ràng buộc VD1:thêm trường gia đình kiểu char(1) vào R1 ALTER TABLE R1 ADD gia đình char(1); VD2:Thay đổi trường Địa_chỉ Varchar(30) trong R1 thành Địa_Chỉ(20): ALTER TABLE R1 MODIFY Địa_Chỉ varchar(20); Trang 1
- NHẬP MÔN CSDL QUAN HỆ Soạn bởi bộ môn Công nghệ phần mềm VD3:Huỷ bỏ ràng buộc trường khoá #NV trong R1 ALTER TABLE R1 DROP constraint NV_prim c. Lệnh DROP -Dùng để xoá bỏ một quan hệ,khi ta xoá bỏ một bng c sở thì t ất c các VIEW,INDEX đ ược định nghĩa trên bng đó sẽ bị xoá bỏ . Cú phap: DROP TABLE/VIEW/INDEX Name; VD:Xoá bỏ Nhân_viên_id; DROP INDEX Nhân_viên_id; - Các lệnh DML: SELECT, UPDATE, INSERT, DELETE, … a. Lệnh SELECT Mệnh đề SELECT tương ứng với toán tử project(phép chi ếu p) của đ ại s ố quan h ệ. Kh ối lệnh SELECT gồm có ba mệnh đề chính: +SELECT:xác định nội dung của các cột cấn đưa ra. +FROM:danh sách các quan hệ được quét qua +WHERE:ứng với một khẳng định lựa chọn của đại số quan hệ. -Lệnh SELECT thường có dạng: SELECT [distinct]*/A1..An FROM R1, R2 ...,Rm [WHERE p]; Trong đó : Ai là các thuộc tính Rj là các quan hệ (có thể là các TABLEs,VIEWs..)Ta có thể dùng các bí danh cho các Ai,rj. p:là điều kiện ràng buộc. ở đây WHERE có thể có hoặc không. Dùng *để chỉ tất cả các thuộc tính của các quan hệ được chọn -Hỏi đáp này tương đưng với biểu diễn sau trong đại s ố quan hệ: pA1..An[S p(r1..rm)] -Để loại bỏ các bộ giá trị (các hàng) trùng nhau ta thêm t ừ khoá Distinct vào sau SELECT (trước đây SQL thêm từ khoá unique). -Trong khẳng định p:ta có thể dùng các liên t ừ logic and,or,not khi kết h ợp nhi ều đi ều ki ện VD1:Để hiện các thông tin về một nhân viên nào đó gồm(#,Họ_tên,N_sinh,Chức_vụ,địa_chỉ,lưng) SELECT Distinc * FROM R1; Đưa ra (họ_tên,Nsinh,chức_vụ,địa_chỉ,lưng,tên_phòng) với điều ki ện l ưng. 500.000 và đia_chỉ không ở Hà nội SELECT Ho_tên,Nsinhn,chức_vụ,địa_chỉ,lưng,tên_phòng FROM Nhânviên R1,Liênkêt R2,Phong R3 WHERE (R1.lưng. 500.000) and (not R1.địa_chỉ=’Hà nội’) and (R1.#NV=R2.#NV) and (R2.#MP=R3.#MP); -Trong lệnh trên ta đã dùng R1,R2,R3 làm bí danh cho Nhânviên, Liênkêt,Phong Các bí danh đó chỉ có tác dụng trong một câu lệnh b. Nhóm lệnh INSERT,UPDATE,DELETE: Thêm một bộ vào quan hệ Cú phap: INSERT INTO Tên_Bang(Danh sach tên cột) ́ ̉ ́ ́ ́ ̣ ̉ VALUES(Danh sach cac tri) [câuu hoi con] VD:chèn 1 hàng (‘020’,’Nguyễn trọng Nghĩa’,Bảo vệ’,’Hà nội’,’800.000’) vào R1 INSERT INTO R1 VALUES(‘020’,’Nguyễn trọng Nghĩa’,Bảo vệ’,’Hà nội’,800.000); Xóa các bảng ́ Dùng để xoá bỏ 1 hoặc nhiều bộ trong quan hệ DELETE FROM R[WHERE P] Những bộ nào tho mãn đk P thì mới bị huỷ bỏ khỏi quan hệ R VD: DELETE FROM R1 WHERE ng_sinh. ’01-01-1935’; Trang 2
- NHẬP MÔN CSDL QUAN HỆ Soạn bởi bộ môn Công nghệ phần mềm Xoá bỏ tất cả các nhân viên ta dùng lệnh: DELETE FROM R1; Sửa dữ liệu Cú phap: UPDATE [Tên_bang] ́ ̉ SET [Tên_cột=Biểu thức,...] ̉ [FROM Tên_Bang] [WHERE btđk] - Các lệnh DCL: GRANT, REVOKE. GRANT Quyền truy cập ON Tên_bảng/view TO Tên_User [ with GRANT option] - Các quyền truy nhập CSDL gồm: +Read(đọc) + SELECT(chọn) + Write(ghi) + INSERT(bổ sung) + UPDATE(sửa đổi) + DELETE,run. - Tên người sử dụng:Tên của một người ,một nhóm người hoặc danh sách ng ười public:cho tất c mọi người cùng được sử dụng. - Từ khoá :with grant OPTION:đm bo để người sử dụng có thể ti ếp t ục trao quy ền s ử d ụng cho người khác. VD:Cho phép SELECT,INSERT,UPDATE trên bảng R1 cho Nghĩa,Khôi GRANT SELECT,INSERT,UPDATE ON R1 TO Nghĩa,Khôi with grant option; Tức là Nghĩa,Khôi có thể trao quyền trên cho người khác. *Để huỷ bỏ quyền truy nhập REVOKE privileges ON object FROM user VD: Để huỷ bỏ quyền UPDATE từ Nghĩa: REVOKE UPDATE ON R1 FROM Nghĩa; II. CÁC VÍ DỤ Ví dụ 1: Cho quan hệ SINHVIEN (#masv char(10), hoten char(25), ngaysinh datetime, d1 double, d2 double, d3 double). Trong đó, masv là thuộc tính khóa c ủa quan h ệ trên. a) Hãy tạo lập cấu trúc trên. b) Chèn một cột gt boolean vào bảng trên. Lời giải: a) Create Table SINHVIEN (MaSV Char(10), Hoten Char(25) not null, Ngaysinh Date, d1 double, d2 double, d3 double, CONSTRAINT [khoa] Primary Key ([MaSV])) b) Alter table sinhvien add gt yesno; Ví dụ 2: Cho CSDL gồm 2 quan hệ: LOP (#Malop char (10), tenlop char(20)) SINHVIEN (malop char (10), #masv char(10), hoten char(20), ngaysinh datetime, d1 double, d2 double, d3 double) a) Hãy đưa ra các thông tin của các sinh viên bao gồm: tenlop, masv, hoten, dtb c ủa mỗi sinh viên. b) Đưa ra tổng số sinh viên của mỗi lớp. Trang 3
- NHẬP MÔN CSDL QUAN HỆ Soạn bởi bộ môn Công nghệ phần mềm Lời giải: a) SELECT lop.tenlop, sv.masv, ([d1]+[d2]+[d3])/3 AS dtb FROM lop, sv WHERE lop.malop = sv.malop; b) SELECT lop.tenlop, Count(sv.masv) AS CountOfmasv FROM lop, sv WHERE lop.malop = sv.malop GROUP BY lop.tenlop; III. MỘT SỐ LƯU Ý Các câu lệnh này có thể thử nghiệm trên một số hệ quản trị CSDL như SQL, Access,.. Phân biệt điều kiện sau mệnh đề Where và sau mệnh đề Having. B/ BÀI TẬP MẪU Bài số 1: Cho CSDL của hệ thống Quản lý nhân sự: DONVI(MaDV C(3), TenDV C(20), Diachi C(20), MaNPT C(4)) NHANVIEN(MaNV C(4), Hoten C(20), NHVu C(20), Luong N(8), Phucap N(6), MaDV C(3)) Hãy đưa ra danh sách tất cả các đơn vị có trong tổ chức này. Hướng dẫn: Ta thấy các thông tin lấy trong bảng đơn vị và câu lệnh thuộc nhóm khai thác d ữ li ệu. Lời giải: SELECT TenDV, Diachi FROM DONVI Bài số 2: Để quản lý kinh doanh dùng các bảng sau: + HH(hàng hoá): MaHH C(3), TenHH C(20), Qcach C(20), DVT C(5), DGIA N(10) + CH(cửa hàng): MaCH C(3), TenCH C(20), DDiem C(20), PTrach C(4) + KH(khách hàng): MaKH C(4), TenKH C(20), Loai C(2), Diachi C(20) + CT(chứng từ): Sohieu C(12), Ngay D, LoaiCT C(1), MaKH C(4), MaCH C(3), MaHH C(3), SoLuong N(6). a) Xem trong bng CT có những loại hàng hoá nào được xuất. Hướng dẫn: Ta thấy trong bảng CT, mỗi chứng từ có thể bao gồm nhiều MaHH khác nhau, nh ư vậy trong bảng CT sẽ có nhiều MaHH giống nhau, với yêu cầu trên ta ch ỉ c ần đ ưa ra các MaHH khác nhau. Lời giải: SELECT DISTINCT MaHH FROM CT SELECT DISTINCT CT.MaHH, TenHH FROM CT, HH WHERE CT.MaHH = HH.MaHH b) Đưa ra danh sách các nhân viên có lưng >=200000 SELECT * FROM NHANVIEN WHERE Luong >= 200000 Trang 4
- NHẬP MÔN CSDL QUAN HỆ Soạn bởi bộ môn Công nghệ phần mềm c) Cho xem danh sách gồm 3 cột Mã đơn vị, họ tên, nhiệm v ụ t ừ b ảng nhân viên và đ ược sắp xếp theo mã đơn vị, cùng đơn vị theo nhiệm vụ: SELECT MaDV, Hoten, NHVu FROM NHANVIEN ORDER BY MaDV, NHVu Mã đơn vị, họ tên, lương từ bảng NHANVIEN được s ắp xếp theo mã đ ơn vị, cùng đ ơn v ị theo lương gim dần: SELECT MaDV, Hoten, Luong FROM NHANVIEN ORDER BY MaDV, Luong DESC Chú ý: 1. Tên các cột trong sau WHERE không nh ất thi ết phi có sau SELECT, các cột này không nhất thiết phải có trong bảng kết quả. 2. Tên các cột sau ORDER BY… bắt buộc phải có sau SELECT, t ức là các c ột này b ắt bu ộc phải có trong bảng kết quả. *) GROUP BY : Nếu có dùng để nhóm các hàng có cùng giá trị c ủa tên c ột đ ối v ới mỗi nhóm thì cùng thực hiện một thao tác tính toán nào đó. 3. Cho xem mã hàng hoá, tên hàng hoá và t ổng số ti ền bán đ ược c ủa t ừng m ặt hàng: SELECT MaCT, MaHH, TenHH, SUM(Soluong*Dongia) FROm CT, HH WHERE CT.MaHH = HH.MaHH And Loai = “X” GROUP BY CT.MaHH Cho xem m• đn vị, tên đn vị, mức lưng bình quân và s ố nhân viên của t ừng đn v ị: SELECT a.MaDV, TenDV, AGV(Luong), Cont (A.*) FROM NHANVIEN a, DONVI b WHERE a.MaDV = b.MaDV GROUP BY a.MaDV *) Phần HAVING chỉ phục vụ cho GROUP BY Bài số 3: R1=Nhân viên (#NV, Ho_tên, Nsinh, nghề nghiệp, Địa chỉ, l ương) R2=Liên kết (#NV, #MP) R3=Phong (#Mp, Tên_phong, tel) 1. Để hiện các thông tin về một nhân viên nào đó g ồm(#NV , H ọ_tên, N_sinh, Ch ức_v ụ, địa_chỉ, lương) SELECT Distinc * FROM R1; 2. Đưa ra (họ_tên,Nsinh,chức_vụ,địa_chỉ,lưng,tên_phòng) với đIều kiện l ương. 500.000 và đia_chỉ không ở Hà nội. SELECT Ho_tên,Nsinhn,chức_vụ,địa_chỉ,lưng,tên_phòng FROM Nhânviên R1,Liênkêt R2,Phong R3 WHERE (R1.lưng. 500.000) and (not R1.địa_chỉ=’Hà nội’) and (R1.#NV=R2.#NV) and (R2.#MP=R3.#MP); - Trong lệnh trên ta đã dùng R1,R2,R3 làm bí danh cho Nhânviên, Liênkêt, Phong Các bí danh đó chỉ có tác dụng trong một câu lệnh Các ví dụ sau này ta dùng R1,R2,R3 để thay cho các bảng trên cho g ọn Có 4 toán tử hay được dùng với các kiểu dữ liệu.Trong mệnh đề WHERE là: In (not In) Between..and..(not between..) Like(not like) Is null (not is Null). + Toán tử In (not In):Dùng để kiểm tra giá trị trong (không nằm trong) m ột danh sách đ ược chỉ ra. 3. Đưa ra những người có đia_chỉ ở Hà nội và Hà tây. SELECT * FROM R1 WHERE đia_chỉ in (‘Hà nội’,’Hà tây’); Trang 5
- NHẬP MÔN CSDL QUAN HỆ Soạn bởi bộ môn Công nghệ phần mềm +Toán tử Between..and..(not ..) : kiểm tra giá trị nằm gi ữa (không n ằm gi ữa) m ột ph ạm vi được chỉ ra. 4. Đưa ra những người có lưng nằm trong khong (500.000-:-1.000.000). SELECT * FROM R1 WHERE lưng between 500.000 and 1.000.000; + Toán tử like (not like): Dùng để kiểm tra những giá trị gi ống (không gi ống) v ới giá tri sau like, thường sử dụng với xâu ký tự và khi ta không bi ết chính xác giá tr ị c ần tìm ki ếm ho ặc giá trị cần tìm kiếm giống một mẫu nào đó.Trong SQL ng ười ta s ử d ụng ký hi ệu % cho xâu con và ‘_’cho 1 ký tự bất kỳ. 5. Tìm những người có tên mà có ký t ự đầu tiên b ất kỳ,ký t ự ti ềp theo là OA và ti ếp theo là dãy ký tự bất kỳ: SELECT *FROM R1 WHERE hoten=’_OA%’; + Toán tử Is Null (not is Null):kiểm tra cho các giá trị rỗng (không rỗng); C/ BÀI TẬP TỰ GIẢI Bài tập 1: Cho CSDL gồm có ba quan hệ như sau NCC(MaNCC, TenNCC, DCNCC, DT) SP(MaSP, TenSP, Loai) SP_NCC(MaNCC, MaSP, SL) Giải thích một số từ viết tắt: - MaNCC là mã số nhà cung cấp - TenNCC là tên nhà cung cấp có mã số tương ứng - DCNCC là địa chỉ của nhà cung cấp - DT là điện thoại nhà cung cấp MaSP là mã số sản phẩm - TenSP là tên của sản phẩm - Loại là chủng loại của mặt hàng - - SL là số lượng đã cung cấp - Quan hệ NCC ( nhà cung cấp ) dùng để l ưu trữ m ột s ố thông tin v ề các nhà cung cấp - Quan hệ SP ( sản phẩm ) dùng để lưu trữ một s ố thông tin của các m ặt hàng - Quan hệ SPỴNCC dùng để lưu trữ một số thông tin về việc cung ứng s ản ph ẩm c ủa NCC Hãy viết biểu thức đại số quan hệ cho biết a) Cho biết tên của nhà cung cấp có địa chỉ là Hà Nôi b) Cho biết tên của các sản phẩm đã cung ứng bởi nhà cung cấp có mã s ố là HP. c) Cho biết tên của các nhà cung ứng đã cung ứng các sản phẩm với số lượng 20 d) Cho biết tên của các nhà cung cấp đã cung ứng các sản phẩm Bài tập 2: Cho cơ sở dữ liệu gồm 3 quan hệ SV(MSV, HT, NS, QUE) ĐT(MĐT, TĐT, GV, KP) TT(MSV, MĐT, NTT, KQ) Trong đó : : Họ tên sinh viên MSV : Mã sinh viên HT Trang 6
- NHẬP MÔN CSDL QUAN HỆ Soạn bởi bộ môn Công nghệ phần mềm NS : Năm sinh QUE : Quê quán : Mã đề tài Tên đ ề tài MĐT TĐT : GV : Giáo viên KP : Kinh phí : Nơi thực tập Kết quả NTT KQ : Hãy trả lời các câu hỏi sau dưới dạng biểu thức quan hệ : a. Cho biết tên của các giáo viên hướng dẫn sinh viên có quê ở Hà n ội và có k ết qu ả th ực tập khá ( KQ >= 7) b. Cho biết tên của các sinh viên có k ết quả thực t ập khá và th ực t ập t ại quê ho ặc th ực t ập tại Quảng ninh. c. Cho biết tên của các giáo viên hướng dẫn sinh viên có quê ở Hà n ội và th ực t ập đ ề tài có kinh phí lơn hơn 5 triệu d. Cho biết tên của các sinh viên có k ết quả thực t ập khá và th ực t ập đ ề tài có kinh phí l ớn hơn 4 triệu. e. Danh sach sinh viên thực tập tại quê nhà f. Thông tin về các đề tài có sinh viên thực tập g. Cho biết mã của các đề tài không có sinh viên nào tham gia h. Cho biết mã của các đề tài có kinh phí nằm trong khoảng 1.5 đến 2 tri ệu i. Cho biết mã của sinh viên có tuổi nhỏ hơn 20 và k ết q ủa th ực t ập là khá ( KQ>7) Bài số 3 Có CSDL thống kê về mối quan hệ giữa các quán bia (BAR) và nh ững ng ười u ống (DRINKER) bia (BEER) như sau: R(DRINKER, BAR) là quan hệ cho biết quán bia và nh ững khách u ống c ần lui t ới. S(BAR, BEER) LÀ quan hệ cho biết các loại bia thường bán ở các quán. Còn T( DRINKER, BEER) cho biết những loại bia mà một khách hàng ưu thích. Hãy viết các câu vấn tin sau bằng ngôn ngữ SQL: a. In các quán có loại bia Long thích. b. In những khách hàng thường đi uống ít nhất một quán có bia h ọ thích. c. In ra những khách hàng không đến uống ít nhất tại một quán có bia h ọ ưu thích. d. Xoa tất cả loại bia tiger ra khỏi quan hệ S(DRINKER, BEER) e. Chèn thông tin Long thích bia Tiger. f. Chèn tất thông tin Long thích tất cả các loại bia bán ở quán "San hô tím" Bài số 4 Giả sử trong CSDL bia ở trên ta có thêm quan hệ BAN (BAR, BEER, SL) quan hệ cho bi ết s ố lượng từng loại bia đã bán ở các quán. Hãy viết bằng SQL các vấn tin sau: a. Tổng số bia của mỗi loại bia đã bán. b. Số lượng trung bình mỗi loại bia được bán ở các quán. c. Số lượng loại được bán ra nhiều nhất (bán chạy nhất) Bài số 5 Giả sử có quan hệ S(F, S, O) với ý nghĩa là t ập tin S có kích th ước S thu ộc ch ủ nhân O và quan hệ FTD(F, T, D) với ý nghĩa F có ki ểu T và nằm trong th ư m ục D. Hãy dùng ngôn ng ữ SQL để viết các câu vấn tin sau: a. In ra chủ nhân và kiểu tin của tất cả các t ập tin có kích thước t ối thi ểu là 10.000/ b. In ra tất c ả các tập tin được ông Tomax sở hữu/ c. In ra kích thước trung bình của các tập tin có trong th ư m ục BIN. d. In ra tất cả các tập tin có trong thư mục f với tên chứa chuỗi con abc. Trang 7
- NHẬP MÔN CSDL QUAN HỆ Soạn bởi bộ môn Công nghệ phần mềm Bài số 6 Hãy dịch câu vấn tin sau sang đại số quan hệ. SELECT OWNER FROM WHERE FILE IN (SELECT FILE FROM FTD WHERE TYPE = 'TEX' Bài số 7 Hãy dùng ngôn ngữ SQL: a. Tạo bảng danh sách các sinh viên vừa thi vào trường của b ạn, các thu ộc tính ở đây là mã số (số báo danh), tên, năm sinh, quê, điểm thi. b. In danh sách học sinh đậu vào trường (>=20 đi ểm) c. In những sinh viên quê ở Sơn La, Lai Châu, Ninh Bình. Bài số 8 Cho cơ sở dữ liệu như sau : HANGHOA (MA_HANG,TEN_HG) : Mỗi mặt hàng sẽ có một mã hàng, và một tên hàng. DIỄN GIẢI STT FIELD NAME TYPE WIDTH DEC 1 MA_HANG Character 3 Mã hàng 2 TEN_HG Character 20 Tên hàng DAILY(STT_DL, TEN_DL, DCHI_DL) : Mỗi đại lý có một số thứ tự, tên và một địa chỉ. DIỄN GIẢI STT FIELD NAME TYPE WIDTH DEC Số thứ tự đại lý 1 STT_DL Number 3 Tên đại lý 2 TEN_DL Character 20 Ðịa chỉ đại lý 3 DCHI_DL Character 20 MUA (STT_DL, MA_HANG, NGAY_MUA, SOLG_MUA, TRIGIA_MUA) : M ỗi một ngày, đại lý sẽ tổng kết xem đã mua những mặt hàng nào với số lượng và trị giá bao nhiêu. DIỄN GIẢI STT FIELD NAME TYPE WIDTH DEC Số thứ tự đại lý 1 STT_DL Number 3 2 MA_HANG Character 3 Mã hàng 3 NGAY_MUA Date 8 Ngày mua Số lượng mua 4 SOLG_MUA Number 6 Trị giá mua 5 TRIGIA_MUA Number 10 BAN (STT_DL, MA_HANG, NGAY_BAN, SOLG_BAN, TRIGIA_BAN ) : Sau m ỗi ngày, đại lý sẽ tổng kết xem đã bán được những mặt hàng nào với số lượng và trị giá bán là bao nhiêu. DIỄN GIẢI STT FIELD NAME TYPE WIDTH DEC Số thứ tự đại lý 1 STT_DL Number 3 2 MA_HANG Character 3 Mã hàng 3 NGAY_BAN Date 8 Ngày bán Số lượng bán 4 SOLG_BAN Number 6 Trị giá bán 5 TRIGIA_BAN Number 10 Yêu cầu : Viết các câu hỏi sau dưới dạng ngôn ngữ hỏi SQL 1. Tìm những mặt hàng đã bán trong tháng 1/95 tại đại lý s ố 3. Trang 8
- NHẬP MÔN CSDL QUAN HỆ Soạn bởi bộ môn Công nghệ phần mềm 2. Tìm những mặt hàng đã mua trước năm 1995 và có trị giá mua > 500000. 3. Tìm tên và địa chỉ đại lý có mua bia Heineken. 4. Tìm tất cả các mặt hàng mà đại lý số 2 đã bán trong năm 1994. 5. Tìm tên những mặt hàng mà đại lý Vạn Lợi đã mua tr ước 01/01/95 và có s ố l ượng mua lớn hơn 150. 6. Tìm những mặt hàng đã được mua và bán trong cùng một ngày ở cùng một đại lý. 7. Tìm tên và địa chỉ đại lý có tổng giá trị mua trong m ột ngày lớn h ơn 700000. 8. Tìm tổng giá trị mua và tổng giá trị bán của mặt hàng Coca Cola ở đại lý Tân Hiệp Hưng. 9. Tìm đơn giá mua trung bình của bia Sài Gòn trên các đ ại lý. 10. Tìm dơn giá mua trung bình của bia Sài gòn trên các đ ại lý. 11. Tìm tên, địa chỉ của đại lý và những mặt hàng có số lượng mua và s ố l ượng bán bằng nhau trong cùng một ngày. 12. Tìm tổng thu nhập từng ngày trên từng đại lý. 13. Tìm tổng giá trị mua trong tháng 1/95 tại đại lý Vạn Lợi. 14. Tìm số mặt hàng có bán ở từng đại lý. 15. Tìm tên và địa chỉ của đại lý có bán nhiều mặt hàng nhất. Gợi ý : Câu 1 sele dist a.ma_hang, a.ten_hg, b.ngay_ban; from hanghoa a, ban b; where a.ma_hang=b.ma_hang; and left(dtoc(b.ngay_ban),2)='01'; and b.stt_dl=3 Câu 2 sele dist a.ma_hang, a.ten_hg, b.ngay_mua, b.trigia_mua; from hanghoa a, mua b; where a.ma_hang=b.ma_hang; and right(dtoc(b.ngay_mua),2)500000 Trang 9
- NHẬP MÔN CSDL QUAN HỆ Soạn bởi bộ môn Công nghệ phần mềm Câu 3 sele dist a.*; from daily a, mua b, hanghoa c; where a.stt_dl=b.stt_dl; and b.ma_hang=c.ma_hang; and upper(c.ten_hg)='BIA HEINEKEN' Câu 4 sele dist a.ma_hang, a.ten_hg, b.ngay_ban; from hanghoa a, ban b; where a.ma_hang=b.ma_hang; and b.stt_dl=2; and right(dtoc(b.ngay_ban),2)='94'; Câu 5 sele dist a.ma_hang, a.ten_hg, b.ngay_mua, b.solg_mua; from hanghoa a, mua b; where a.ma_hang=b.ma_hang; and right(dtoc(b.ngay_mua),2)150 Câu 6 sele dist a.ma_hang, a.ten_hg, b.ngay_mua as ngay; from hanghoa a, mua b, ban c; where a.ma_hang=b.ma_hang; and a.ma_hang=c.ma_hang; and b.stt_dl=c.stt_dl; and b.ngay_mua=c.ngay_ban Câu 7 sele dist a.*,b.ngay_mua, sum(b.trigia_mua) as tong_mua; from daily a, mua b; where a.stt_dl=b.stt_dl; Trang 10
- NHẬP MÔN CSDL QUAN HỆ Soạn bởi bộ môn Công nghệ phần mềm group by b.stt_dl, b.ngay_mua; having sum(b.trigia_mua)>700000 Câu 8 sele sum(a.trigia_mua) as tong_mua, sum(b.trigia_ban) as tong_ban; from mua a, ban b, daily c, hanghoa d; where a.stt_dl=b.stt_dl; and a.stt_dl=c.stt_dl; and a.ma_hang=b.ma_hang; and a.ma_hang=d.ma_hang; and upper(d.ten_hg)='COCA COLA'; and upper(c.ten_dl)='TAN HIEP HUNG' Câu 9 sele dist a.*; from daily a, ban b, hanghoa c; where a.stt_dl=b.stt_dl; and b.ma_hang=c.ma_hang; and upper(c.ten_hg)='BIA TIGER'; and b.stt_dl in; (sele b.stt_dl; from daily a, ban b, hanghoa c; where a.stt_dl=b.stt_dl; and b.ma_hang=c.ma_hang; and upper(c.ten_hg)='BIA HEINEKEN') Câu 10sele dist b.ten_hg, avg(a.trigia_mua) as tgia_tb; from mua a, hanghoa b; where a.ma_hang=b.ma_hang; Trang 11
- NHẬP MÔN CSDL QUAN HỆ Soạn bởi bộ môn Công nghệ phần mềm and upper(b.ten_hg)='BIA SAIGON'; group by b.ma_hang Câu 11 sele dist a.ten_dl, a.dchi_dl, b.ma_hang, b.ten_hg; from daily a, hanghoa b, mua c, ban d; where a.stt_dl=c.stt_dl; and a.stt_dl=d.stt_dl; and b.ma_hang=c.ma_hang; and b.ma_hang=d.ma_hang; and c.solg_mua=d.solg_ban; and c.ngay_mua=d.ngay_ban Câu 12 sele stt_dl as ma_dl, ngay_mua as ngay_mua, sum(trigia_mua) as chi into dbf tam; from mua; group by stt_dl, ngay_mua sele stt_dl as ma_dl, ngay_ban as ngay_ban, sum(trigia_ban) as thu into dbf tam1; from ban; group by stt_dl, ngay_ban sele a.ma_dl, a.ngay_mua as ngay, (b.thu-a.chi) as thunhap; from tam a, tam1 b; where a.ma_dl=b.ma_dl; and a.ngay_mua=b.ngay_ban Câu 13 sele sum(b.trigia_mua) as tong_mua; from daily a, mua b; Trang 12
- NHẬP MÔN CSDL QUAN HỆ Soạn bởi bộ môn Công nghệ phần mềm where a.stt_dl=b.stt_dl; and upper(a.ten_dl)='VAN LOI'; and b.ngay_mua>={01/01/95}; and b.ngay_mua
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình Hướng dẫn lý thuyết kèm theo bài tập thực hành Oracle 11g - Tập 1
350 p | 865 | 326
-
giáo trình hướng dẫn lý thuyết kèm theo bài tập thực hành oracle 11g (tập 2)
380 p | 652 | 293
-
Bài tập SQL 2005 2
20 p | 649 | 205
-
Bài tập ôn thi SQL
15 p | 369 | 164
-
BÀI TẬP THỰC HÀNH MÔN ORACLE
10 p | 780 | 69
-
Giáo trình SQL và PL SQL part 3
7 p | 197 | 66
-
Bài giảng Cơ sở Dữ liệu SQL - Phần 3: Truy vấn (Query) và tạo View - Giải các truy vấn khó
4 p | 352 | 47
-
Bài giảng Cơ sở dữ liệu: Ngôn ngữ SQL - Trần Ngọc Bảo
28 p | 233 | 23
-
Tập bài giảng SQL Server
320 p | 71 | 19
-
Bài giảng Cơ sở dữ liệu: Chương III - ThS. Lương Thị Ngọc Khánh
80 p | 173 | 18
-
Bài giảng Cơ sở dữ liệu: SQL căn bản - ThS. Trịnh Hoàng Nam
8 p | 183 | 18
-
Bài tập thực hành cơ sở dữ liệu: Phần 1
66 p | 90 | 13
-
Bài tập Cơ sở dữ liệu - Nguyễn Xuân Huy, Lê Hoài Bắc
134 p | 68 | 12
-
Bài thực hành số 1 (Tin học)
54 p | 99 | 7
-
Bài tập thực hành cơ sở dữ liệu: Phần 2
96 p | 53 | 7
-
Tổng quan về ngôn ngữ SQL
9 p | 119 | 6
-
Bài giảng Microsoft SQL server - Bài 11: Các cấu trúc điều khiển
44 p | 53 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn