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

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

7 264 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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Truy vấn chọn select query Khi có nhu cầu thể hiện các dòng dữ liệu của một quan hệ hay của nhiều quan hệ dưới dạng một quan hệ có số cột và số dòng theo ý muốn như bảng điểm của sinh v

Trang 1

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

by nguyenduc on 1/1/2010, 18:14

SQL là ngôn ngữ truy vấn dựa trên đại số quan hệ Câu lệnh của SQL dùng

để rút trích dữ liệu của một một hay nhiều quan hệ Kết quả của một câu

lệnh SQL (truy vấn) là một quan hệ Để đơn giản trong cách trình bày,

ta xem quan hệ mà câu truy vấn sử dụng để tạo ra quan hệ khác gọi là

quan hệ nguồn, quan hệ kết quả của truy vấn là quan hệ đích

I Truy vấn định nghĩa dữ 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 trên cho ta thấy hai cách tạo khóa: khóa chỉ gồm một

thuộc tính và khóa có nhiều thuộc tính

Thêm cột DTHOAI có kiểu dữ 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 dữ liệu của một cột:

+ Alter Table rSV Alter Column DTHOAI double

Xóa cột của mộ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ể hiện các dòng dữ liệu của một quan hệ hay của nhiều quan hệ dưới dạng một quan hệ có số cột và số dòng theo ý muốn như bảng điểm của sinh viên, danh sách

sinh viên thì 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]

Trang 2

[Where dieuKien]

[Order By field1[Asc|Desc][,field2[Asc|Desc]][, ]]];

Distinct: loại bỏ các bộ trùng trong quan hệ đích

Top n[%]: Chọn n hay n% mẫu tin đầu tiên

table: Tên table hay query chứa dữ liệu

field: Tên field

hay một biểu thức

Alias: Trường hợp field là một biểu thức thì là một tên mới của biểu thức

Inner Join: mỗi mẫu tin của table1 nối với bất kỳ mẫu tin nào của table2 có dữ liệu của field1 thỏa mãn điều kiện so sánh với dữ liệu của field2 tạo thành mẫu tin của query

điều kiện: Biểu thức mà dữ liệu mẫu tin phải thỏa mãn

Chú ý:

Khi nêu rõ thuộc tính đó thuộc về quan hệ nào 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 là “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 trong đó học bổng được sắp 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’ >= 8

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 là “NGUYEN”

SELECT *

FROM Sv

WHERE HOTEN Like “NGUYEN*”;

Trang 3

III Truy vấn nhóm dữ liệu (Select query có group by)

Khi có nhu cầu chia các bộ theo từng nhóm rồi tính toán trên từng nhóm này như tính điểm trung bình của tất cả các môn học của từng sinh viên, hay là cần tính số lượng sinh viên của mỗi lớp , hay là cần biết tổng số môn mà một sinh viên đã đăng ký học thì 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à các mẫu tin nguồn phải thỏa mãn (phép chọn)

field GroupBy: tên field mà các mẫu tin có dữ liệu giống nhau trên ấy được xếp vào

cùng nhóm điềuKiệnLọcMẫuTinTổngHợp: điều kiện mà các 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ý ít nhất là 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ữ của mỗi 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 nhau (nested query, sub query)

Là những câu lệnh truy vấn mà trong thành phần WHERE hay HAVING có chứa thêm một câu lệnh Select khác Câu lệnh select khác này gọi là 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 là bất kỳ, ALL là tất cả Các mẫu tin của query chính thỏa mãn toán tử so sánh với bất kỳ/ tất cả mẫu tin nào của subquery

o bieuThuc [NOT] IN (cauLenhSQL) Các mẫu tin của query chính có giá trị bằng với một giá trị trong subquery

o [NOT] EXISTS (cauLenhSQL)

Các mẫu tin của query chính thỏa mãn khi subquery có mẫu tin

Trang 4

Ví du: Lập danh sách sinh viên có học bổng cao nhất

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 nhất

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à vận dụng tốt lệnh truy vấn dữ liệu là một việc làm cực kỳ cần thiết để tạo ra các kết quả cho báo cáo, thống kê số liệu

V Truy vấn cập nhật dữ 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 hiện truy vấn có kết quả như toán tử hợp, ta sử dụng câu lệnh SQL sau: Select Union Select

Ví du: Lệnh sau đây 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) là một mô hình của quy trình phát triển phần mềm , trong

đó quy trình phát triển trông giống như một dòng chảy, với các pha được thực hiện theo trật tự nghiêm ngặt và không có sự 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 và bảo trì Người ta thường dẫn bài báo được Winston W Royce xuất bản vào năm 1970 để giải thích nguồn gốc cho tên gọi "thác nước"; nhưng có điều thú vị là chính Royce đã dùng mô hình phát triển lặp chứ không hề dùng thuật ngữ "mô hình thác nước".

Vào năm 1970 trong bài báo của mình, Royce đã mô tả ở dạng khái niệm cái mà ngày nay được công nhận với tên gọi "mô hình thác nước", đã bàn luận về những nhược điểm của mô hình này Trong đó ông cũng chỉ ra rằng mô hình này có thể sẽ được tu sửa thành mô hình lặp.

Mô hình Royce nguyên gốc có các pha theo đúng thứ tự sau:

1 Xác định yêu cầu

2 Thiết kế

3 Xây dựng (hay "triển khai", "mã hóa", "viết mã")

4 Liên kết

Trang 5

5 Kiểm thử và Chỉnh sửa (hay «kiểm nghiệm»)

6 Cài đặt

7 Bảo trì

Theo mô hình thác nước, người phát triển phải thực hiện từng 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 được hoàn tất, kết quả nhận được sẽ là danh sách các yêu cầu đối với phần mềm Sau khi các yêu cầu đã hoàn toàn được xác định, sẽ chuyển sang pha thiết kế, ở pha này người ta sẽ tạo ra các tài liệu dành cho lập trình viên , trong đó mô tả chi tiết các phương pháp và kế hoạch thực hiện các yêu cầu đã được làm rõ ở pha trước Sau khi pha thiết kế hoàn tất, lập trình viên sẽ triển khai thực hiện (mã hóa, viết mã) đồ án họ nhận được Giai đoạn tiếp theo là liên kết các thành phần riêng lẻ đã được những đội lập trình viên khác nhau thực hiện thành một sản phẩm hoàn chỉnh Sau khi pha triển khai và pha liên kết hoàn tất, sẽ diễn ra pha kiểm thử và chỉnh sửa sản phẩm; ở giai đoạn này những khiếm khuyết ở các giai đoạn trước đó sẽ bị loại bỏ Sau đó, sản phẩm phần mềm sẽ được đưa vào sử dụng; phần bảo trì phần mềm cũng sẽ được bảo đảm bằng cách bổ sung chức năng mới và loại trừ các 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 này sang pha khác sẽ diễn ra chỉ sau khi các pha trước đó đã kết thúc hoàn toàn thành công, và không thể quay lui về pha trước đó hay nhảy vượt pha.

[Tôi đã tổng hợp kinh nghiệm và tìm tư liệu trên mạng]

Trang 6

Phân tích yêu cầu: là quá trình xác định những đòi hỏi gì từ hệ thống, các yêu cầu chức năng và phi chức năng Là giai đoạn sự kết hợp tham gia tích cực của khách hàng Kết thúc là một hồ sơ đặc tả về hệ thống…

Mô hình này xem quá trình xây dựng một sản phẩm phần mềm gồm nhiều giai đoạn tách biệt sau khi hoàn thành một giai đoạn thi chuyển đến giai tiếp theo

Có hai hoạt động phổ biến đó là sau mỗi giai đoạn là sự kiểm tra phê chuẩn và quản lý các thông số ban đầu từ yêu cầu của khách hàng Sau mỗi giai đoạn như vậy thì hai hoạt động đó là mục tiêu của sản phầm

Mô hình này giống hệt như là thiết kế một căn 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 hiếm khi được hình dung một cách chi tiết và đúng theo yêu cầu công việc Chỉ khi đưa vào môi trường thực các vấn đề mới bắt đầu phát sinh và việc thay đổi yêu cầu diễn ra thường xuyên

người sử dụng thường họ nghĩ phần mềm là mềm mại do đó có thể thay thế một cách dễ dàng.Nhưng thực tế không là như vậy nó khó khăn hơn rất nhiều Khi yêu cầu công việc thay đổi thì việc thay đổi thành phần trong phần mềm cũng là điều tất yếu với thế kỷ 21 thì nó là nhanh hơn Việc áp dụng mô hình thác nứơc là không thể nào theo kịp được vì vòng quy trình của nó quá dài Nó giống như có thay đổi căn nhà bạn cần đập bỏ nó đi và xây lại mới hết tất cả Nhìn vào hình trên ta có thể thấy được những cái tốn kém của nó là như thế nào

Nhược điểm của mô hình

-Luôn luôn nghĩ sẽ là hoàn hảo ngay từ đầu

-Hệ thống phải kết thúc ở từng giai đoạn (có khi dài) do đó nó khó có thể thực hiện đầy

đủ các yêu cầu của khách hàng

-Mối quan hệ giữa các giai đoạn không thể được thể hiện

-Thiết kế phải rõ ràng khi dự án bắt đầu

-Không thấy đuợc sự tiến hoá của sản phẩm

-Rủi ro cao, không thể quay lại

-Không thể phát triển sau khi phát hành sản phẩm

-Khó đáp ứng đựơc các yêu cầu của khách hàng Sản phẩm đựơc hình thành ở giai đoạn cuối của sản phẩm

-Đa số những phần mềm ẩn chứa những nhược điểm kô ít thì nhiều

-Người sử dụng không có cơ hội tham gia vào dự án trong suốt quá trình thực hiện dự án Đặc biệt là dự án lớn Họ chỉ thấy vào thời điểm cuối

Ưu điểm

-Các đòi hỏi dài của hệ thống được nhận biết dài, phân tích trứơc khi hệ thống bắt đầu

-Thay đổi yêu cầu được giảm tới độ tối thiểu khi dự án bắt đầu

-Chuỗi các hoạt động được thực hiện theo quy trình rõ ràng

Trang 7

Mô hình E-R được đề xuất bởi P Chen (1976) Đây là một mô hình mức khái niệm dựa vào việc nhận thức thế giới thực thông qua tập các đối tượng được gọi là các thực thể và các mối quan hệ giữa các đối tượng này.

Biểu diễn dưới dạng sơ đồ ER

Thực thể (entity) là một vật thể tồn tại và phân biệt được với các vật thể khác

Một nhóm bao gồm các thực thể “tương tự” nhau tạo thành một tập thực thể

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

TỪ KHÓA LIÊN QUAN

w