Truy vấn nâng cao
Chương 5
Ôn tập
Ôn lại về kiểu người dùng và quản lý bảo mật:
n Quản lý đăng nhập
n Quản lý người dùng
n Các thủ tục hệ thống để đăng nhập và quản lý
người dùng
n Gán và huỷ bỏ các quyền hạn
Database Design and Implementation with SQL Server 2000 / Session 5 / 2 of 33
Mục tiêu
n
n
n
n
n
n
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 / 3 of 33
Truy vấn là gì?
Truy
vấn
Khởi tạo
Người sử
dụng
Đưa ra một câu
hỏi cần quan tâm
Dữ liệu trong
các bảng
Xử lý bởi
Trả lời câu hỏi –
Trả về tập hợp kết
quả
SQL
Server
Database Design and Implementation with SQL Server 2000 / Session 5 / 4 of 33
Câu lệnh SELECT trong
truy vấn
n
Truy vấn trên nhiều hàng và cột
n
Có thể truy vấn trên nhiều bảng hoặc
n
n
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 / 5 of 33
Truy vấn trên nhiều bảng
Database Design and Implementation with SQL Server 2000 / Session 5 / 6 of 33
Các truy vấn con
Truy vấn con : là một câu lệnh SELECT lồng
trong câu lệnh SELECT khác
Truy vấn cha
Select <Column Name> From Table
Toán tử
WHERE <Column Name> =
Truy vấn
con
Select <Column Name> From
<Table> WHERE <Column> =
<Criteria >
Database Design and Implementation with SQL Server 2000 / Session 5 / 7 of 33
Sử dụng EXISTS và NOT
EXISTS
Database Design and Implementation with SQL Server 2000 / Session 5 / 8 of 33
Các truy vấn lồng nhau
n
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 / 9 of 33
Sự liên quan giữa các truy
vấn con
w Truy vấn con liên quan đến truy vấn cha
w 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 / 10 of 33
Kết hợp
n
n
n
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 / 11 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
w 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
Ví dụ:
SELECT empno, ename, sal FROM emp
UNION
SELECT empno, ename, sal FROM ret_emp
Database Design and Implementation with SQL Server 2000 / Session 5 / 12 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 / 13 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 / 14 of 33
Sử dụng mệnh đề WHERE
với lệnh Select
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
Name> WHERE <Condition>
Ví dụ
Database Design and Implementation with SQL Server 2000 / Session 5 / 15 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 / 16 of 33
Các 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]’
Ký tự đại
diện
Database Design and Implementation with SQL Server 2000 / Session 5 / 17 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 / 18 of 33
Sử dụng toán tử
logic phủ định (Not)
Ví dụ
Database Design and Implementation with SQL Server 2000 / Session 5 / 19 of 33
Sử dụng toán tử logic AND
Ví dụ
Database Design and Implementation with SQL Server 2000 / Session 5 / 20 of 33
Sử dụng toán tử logic OR
Ví dụ
Database Design and Implementation with SQL Server 2000 / Session 5 / 21 of 33
Mệnh đề ORDER BY
Database Design and Implementation with SQL Server 2000 / Session 5 / 22 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 / 23 of 33
Mệnh đề DISTINCT
Database Design and Implementation with SQL Server 2000 / Session 5 / 24 of 33
Sử dụng mệnh đề
DISTINCT
Ví dụ
Mỗi kiểu (type)
được trả về là duy
nhất
Database Design and Implementation with SQL Server 2000 / Session 5 / 25 of 33