Lý thuyết về câu lệnh SQL
lượt xem 87
download
Tham khảo tài liệu 'lý thuyết về câu lệnh sql', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Lý thuyết về câu lệnh SQL
- 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] ... [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*”; 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 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 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] 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 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ể
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình: thực hành cơ sở dữ liệu - Trần Ngân Bình vs Bùi Đăng Hà Phương
49 p | 612 | 126
-
Bài giảng Cơ sở dữ liệu quan hệ và SQL: Chương 6 - CĐ CNTT Hữu nghị Việt Hàn
59 p | 177 | 19
-
Chương 5: Ngôn ngữ SQL - CSDL ĐH KHTN Tp.HCM
141 p | 131 | 17
-
Bài giảng Cơ sở dữ liệu quan hệ và SQL: Chương 4 - CĐ CNTT Hữu nghị Việt Hàn
27 p | 170 | 17
-
Bài giảng Cơ sở dữ liệu quan hệ và SQL: Chương 3 - CĐ CNTT Hữu nghị Việt Hàn
32 p | 185 | 15
-
Bài giảng Cơ sở dữ liệu quan hệ và SQL: Chương 9 - CĐ CNTT Hữu nghị Việt Hàn
79 p | 178 | 15
-
10 câu lệnh T-SQL Index cần thiết với DBA
7 p | 132 | 14
-
Sự khác biệt giữa Truncate và Delete trong Microsoft SQL Server
5 p | 104 | 7
-
Đề thi tốt nghiệp cao đẳng nghề khoá II (năm 2008 - 2011) nghề Quản trị cơ sở dữ liệu môn thi lý thuyết nghề - Mã đề thi: QTCSDL-LT03
6 p | 77 | 5
-
Bài giảng Cơ sở dữ liệu: Chương 7 - Đỗ Thị Mai Hường
114 p | 27 | 4
-
Đề thi tốt nghiệp cao đẳng nghề khoá II (năm 2008 - 2011) nghề Quản trị cơ sở dữ liệu môn thi lý thuyết nghề - Mã đề thi: QTCSDL-LT02
6 p | 55 | 3
-
Từ khoá DISTINCT
3 p | 59 | 3
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