Các câu lệnh truy vấn dữ liệu

Một phần của tài liệu Bài giảng hệ quản trị cơ sở dữ liệu ths nguyễn thị thúy loan (Trang 33 - 37)

Truy vấn con: chỉ là một câu lệnh truy vấn lựa chọn (SELECT) được lồng vào các câu lệnh truy vấn khác nhằm thực hiện các truy vấn tính toán phức tạp. Khi sử dụng đến truy vấn con chúng ta cần lưu tâm đến một vài yếu tốsau:

Nguyễn ThịThúy Loan Trang 130 2/12/2011

Các câu lnh truy vn d liu

o Cần mởvà đóng ngoặc đơn cho câu lệnh truy vấn con.

o Chúng ta chỉ được phép tham chiếu đến tên một cột hoặc một biểu thức sẽ trả về giá trị trong truy vấn con.

o Kết quả truy vấn con có thể trả về là một giá trị đơn lẻhoặc một danh sách các giá trị.

o Cấp độ lồng nhau của các truy vấn con bên trong SQL Server là không giới hạn.

Nguyễn ThịThúy Loan Trang 131 2/12/2011

Các câu lnh truy vn d liu

Truy vấn con trảvềmột giá trịđơn:là truy vấn mà kết qủa trả về của nó luôn đảm bảo chỉ là một giá trịđơn.

 Ví dụ: đểbiết được sinh viên nào có ngày sinh gần đây nhất.

SELECT MAX(NGSINH)

FROM SV

Kết quảtrảvề: 1990-07-21 00:00:00.000

Nguyễn ThịThúy Loan Trang 132 2/12/2011

Các câu lnh truy vn d liu

Select * From SV

Where Ngsinh = '07-21-1990'

 Kết hợp 2 câu truy vấn trên

SELECT *

FROM SV

WHERE Ngsinh = (SELECT MAX(Ngsinh)

Nguyễn ThịThúy Loan Trang 133 2/12/2011

Các câu lnh truy vn d liu

Truy vấn con trả về danh sách các giá trị: kết quả trả về của nó là danh sách các giá trị hay còn gọi là một tập hợp các phần tử. Toán tửIN sẽ được sử dụng để so sánh truy vấn con dạng này.

Nguyễn ThịThúy Loan Trang 134 2/12/2011

Các câu lnh truy vn d liu

Ví d 1: để biết nhà cung cấp nào mà công ty

đã đặt hàng trong tháng 01/2009. SELECT MaNCC

FROM DONDH

WHERE Convert(char(7), NgayDH, 21) = “2009-01”  Kết quảtrảvề MaNCC C03, C01 Các câu lnh truy vn d liu  Hoặc: (adsbygoogle = window.adsbygoogle || []).push({});

SELECT TenNCC, DienThoai FROM NHACC

WHERE MaNCC IN(‘C01’, ‘C03’)

Các câu lnh truy vn d liu

 Đâu đảm bảo rằng trong tháng 01/2009 công ty chỉ đặt hàng cho 2 nhà cung cấp C01 và C03. Do đó để luôn luôn có được danh sách họ tên các nhà cung cấp mà công ty đã đặt hàng trong tháng 01-2009 chúng ta thực hiện truy vấn con sau:

Nguyễn ThịThúy Loan Trang 137 2/12/2011

Các câu lnh truy vn d liu

SELECT TenNCC, DienThoai FROM NHACC

WHERE MaNCC IN (SELECT MaNCC

FROM DONDH

WHERE Convert(char(7), NgayDH, 21) = ‘2009-01’ )

Nguyễn ThịThúy Loan Trang 138 2/12/2011

Các câu lnh truy vn d liu

Hoặc dùng EXISTS

SELECT TenNCC, DienThoai FROM NHACC

WHERE EXISTS (SELECT *

FROM DONDH

WHERE Convert(char(7), NgayDH, 21) = ‘2009-01’

AND NHACC.MaNCC = DONDH.MaNCC)

Nguyễn ThịThúy Loan Trang 139 2/12/2011

Các câu lnh truy vn d liu

Ví dụ 2: Để biết danh sách các nhà cung cấp nào mà công ty chưa bao giờ đặt hàng. Chúng ta có thểthực hiện câu truy vấn như sau:

SELECT TenNhaCC, DienThoai

FROM NHACC

WHERE MaNCC NOT IN

(SELECT Distinct MaNCC

FROM DONDH)

Nguyễn ThịThúy Loan Trang 140 2/12/2011

Các câu lnh truy vn d liu

Hoặc

SELECT TenNhaCC, DienThoai (adsbygoogle = window.adsbygoogle || []).push({});

FROM NHACC

WHERE MaNCC <> ALL (SELECT Distinct MaNCC

FROM DONDH)

Lưu ý: IN tương đương =ANY NOT IN tương đương <>ALL

Nguyễn ThịThúy Loan Trang 141 2/12/2011

Lnh INSERT

Cách 1: Thêm trực tiếp một bộ

INSERT INTObảng[<cột 1>, <cột 2>,…, cột n]

VALUES(<giá trị1>, <giá trị2>,…, <giá trịn>)

Ví dụ: Thêm dữliệu vào SV

SV (MaSV, TenSV, NgSinh, Malop)

Nguyễn ThịThúy Loan Trang 142 2/12/2011

Lnh INSERT

Insert into SV values('004', 'Tran Thi Ha', '05- 26-1990', '08CDTH')

Hay

Insert into SV(MaSV, TenSV, NgSinh, Malop) values('004', 'Tran Thi Ha', '05-26-1990', '08CDTH')

Lnh INSERT

Cách 2: Thêm nhiều bộ giá trị lấy từ các bộ

giá trịcủa các bảng của CSDL

INSERT INTO bảng[<cột 1>, <cột 2>,…, <cột n>]

SELECT … FROM …. WHERE

Lnh INSERT

Ví dụ:

LOP_SV( TenLop, SiSo)

INSERT INTO LOP_SV( TenLop, SiSo) SELECT TenLop, count(*)

FROM SV, LOP

WHERE SV.MaLop=LOP.MaLop GROUP BY TenLop

Nguyễn ThịThúy Loan Trang 145 2/12/2011 Lnh UPDATE Cú pháp: UPDATE<tên bảng> SET <cột 1> = <giá trị1>, <cột 2> = <giá trị2>, ………, <cột n> = <giá trịn> [WHERE <điều kiện>]

Nguyễn ThịThúy Loan Trang 146 2/12/2011

Lnh UPDATE (adsbygoogle = window.adsbygoogle || []).push({});

 Ví dụ: Sửa sinh viên Dư Thanh Linh ở lớp 11CDTH thành 11CDKT

Nguyễn ThịThúy Loan Trang 147 2/12/2011

Lnh DELETE

Cú pháp:

DELETE [FROM] Bảng [WHERE <điều kiện>]

Ví dụ: Xóa tất cảcác nhân viên có LCB < 700

Nguyễn ThịThúy Loan Trang 148 2/12/2011

Một phần của tài liệu Bài giảng hệ quản trị cơ sở dữ liệu ths nguyễn thị thúy loan (Trang 33 - 37)