Chương 5
Truy vấn nâng cao
Database Design and Implementation with SQL
Server 2000 / Session 5 / 2 of 33
Ôn tập
Ôn lại về kiểu người dùng và quản lý bảo mật:
Quản lý đăng nhập
Quản lý người dùng
Các thủ tục hệ thống để đăng nhập và quản lý
người dùng
Gán và huỷ bỏ các quyền hạn
Database Design and Implementation with SQL
Server 2000 / Session 5 / 3 of 33
Mục tiêu
Tìm hiểu và thi hành các truy vấn con
Tìm hiểu cách sử dụng mệnh đề EXISTS
Tìm hiểu cách thi hành các truy vấn
Học cách sử dụng mệnh đề DISTINCT để
truy vấn
Tìm hiểu cách sử dụng COMPUTE BY
Truyền dữ liệu giữa các bảng bằng cách
sử dụng SELECT INTO
Database Design and Implementation with SQL
Server 2000 / Session 5 / 4 of 33
Truy vấn là gì?
SQL
Server
Truy
vấn
Dữ liệu trong
các bảng
Người sử
dụng
Khởi tạo
Đưa ra một câu
hỏi cần quan tâm
Trả lời câu hỏi –
Trả về tập hợp kết
quả
Xử lý bởi
Database Design and Implementation with SQL
Server 2000 / Session 5 / 5 of 33
Câu lệnh SELECT trong
truy vấn
Truy vấn trên nhiều hàng và cột
Có thể truy vấn trên nhiều bảng hoặc nhiều CSDL.
Xác định các cột yêu cầu trong truy vấn được chỉ
ra.
Các cột kết quả có cùng thứ tự trong truy vấn.
Database Design and Implementation with SQL
Server 2000 / Session 5 / 6 of 33
Truy vấn trên nhiều bảng
Database Design and Implementation with SQL
Server 2000 / Session 5 / 7 of 33
Các truy vấn con
Truy vấn cha
Truy vấn
con
Toán tử
Select <Column Name> From Table
WHERE <Column Name> =
Select <Column Name> From
<Table> WHERE <Column> =
<Criteria >
Truy vấn con : là một câu lệnh SELECT
lồng trong câu lệnh SELECT khác
Database Design and Implementation with SQL
Server 2000 / Session 5 / 8 of 33
Sử dụng EXISTS và NOT
EXISTS
Database Design and Implementation with SQL
Server 2000 / Session 5 / 9 of 33
Các truy vấn lồng nhau
Các truy vấn lồng nhau được truy vấn trong các truy vấn con
Ví dụ
Truy vấn
lồng 2 cấp
Database Design and Implementation with SQL
Server 2000 / Session 5 / 10 of 33
Sự liên quan giữa các truy
vấn con
Truy vấn con liên quan đến truy vấn cha
Truy vấn con định lại giá trị cho mọi lần lặp
trong trong truy vấn cha.
Ví dụ
Database Design and Implementation with SQL
Server 2000 / Session 5 / 11 of 33
Kết hợp
Toán tử kết hợp : Kết nối hai hoặc nhiều
câu lệnh SELECT vào
một tập hợp kết quả
Toán tử Union
SELECT statement
UNION [ALL]
SELECT statement
Mệnh đề ALL không loại bỏ được sự
trùng lặp dữ liệu
Database Design and Implementation with SQL
Server 2000 / Session 5 / 12 of 33
Các phép kết hợp…
Mỗi lệnh select phải có cấu trúc giống nhau
Kiểu dữ liệu trong các cột phải
tương thích với nhau và có
cùng số lượng cột
SELECT empno, ename, sal FROM emp
UNION
SELECT empno, ename, sal FROM ret_emp
Ví dụ:
Database Design and Implementation with SQL
Server 2000 / Session 5 / 13 of 33
Truy vấn trên tất
cả các hàng
Ví dụ
Database Design and Implementation with SQL
Server 2000 / Session 5 / 14 of 33
Dùng lệnh Select lựa chọn
các cột
Ví dụ
Database Design and Implementation with SQL
Server 2000 / Session 5 / 15 of 33
Sử dụng mệnh đề WHERE
với lệnh Select
Ví dụ
Mệnh đề WHERE trong truy vấn dùng để lọc bớt số lượng
hàng hiển thị trong truy vấn dựa trên điều kiện đã chỉ ra.
Cú pháp: SELECT <Column Name> FROM <table
Name> WHERE <Condition>
Database Design and Implementation with SQL
Server 2000 / Session 5 / 16 of 33
Các toán tử quan hệ và
mệnh đề WHERE
Chúng ta có thể sử dụng các loại điều kiện tìm kiếm
khác nhau và các toán tử so sánh trong mệnh đề
WHERE
. Bảng dưới đây liệt kê danh sách các toán tử so sánh
có thể sử dụng trong truy vấn.
Toán tử Ý nghĩa
= Bằng
> Lớn hơn
< Nhỏ hơn
>= Lớn hơn hoặc bằng
<= Nhỏ hơn hoặc bằng
Không bằng
<>
! Phủ định
Database Design and Implementation with SQL
Server 2000 / Session 5 / 17 of 33
Các ký tự đại diện
Ký tự đại
diện
Diễn giải Ví dụ
‘_’ Một ký tự đơn Select Branch_Code From Branch
Where Branch_Code Like ‘L__’
% Một chuỗi có độ dài bất kỳ Select Route_Code From
FlightSchedule Where Route_Code
Like ‘AMS-%’
[] Một ký tự đơn thuộc khoảng nằm
trong ngoặc
Select Airbusno From
FlightSchedule Where Airbusno
Like ‘AB0[1-5]’
[^] Bất kỳ một ký tự nào không thuộc
trong khoảng nằm trong ngoặc
Select Airbusno From
FlightSchedule Where Airbusno
Like ‘AB0[^1-5]’
Database Design and Implementation with SQL
Server 2000 / Session 5 / 18 of 33
Sử dụng các ký tự đại diện
với toán tử LIKE
Ví dụ
Database Design and Implementation with SQL
Server 2000 / Session 5 / 19 of 33
Sử dụng toán tử
logic phủ định (Not)
Ví dụ
Database Design and Implementation with SQL
Server 2000 / Session 5 / 20 of 33
Sử dụng toán tử logic AND
Ví dụ
Database Design and Implementation with SQL
Server 2000 / Session 5 / 21 of 33
Sử dụng toán tử logic OR
Ví dụ
Database Design and Implementation with SQL
Server 2000 / Session 5 / 22 of 33
Mệnh đề ORDER BY
Database Design and Implementation with SQL
Server 2000 / Session 5 / 23 of 33
Hiển thị dữ liệu được sắp xếp
với lệnh SELECT và mệnh đề
ORDER BY
Ví dụ
Database Design and Implementation with SQL
Server 2000 / Session 5 / 24 of 33
Mệnh đề DISTINCT
Database Design and Implementation with SQL
Server 2000 / Session 5 / 25 of 33
Sử dụng mệnh đề
DISTINCT
Mỗi kiểu (type)
được trả về là duy
nhất
Mỗi kiểu (type)
được trả về là duy
nhất
Ví dụ