1. Trang chủ
  2. » Tất cả

bai-giang-chc6b0c6a1ng-32

46 3 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 46
Dung lượng 2,83 MB

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

Nội dung

 Ví dụ: Hiển thị danh sách gồm MaSV, HoTen, Malop, của những sinh viên lớp ‘CT11’ SELECT MaSV, Ho, Ten, MaLop FROM DMLOP WHERE MaLop=‘CT11’ của những sinh viên lớp ‘CT11’, CT12’ SELECT

Trang 1

Chương 3 NGÔN NGỮ THAO TÁC DỮ LIỆU

KHOA CÔNG NGHỆ THÔNG TIN

Trang 2

[GROUP BY ds cột phân nhóm] [HAVING điều_kiện nhóm]

[ORDER BY cột_sắp_xếp][DESC | ASC]

Hiển thị danh sách cột từ các bảng dữ liệu gồm các dong tin thỏa mãn điều kiện

Trang 3

2 Danh sách cột trong câu lệnh

2 Hiển thị tất cả các cột trong một bảng

SELECT * FROM DMLOP

3 Hiển thị một số cột trong nhiều bảng quan hệ

SELECT MaLop, TenLop, DMLOP.MaKhoa,TenKhoaFROM DMLOP, DMKHOA

WHERE DMLOP.MaKhoa = DMKHOA.MaKhoa

Khi thực hiện lệnh sẽ kiểm tra điều kiện từng dòng, nếu thỏa mãn thì hiển thị kết quả

Tham chiếu đến cột KHÓA của bảng DMLOP

Trang 4

4 Thay đổi tiêu đề cột

SELECT MaLop AS 'Mã lớp', TenLop AS 'Tên lớp’, Khoahoc AS 'Khóa học’.FROM DMLOP

Trang 6

Ví dụ: Hiển thị danh sách gồm Họ Tên, Ngày sinh dạng ‘dd/mm/yyyy’

Sử dụng hàm Convert

CONVERT(kiểu_dữ_liệu, biểu_thức [,kiểu_chuyển_đổi])Hàm có chức năng chuyển đổi giá trị của biểu thức sang kiểu dữ liệu được chỉ định

Tham số <kiểu_chuyển_đổi> là một giá trị số nhằm qui định định dạng dữ liệu hiển

thị và được qui định như sau:

 Kiểu ngày Định dạng dữ liệu hiển thị

Trang 7

Ví dụ: Cho biết tổng số sinh viên hiện có trong bảng SINHVIEN

 Sử dụng Hàm Sum, Count, AVG

Select Count(MaSV) From SINHVIEN

Trang 8

6 Giới hạn số lượng dòng trong kết quả truy vấn

TOP n: truy vấn n mẫu tin đầu tiên

TOP N%: Truy vấn n% mẫu tin đầu tiên

DISTINT: Loại bỏ những giá trị trùng nhau trong danh sách

Ví dụ:

SELECT TOP 5 Ho,Ten,Ngaysinh

FROM SINHVIEN

Ví du: Hiển thị các Khoa có lớp học

SELECT DISTINCT MaKhoa FROM DMLOP

Trang 9

2 Điều kiện trong câu lệnh SELECT

WHERE <Điều kiện>: Điều kiện nằm sau từ khóa WHERE, là một biểu thức

Logic gồm các phép toán sau:

1 Các toán tử kết hợp điều kiện:AND, OR

2 Các toán tử so sánh: >,<,>=,<=,<>,!<,!>, =

3 Kiểm tra giới hạn của dữ liệu: BETWEEN/NOT BETWEEN

4 Toán tử thuộc tập hợp, không thuộc tập hợp:

IN (dãy giá trị | truy vấn Select|…), NOT IN ()

1 Kiểm tra khuôn dạng dữ liệu:

LIKE /NOT LIKE <nhóm ký tự đại diện>

Với ký tự đại diện:

%: đại diện cho một nhóm ký tự

_: đại diện cho một ký tự

[dãy ký tự]: ký tự đơn nằm trong dãy ký tự chỉ định như [0-9], [ABC]

[^dãy ký tự]: ký tự đơn KHÔNG nằm trong dãy ký tự chỉ định

Trang 10

 Ví dụ: Hiển thị danh sách gồm MaSV, HoTen, Malop, của những sinh viên

lớp ‘CT11’

SELECT MaSV, Ho, Ten, MaLop

FROM DMLOP

WHERE MaLop=‘CT11’

của những sinh viên lớp ‘CT11’, CT12’

SELECT MaSV, Ho, Ten, MaLop

Vẫn câu hỏi đó nhưng hiển thị thêm cột TenLop

Ví dụ: Hiển thị danh sách sinh viên có họ là Lê

SELECT Ho,Ten FROM SINHVIEN

WHERE Ho LIKE 'Lê%‘

Trang 11

Bài tập:

Danh sách sinh viên gồm: MaSV, Ho, Ten, GioiTinh (Nam,Nữ), Ngày sinh

(dd/mm/yyyy)

 Cho biết những sinh viên có họ bắt đầu bằng N,L,T

 Hiển thị danh sách sinh viên nữ lớp CT11 và CT12.

 Hiển thị danh sách sinh viên không ở lớp CT11.

 Hiển thị danh sách 5 sinh viên có tuổi cao nhất.

 Hiển thị số lượng sinh viên học lớp CT11.

 Hiển thị danh sách sinh viên nữ có sinh trước năm 1995

 Hiển thị danh sách sinh viên có DiemMH <5

 Vẫn câu hỏi trên nhưng hiển thị thêm cột Khoahoc

Trang 12

3 Thống kê dữ liệu với GROUP BY

 Dùng để tính tổng theo một nhóm như: đếm số sinh viên mỗi lớp, Tính

ĐTB của mỗi sinh viên, …

Một số hàm gộp

1 SUM([ALL | DISTINCT] biểu_thức): Tính tổng các giá trị

2 AVG([ALL | DISTINCT] biểu_thức): Tính trung bình của các giá trị

3 COUNT([ALL | DISTINCT] biểu_thức): Đếm số các giá trị trong biểu

thức

4 COUNT(*): Đếm số các dòng được chọn

5 MAX(biểu_thức): Tính giá trị lớn nhất

6 MIN(biểu_thức): Tính giá trị nhỏ nhất

Trang 13

 Ví dụ: Đếm số lượng sinh viên của mỗi lớp

Sử dụng một bảng SINHVIEN

Vùng phân nhóm là Malop, Vùng tính tổng là MASV

Select MaLop, Count(MaSV) AS Siso

From SINHVIEN

Group by MaLop

Hiển thị thêm vùng TenLop ở bảng DMLOP

SELECT DMLOP.MaLop,TenLop,COUNT(MaSV) AS SisoFROM DMLOP, SINHVIEN

WHERE DMLOP.MaLop=SINHVIEN.MaLop

GROUP BY DMLOP.MaLop,TenLop

Trang 14

 Thêm từ khóa HAVING <Điều kiện nhóm>

Ví dụ: Đưa ra danh sách những lớp có tổng số sinh viên >10

SELECT DMLOP.MaLop,TenLop,COUNT(MaSV) AS SisoFROM DMLOP, SINHVIEN

WHERE DMLOP.MaLop=SINHVIEN.MaLop

GROUP BY DMLOP.MaLop,TenLop

HAVING COUNT(Masv)>10

Trang 15

 Ví dụ: Tính Điểm Trung bình chung học kỳ theo từng sinh viên Xuất dữ liệu ra bảng

mới có tên DIEMTBC

Trang 16

 Ví dụ: Cho biết những sinh viên có ít nhất 2 môn học có DiemMH <5

 Trước hết: Lọc ra những sinh viên có DiemMH các môn <5

Đếm số môn học của từng sinh viên với điều kiện số môn học >=2

Group By MaSV Having Count(MaMonhoc) >=2

Thêm vùng: Ho, Ten, Lop.

Trang 17

 Bài tập

1 Tính Điểm trung bình chung của các học kỳ cho từng sinh viên

2 Cho biết những sinh viên có tổng số đơn vị học trình của các môn thiếu

điểm trên 25 (sinh viên ở lại lớp)

3 Cho biết những sinh viên có Điểm TK các môn học <3 (ở lại lớp)

4 Đếm số sinh viên Nam, Nữ của lớp CT11

5 Đếm số sinh viên Nam, Nữ của từng lớp

6 Cho biết giáo viên dạy ít nhất 2 môn học Bổ sung thêm bảng

GIAOVIEN(MaGV, HoTen, Dienthoai, MonGDay)

7 Cho biết giáo viên dạy ít nhất 2 môn học ‘001’ và ‘002’ (Lọc ra những

giáo viên dạy ít nhất một môn ‘001 và ‘002’, Đếm số số môn dạy của từng giáo viên với đk tổng số môn dạy =2)

8 Cho biết MaSV học tất cả các môn học (Đếm số môn học của từng sinh

viên, có tổng số lượng bằng tổng số lượng của các môn học)

9 Cho biết Tên sinh viên có ít nhất 2 môn học có DiemMH <5

Trang 18

4 CÁC CẤU TRÚC PHỨC TẠP

(Gồm nhiều lệnh Select)

4.1 Sử dụng cấu trúc lồng nhau: (truy vấn con)

Khi cần thực hiện phép kiểm tra giá trị của một biểu thức có thuộc hay không thuộc trong tập hợp các giá trị của truy vấn con hay không, ta có thể sử dụng toán tử IN (NOT IN) như sau:

SELECT …

WHERE <biểu_thức> [NOT] IN (Câu lệnh Select_con)

Select MalopFrom SINHVIENWhere Ten=N’Hoa’)

Trang 19

Ví dụ 2: Cho biết Tên Môn học không có sinh viên thiếu điểm MH

Trang 20

4.2 Lượng từ Exists, All, Any

Trong trường hợp tập hợp các giá trị trong truy vấn con nhiều hơn một thì ta phải thêm lượng từ trước (Truy vấn con đó)

Ví dụ: Cho biết danh sách các môn học có số đơn vị học trình lớn hơn hoặc

bằng số đơn vị học trình của môn học có mã là 001

(SELECT SoDvht FROM DMMONHOC WHERE MaMonhoc='001')

Trang 21

Lượng từ ALL

<Biểu thức cột> <Phép toán> All (Câu lệnh Select)

(Select DiemMH From DIEMTHI)

Ví dụ: Cho biết Tên sinh viên có DiemMH lớn nhất

Select Ho, Ten

Where DiemMH >=ALL

Ví dụ: Cho biết Mã sinh viên có DiemMH lớn nhất

Nghĩa là lớn hơn hoặc bằng tất cả các giá trị điểm của tập DiemMH

Trang 23

Lượng Từ EXISTS

[NOT] EXISTS (truy_vấn_con) Lượng từ EXISTS trả về giá trị True nếu kết quả của truy vấn con có ít nhất một dòng (khác rỗng), ngược lại trở về giá trị False

Tương tự NOT EXISTS

Ví dụ: Cho biết thông tin môn học có sinh viên học

Select * From DMMONHOC

Where Exists (Select * From DIEMTHI

Where DMONHOC.MaMon=DIEMTHI.MaMon)

Ví dụ: Cho biết họ tên của những sinh viên hiện chưa có điểm

thi của bất kỳ một môn học nào?

SELECT Ho, Ten

FROM SINHVIEN

WHERE NOT EXISTS(SELECT Masv FROM DIEMTHI

WHERE DIEMTHI.Masv=SINHVIEN.Masv)

Trang 24

Các dòng giống nhau trong tập kết quả sẽ bị loại bỏ

Các tập hợp tham gia trong phép toán phải khả hợp nghĩa là phải cùng tập các cột

Giữ lại những dòng giống nhau thêm từ khóa ALL

Union All, Except All, Intersect All

Trang 25

5.1 Phép hợp (Union)

Hợp của 2 hay nhiều truy vấn Select là một tập tất cả các bộ giá trị của các truy vấn đó

Vidu: Cho biết mã sinh viên đã học ít nhất một môn có mã là “001”, “002”

Select Masv From DIEMTHI

Where Mamon=‘001’

Union

(Select Masv From DIEMTHI

Where Mamon=‘002’)

Trang 26

5.2 Phép hiệu (Except)

Hiệu của 2 truy vấn A và B là một tập tất cả các bộ giá trị thuộc truy vấn

A nhưng không thuộc truy vấn B

Ví dụ: Cho biết Mã sinh viên chưa học môn nào

Là những sinh viên có trong bảng SINHVIEN mà không ở bảng

Trang 27

5.3 Phép giao (Intersect)

Giao của 2 hay nhiều truy vấn Select là một tập gồm các bộ giá trị thuộc các truy vấn đó

Ví dụ: Cho biết Mã sinh viên học cả hai môn có mã ‘001’ và ‘002’

Select Masv from DIEMTHI Where MAMONHOC='001'

Intersect

(Select Masv from DIEMTHI where MAMONHOC='002')

Trang 28

Bài tập

1 Cho biết Mã môn học mà chưa được học

2 Cho biết Tên môn học mà chưa được học

3 Cho biết Mã giáo viên dạy cả hai môn có mã ‘001’ và ‘002’

4 Cho biết Tên giáo viên dạy cả hai môn có mã ‘001’ và ‘002’

5 Cho biết Mã giáo viên dạy môn học có số đơn vị học trình >=5

6 Cho biết Masv học ít nhất một học do giáo viên mã ‘001’

Trang 29

6 BỔ SUNG, CẬP NHẬT, XÓA DỮ LIỆU

Trang 30

 Ví dụ: Bổ sung một dòng vào bảng DMKHOA với bộ giá trị sau (‘KT’,

Trang 32

 Ví dụ: Thêm cột Xếp loại trong bảng DIEMTBC, Cập nhật dữ liệu cho cột đó theo yêu cầu sau:

Nếu DiemTBC >=8 thì xếp loại Giỏi, ngược lại

Nếu DiemTBC >=7 thì xếp loại Khá, ngược lại

Nếu DiemTBC >=5 thì xếp loại Trung bình

Ngược lại là yếu

Alter Table DIEMTBC

ADD Xeploai nvarchar(10) NULL

Update DIEMTBC

Set Xeploai = Case

When DTBC>=8 then N'Giỏi'

When DTBC>=7 then N'Khá'

When DTBC>=5 then N'Trung bình'

Else N'Yếu'

END

Trang 34

Ví dụ: Xoá khỏi bảng SINHVIEN những sinh viên có nơi sinh tại HuếDELETE FROM sinhvien

WHERE noisinh LIKE ‘%Huế%’

Ví dụ: Xóa khỏi bảng DMLOP những lớp không có sinh viên nào

DELETE FROM DMLOP

WHERE Malop NOT IN

(SELECT DISTINCT Malop FROM sinhvien)

Trang 35

7 CÁC LOẠI PHÉP NỐI

 INNER JOIN: Là phép kết nối gồm những dòng có giá trị so khớp nhau

trên cả hai bảng

 FULL JOIN: Phép kết nối gồm tất cả các dòng của hai bảng.

 RIGHT JION: Phép kết nối gồm các dòng có giá trị so khớp nhau trên cả

hai bảng và các dòng thuộc bảng bên PHẢI của liên kết

 LEFT JION: Phép kết nối gồm các dòng có giá trị so khớp nhau trên cả hai

bảng và các dòng thuộc bảng bên TRÁI của liên kết

Cú pháp lệnh:

SELECT <Danh sách cột>

FROM <Bảng 1> {INNER| FULL| RIGHT| FULL} JOIN

<Bảng 2> ON <Điều kiện kết nối 1>

… (Tham khảo trên cửa sổ View)

Trang 37

II KHUNG NHÌN (WIEW)

 Một khung nhìn (view) có thể được xem như là một bảng “ảo” trong cơ sở

dữ liệu có nội dung được định nghĩa thông qua một truy vấn (câu lệnh

Trang 39

Ví dụ:

1 Hiển thị danh sách sinh viên gồm MaSV, Ho,Ten, Ngaysinh, Gioitinh

TenLop

Trang 40

Ví dụ: Hiển thị danh sách sinh viên gồm MaSV, Ho,Ten, Ngaysinh, Gioitinh

TenLop của sinh viên nữ học lớp ‘CT11’,’CT12’

Trang 41

 Ví dụ: Đếm số lượng sinh viên mỗi lớp

Trang 42

 Ví du: Đếm số sinh viên nữ mỗi lớp

Trang 43

 Ví dụ: Cho biết Lớp nào chưa có sinh viên

Trang 44

Câu hỏi kiểm tra 15 phút:

1.Từ khóa Group by sẽ trả lời cho các dạng câu hỏi nào, cho ví dụ

2.Hiển thị danh sách sinh viên gồm Masv, Họ Tên, giới tính (nam,nữ), Ngày sinh (dd/mm/yyyy), Malop của những sinh viên có tên bắt đầu bằng chữ L,N,H

Trang 45

Tóm tắt chương 3:

Dùng câu trúc truy vấn Select để trả lời các dạng

câu hỏi sau:

1.Từ khóa Where trả lời câu hỏi có điều kiện lọc

2.Câu hỏi lấy dữ liệu từ 2 bảng thì thêm điều kiện kết nối (SINHVIEN.Malop=DMLOP.Malop, DIEMTHI.MaMH=DMMON.MaMH, …) khi đó để tham chiếu đến cột liên kết thì phải thêm đường dẫn tới bảng của nó (SINHVIEN.Malop, DIEMTHI.Malop)

3.Từ khóa Group by sẽ trả lời cho các dạng câu hỏi như: tính tổng theo từng nhóm, điều kiện thỏa mãn ít nhất 2,3, … giá trị hay tất cả (thiếu điểm ít nhất 2 môn học, 3 môn học, …, tất cả môn học) Tuy nhiên ta có thể dùng phép toán tập hợp Intersect (phức tạp)

4.Phép toán tập hợp Except trả lời những dạng câu hỏi có từ “chưa ” (Những lớp CHƯA có sv nào, sinh viên CHƯA học môn nào)

5.Dùng lượng từ Exists để kiểm tra kết quả truy vấn có giá trị trị hay không (thường dùng trong lập trình)

6.Phép toán NOT IN () trong cấu trúc lồng nhau để trả lời các dạng câu hỏi phủ định (KHÔNG thiếu môn học nào, KHÔNG …)

7.Lượng từ ALL thường trả lời cho các câu hỏi dạng lớn NHẤT, nhỏ NHẤT (>= ALL(…) hoặc <=ALL(…))

Chú ý: trong các cấu trúc phức tạp thông thường ta phải quy về tìm MÃ trước (masv, malop, MaMH, …) sau đó sử dụng cấu trúc lồng nhu để tìm các tông tin khác (Tên sv thiếu 2, Tên sv bắt đầu bằng ‘N’, …)

Trang 46

Hãy cho biết các từ khóa, lượng từ, phép toán sử

dụng trong các câu hỏi sau:

1 Đếm số sinh viên nữ lớp CT11

2 Đếm số sinh viên nam, nữ lớp CT11

3 Cho biết những sinh viên có họ không bắt đầu bằng N,L,T

4 Hiển thị danh sách sinh viên không ở lớp CT11.

5 Hiển thị danh sách 5 sinh viên có tuổi cao nhất.

6 Cho biết những lớp có tổng số sv >7

7 Cho biết những sinh viên có ít nhất 2 môn học có DiemMH

<5

8 Cho biết những sinh viên có tổng số đơn vị học trình của

các môn thiếu điểm trên 25 (sinh viên ở lại lớp)

9 Cho biết những sinh viên có Điểm TK các môn học <3 (ở

lại lớp).

10 Cho biết tên sinh viên KHÔNG thiếu môn học nào

11 Cho biết tên sinh viên học TẤT CẢ các môn học

12 Cho biết tên sinh viên học ít nhất hai môn có mã ‘001’ và

‘002’

13 Cho biết tên sinh viên có điểm môn ‘001’ cao nhất.

14 Cho biết Tên môn học mà chưa có sinh viên nào học

Ngày đăng: 22/05/2017, 00:08

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w