1. Trang chủ
  2. » Công Nghệ Thông Tin

Lý thuyết về câu lệnh SQL

7 262 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 26,99 KB

Nội dung

Lý thuyết câu lệnh SQL by nguyenduc on 1/1/2010, 18:14 SQL ngôn ngữ truy vấn dựa đại số quan hệ Câu lệnh SQL dùng để rút trích liệu một hay nhiều quan hệ Kết câu lệnh SQL (truy vấn) quan hệ Để đơn giản cách trình bày, ta xem quan hệ mà câu truy vấn sử dụng để tạo quan hệ khác gọi quan hệ nguồn, quan hệ kết truy vấn quan hệ đích I Truy vấn định nghĩa liệu (data definition query) Tạo lược đồ quan hệ rSV: + Create Table rSV (MASV Text (10) CONSTRAINT khoaChinh PRIMARY KEY,HOTEN Text (30), NU YesNo, NGAYSINH Date, MALOP Text (10), TINH Text (50), HOCBONG Double ) Tạo lược đồ quan hệ rKQ: + Create Table rKQ (MASV text (10),MAMH Text (10), DIEMTHI Double,CONSTRAINT khoaChinh PRIMARY KEY (MASV,MAMH) ) Chú ý: Hai cách tạo cho ta thấy hai cách tạo khóa: khóa gồm thuộc tính khóa có nhiều thuộc tính Thêm cột DTHOAI có kiểu liệu text 20 ký tự vào lược đồ quan hệ rSV: + Alter Table rSV Add Column DTHOAI Text (20) Sửa kiểu kiểu liệu cột: + Alter Table rSV Alter Column DTHOAI double Xóa cột lược đồ có: + Alter Table rSv Drop Column DTHOAI Xóa ràng buộc khóa chính: + Alter Table rSv Drop Constraint khoaChinh Thêm ràng buộc khóa chính: + Alter Table rSv Add Constraint khoaChinh Primary Key (MASV) Thêm ràng buộc miền giá trị: + ALTER TABLE doc_exd WITH NOCHECK ADD CONSTRAINT exd_check CHECK (column_a > 1) II Truy vấn chọn (select query) Khi có nhu cầu thể dòng liệu quan hệ hay nhiều quan hệ dạng quan hệ có số cột số dòng theo ý muốn bảng điểm sinh viên, danh sách sinh viên ta sử dụng truy vấn chọn Để truy vấn chọn ta sử dụng câu lệnh SQL sau: Select [Distinct|Top n[%]] field1 [As alias1][,field2 [As alias2][, ]] From table1 [Inner Join table2 On table1.field1 table2.field2] [Where dieuKien] [Order By field1[Asc|Desc][,field2[Asc|Desc]][, ]]]; Distinct: loại bỏ trùng quan hệ đích Top n[%]: Chọn n hay n% mẫu tin table: Tên table hay query chứa liệu field: Tên field hay biểu thức Alias: Trường hợp field biểu thức tên biểu thức Inner Join: mẫu tin table1 nối với mẫu tin table2 có liệu field1 thỏa mãn điều kiện so sánh với liệu field2 tạo thành mẫu tin query điều kiện: Biểu thức mà liệu mẫu tin phải thỏa mãn Chú ý: Khi nêu rõ thuộc tính thuộc quan hệ ta viết theo cú pháp tên QuanHệ.tênThuộcTính Ví dụ: Lập danh sách sinh viên gồm MASV,HOTEN,HOCBONG SELECT MASV,HOTEN,HOCBONG FROM Sv; Ví dụ: Lập danh sách sinh viên nữ, có học bổng thuộc có mã lớp “CĐTH2B” SELECT MASV,HOTEN,HOCBONG FROM Sv WHERE NU And MALOP = 'CĐTH2B' And HOCBONG > 0; Ví dụ: Lập danh sách sinh viên gồm MASV,HOTEN,HOCBONG học bổng giảm dần SELECT MASV,HOTEN,HOCBONG FROM Sv ORDER BY HOCBONG DESC; Ví du: Lập danh sách sinh viên gồm MASV,HOTEN,TENLOP SELECT MASV,HOTEN,TENLOP FROM Sv Inner Join Lop On Sv.MALOP=Kh.LOP; Ví dụ: Lập danh sách sinh viên có MASV,HOTEN,NU,NGAYSINH,DIEMTHI với điểm thi môn ‘CSDL’ >= SELECT Kq.MASV,HOTEN,NU,NGAYSINH,DIEMTHI FROM Kq Inner Sv On Kq.MASV = Sv.MaSV WHERE MAMH = 'CSDL' AND DIEMTHI >= 8; Ví dụ: Lập danh sách sinh viên có ho “NGUYEN” SELECT * FROM Sv WHERE HOTEN Like “NGUYEN*”; III Truy vấn nhóm liệu (Select query có group by) Khi có nhu cầu chia theo nhóm tính toán nhóm tính điểm trung bình tất môn học sinh viên, cần tính số lượng sinh viên lớp , cần biết tổng số môn mà sinh viên đăng ký học ta sử dụng truy vấn theo nhóm Để truy vấn cộng nhóm ta sử dụng câu lệnh SQL sau: Select [Distinct|Top n[%]] field1 [As alias1][,field2 [As alias2][, ]] From table1 [Inner Join table2 On table1.field1 table2.field2] [Where dieuKienLocMauTinNguon] [Group By fieldGroupBy[,fieldGroupBy[, ]] [Having dieuKienLocMauTinTongHop] [Order By field1[Asc|Desc][,field2[Asc|Desc]][, ]]]; điềuKiện LọcMẫuTinNguồn: điều kiện mà mẫu tin nguồn phải thỏa mãn (phép chọn) field GroupBy: tên field mà mẫu tin có liệu giống xếp vào nhóm điềuKiệnLọcMẫuTinTổngHợp: điều kiện mà mẫu tin tổng hợp phải thỏa mãn (phép chọn) Ví du: Lập danh sách sinh viên có đăng ký ba môn học SELECT Kq.MASV,HOTEN,NU,NGAYSINH,COUNT(MAMH) As SLMH FROM Sv Inner Join Kq On Sv.MASV = Kq.MASV GROUP BY Kq.MASV,HOTEN,NU,NGAYSINH HAVING COUNT(MAMH)>=3; Ví du: Đếm số lượng sinh viên nữ khoa SELECT Kh.MAKHOA,TENKHOA,COUNT(Kh.MAKHOA) AS SOLUONG FROM (Sv Inner Join Lop On Sv.MALOP = LOP.MALOP) INNER JOIN Kh On Lop.MAKHOA = Kh.MAKHOA WHERE NU GROUP BY Kh.MAKHOA,TENKHOA; IV Truy vấn lồng (nested query, sub query) Là câu lệnh truy vấn mà thành phần WHERE hay HAVING có chứa thêm câu lệnh Select khác Câu lệnh select khác gọi subquery Ta lồng câu Select vào phần Where hay Having theo cú pháp sau: o bieuthuc toanTuSoSanh [ANY | ALL | SOME] (cauLenhSQL) ANY, SOME bất kỳ, ALL tất Các mẫu tin query thỏa mãn toán tử so sánh với bất kỳ/ tất mẫu tin subquery o bieuThuc [NOT] IN (cauLenhSQL) Các mẫu tin query có giá trị với giá trị subquery o [NOT] EXISTS (cauLenhSQL) Các mẫu tin query thỏa mãn subquery có mẫu tin Ví du: Lập danh sách sinh viên có học bổng cao SELECT * FROM Sv WHERE HOCBONG>=ALL(SELECT HOCBONG FROM SV); Ví du: Lập danh sách sinh viên có điểm thi môn CSDL cao SELECT SV.MASV,HOTEN,NU,NGAYSINH,DIEMTHI FROM sv Inner Join kq On Sv.MASV = Kq.MASV WHERE MAMH='CSDL' AND DIEMTHI >= ALL (SELECT DIEMTHI FROM KQ WHERE MAMH='CSDL'); Hiểu vận dụng tốt lệnh truy vấn liệu việc làm cần thiết để tạo kết cho báo cáo, thống kê số liệu V Truy vấn cập nhật liệu (action query, data modification query) Cú pháp: Update table Set field1 = biểuThức1, field2 = biểuThức2 Where điềuKiện Cú pháp: Delete From table Where điềuKiện vi Truy vấn hợp (union query) Khi có nhu cầu thực truy vấn có kết toán tử hợp, ta sử dụng câu lệnh SQL sau: Select .Union Select Ví du: Lệnh sau gấp đôi danh sách sinh viên SELECT MASV,HOTEN,NGAYSINH UNION SELECT MASV,HOTEN,NGAYSINH Mô hình thác nước (tiếng Anh: waterfall model) mô hình quy trình phát triển phần mềm, quy trình phát triển trông giống dòng chảy, với pha thực theo trật tự nghiêm ngặt quay lui hay nhảy vượt pha là: phân tích yêu cầu, thiết kế, triển khai thực hiện, kiểm thử, liên kết bảo trì Người ta thường dẫn báo Winston W Royce xuất vào năm 1970 để giải thích nguồn gốc cho tên gọi "thác nước"; có điều thú vị Royce dùng mô hình phát triển lặp không dùng thuật ngữ "mô hình thác nước" Vào năm 1970 báo mình, Royce mô tả dạng khái niệm mà ngày công nhận với tên gọi "mô hình thác nước", bàn luận nhược điểm mô hình Trong ông mô hình tu sửa thành mô hình lặp Mô hình Royce nguyên gốc có pha theo thứ tự sau: Xác định yêu cầu Thiết kế Xây dựng (hay "triển khai", "mã hóa", "viết mã") Liên kết Kiểm thử Chỉnh sửa (hay «kiểm nghiệm») Cài đặt Bảo trì Theo mô hình thác nước, người phát triển phải thực giai đoạn theo thứ tự nghiêm ngặt Trước hết, giai đoạn "xác định yêu cầu" phải hoàn tất, kết nhận danh sách yêu cầu phần mềm Sau yêu cầu hoàn toàn xác định, chuyển sang pha thiết kế, pha người ta tạo tài liệu dành cho lập trình viên, mô tả chi tiết phương pháp kế hoạch thực yêu cầu làm rõ pha trước Sau pha thiết kế hoàn tất, lập trình viên triển khai thực (mã hóa, viết mã) đồ án họ nhận Giai đoạn liên kết thành phần riêng lẻ đội lập trình viên khác thực thành sản phẩm hoàn chỉnh Sau pha triển khai pha liên kết hoàn tất, diễn pha kiểm thử chỉnh sửa sản phẩm; giai đoạn khiếm khuyết giai đoạn trước bị loại bỏ Sau đó, sản phẩm phần mềm đưa vào sử dụng; phần bảo trì phần mềm bảo đảm cách bổ sung chức loại trừ lỗi Như vậy, mô hình thác nước ngụ ý rằng, việc chuyển từ pha phát triển sang pha khác diễn sau pha trước kết thúc hoàn toàn thành công, quay lui pha trước hay nhảy vượt pha [Tôi tổng hợp kinh nghiệm tìm tư liệu mạng] Phân tích yêu cầu: trình xác định đòi hỏi từ hệ thống, yêu cầu chức phi chức Là giai đoạn kết hợp tham gia tích cực khách hàng Kết thúc hồ sơ đặc tả hệ thống… Mô hình xem trình xây dựng sản phẩm phần mềm gồm nhiều giai đoạn tách biệt sau hoàn thành giai đoạn thi chuyển đến giai Có hai hoạt động phổ biến sau giai đoạn kiểm tra phê chuẩn quản lý thông số ban đầu từ yêu cầu khách hàng Sau giai đoạn hai hoạt động mục tiêu sản phầm Mô hình giống hệt thiết kế nhà, kiến trúc sư tìm hiểu, thiết kế, đưa cho đội ngu nhân viên xây dựng… Một dự án phần mềm hình dung cách chi tiết theo yêu cầu công việc Chỉ đưa vào môi trường thực vấn đề bắt đầu phát sinh việc thay đổi yêu cầu diễn thường xuyên người sử dụng thường họ nghĩ phần mềm mềm mại thay cách dễ dàng.Nhưng thực tế không khó khăn nhiều Khi yêu cầu công việc thay đổi việc thay đổi thành phần phần mềm điều tất yếu với kỷ 21 nhanh Việc áp dụng mô hình thác nứơc theo kịp vòng quy trình dài Nó giống có thay đổi nhà bạn cần đập bỏ xây lại hết tất Nhìn vào hình ta thấy tốn Nhược điểm mô hình - Luôn nghĩ hoàn hảo từ đầu - Hệ thống phải kết thúc giai đoạn (có dài) khó thực đầy đủ yêu cầu khách hàng - Mối quan hệ giai đoạn thể - Thiết kế phải rõ ràng dự án bắt đầu - Không thấy đuợc tiến hoá sản phẩm - Rủi ro cao, quay lại - Không thể phát triển sau phát hành sản phẩm - Khó đáp ứng đựơc yêu cầu khách hàng Sản phẩm đựơc hình thành giai đoạn cuối sản phẩm - Đa số phần mềm ẩn chứa nhược điểm kô nhiều - Người sử dụng hội tham gia vào dự án suốt trình thực dự án Đặc biệt dự án lớn Họ thấy vào thời điểm cuối Ưu điểm - Các đòi hỏi dài hệ thống nhận biết dài, phân tích trứơc hệ thống bắt đầu - Thay đổi yêu cầu giảm tới độ tối thiểu dự án bắt đầu - Chuỗi hoạt động thực theo quy trình rõ ràng  Mô hình E-R đề xuất P Chen (1976) Đây mô hình mức khái niệm dựa vào việc nhận thức giới thực thông qua tập đối tượng gọi thực thể mối quan hệ đối tượng  Biểu diễn dạng sơ đồ ER  Thực thể (entity) vật thể tồn phân biệt với vật thể khác  Một nhóm bao gồm thực thể “tương tự” tạo thành tập thực thể ... lồng (nested query, sub query) Là câu lệnh truy vấn mà thành phần WHERE hay HAVING có chứa thêm câu lệnh Select khác Câu lệnh select khác gọi subquery Ta lồng câu Select vào phần Where hay Having... (union query) Khi có nhu cầu thực truy vấn có kết toán tử hợp, ta sử dụng câu lệnh SQL sau: Select .Union Select Ví du: Lệnh sau gấp đôi danh sách sinh viên SELECT MASV,HOTEN,NGAYSINH UNION SELECT... môn mà sinh viên đăng ký học ta sử dụng truy vấn theo nhóm Để truy vấn cộng nhóm ta sử dụng câu lệnh SQL sau: Select [Distinct|Top n[%]] field1 [As alias1][,field2 [As alias2][, ]] From table1

Ngày đăng: 04/12/2015, 02:45

TỪ KHÓA LIÊN QUAN

w