Tìm kiếm với câu lệnh đơn giản

Một phần của tài liệu TÀI LIỆU DẠY HỌC CƠ SỞ DỮ LIỆU (Trang 91 - 95)

3.3. C ÁC THAO TÁC DỮ LIỆU TRONG SQL

3.3.1. Tìm kiếm với câu lệnh đơn giản

a. Tìm kiếm sử dụng mệnh đề SELECT FROM

SELECT [DISTINCT]{ *|<biểu thức 1>[AS <Tên mới 1>],

<biếu thức 2>[AS <Tên mới 2>], ... } FROM <tên bảng>;

Ví dụ 3.28. Lập danh sách sinh viên, danh sách gồm các thông tin mã sinh viên (MaSV), họ tên sinh viên (HoTenSV), năm sinh (NamSinh), giới tính (GioiTinh), quê quán (QueQuan), mã lớp (MaLop).

SELECT MaSV, HoTenSV, NamSinh, GioiTinh, QueQuan, MaLop

FROM SINH_VIEN;

Khi cần lấy thông tin về tất cả các cột của bảng, ta có thể sử dụng dấu sao (*) thay cho việc liệt kê các tên cột của bảng. Câu lệnh trên tương đương với câu lệnh:

SELECT *

FROM SINH_VIEN;

Kết quả của câu lệnh là một bảng (nằm trong bộ nhớ trong):

MaSV HoTenSV NamSinh GioiTinh QueQuan MaLop 1361030001 Lê Đình Bách 1996 Nam Thanh Hoá 136103A 1561030007 Lê Thị Hoa 1998 Nữ Nam Định 156103A

Ví dụ 3.29. Lập danh sách các học phần, danh sách gồm các thuộc tính: mã học phần (MaHP), tên học phần (TenHP), số tín chỉ (SoTC).

SELECT MaHP, TenHP, SoTC

FROM HOC_PHAN;

Câu lệnh này là cài đặt của phép chiếu trên 3 thuộc tính MaHP, TenHP, SoTC của bảng HOC_PHAN. Kết quả của câu lệnh là một bảng (nằm trong bộ nhớ trong):

92

MaHP TenHP SoTC

173097 Lập trình C nâng cao 02

174097 Cơ sở dữ liệu 02

174120 Phân tích thiết kế hệ thống 03

174065 Lập trình Web 02

174037 Công nghệ phần mềm 03

Ta giả thiết cần đặt tên khác (gọi là bí danh - Alias) cho các cột của bảng kết quả bằng tiếng Việt thay vì dùng tên của thuộc tính của bảng dữ liệu nguồn. Việc này được thực hiện bằng cách thêm từ khóa AS theo sau là một tên mới. Nếu tên có chứa các kí tự đặc biệt và/hoặc khoảng trắng thì viết tên đó trong cặp dấu ngoặc vuông ([ ]).

Ví dụ trên được sửa thành

SELECT MaHP AS [Mã học phần], TenHP AS [Tên học phần], SoTC AS [Số TC]

FROM HOC_PHAN;

Kết quả của câu lệnh là như sau:

Mã học phần Tên học phần Số TC 173097 Lập trình C nâng cao 02

174097 Cơ sở dữ liệu 02

174120 Phân tích thiết kế hệ thống 03

174065 Lập trình Web 02

174037 Công nghệ phần mềm 03

Câu lệnh SELECT không chỉ thực hiện việc trích thông tin từ các cột đơn lẻ của bảng mà có thể thực hiện tính toán theo công thức hay biểu thức bất kỳ dựa trên giá trị của các cột trên từng bản ghi của bảng. Trong đó:

Biểu thức (expression) là một dãy các toán hạng (Operand) nối với nhau bởi các phép toán (Operator). Trong đó:

Toán hạng có thể là:

• Trực hằng (Literals): bao gồm hằng số (Number - Ví dụ. 1234.56), hằng văn bản (Text) trong cặp dấu nháy đơn (Ví dụ. ‘Nguyễn Hồng Anh’ ) , hằng ngày tháng (Date/Time) đặt trong cặp dấu hàng rào ( # - Ví dụ. #19/05/1890# ), và hằng lôgic (True hay False) hoặc tên gọi của trực hằng.

• Tên thuộc tính (có thể kèm theo tên bảng và dấu chấm đứng trước). Ví dụ, LOP.MaLop

• Tên hàm (function). Ví dụ, SUM (...), COUNT (...), SIN (...), COS (...)

• Tên biến (Variable).

Các phép toán có thể là:

• Các phép toán số học: ^ (lũy thừa); * (nhân), / (chia), % (chia nguyên), Mod (phần dư); + (cộng), − (trừ).

• Các phép toán so sánh: <, ≤, ≥, >, =, <>. Kết quả phép so sánh là giá trị logic (True hoặc False).

93

• Các phép toán phạm vi: IN (<danh sách giá trị>), BETWEEN <Giá trị Min> AND <Giá trị Max>, LIKE <Mẫu v.bản>.

• Các phép toán logic: NOT (phủ định), AND (nối liền - conjunction), OR (nối rời - disjunction). Kết quả các phép toán logic là một giá trị logic.

Ví dụ 3.30. Đếm số sinh viên có trong bảng SINH_VIEN SELECT COUNT (MaSV) AS [Số sinh viên]

FROM SINH_VIEN;

Kết quả là bảng:

Số sinh viên 2

Khi thực hiện phép chiếu tên một quan hệ, các bộ giá trị giống nhau có thể được chọn. Từ khóa DISTINCT được sử dụng nếu muốn chỉ giữ lại 1 bộ trong các bộ giá trị giống nhau tìm được.

Ví dụ 3.31. Cho biết số tín chỉ của các học phần.

SELECT DISTINCT SoTC FROM HOC_PHAN;

Kết quả là bảng với 2 dòng và 1 cột như sau:

SoTC 2 3

b. Chọn các dòng của bảng - Mệnh đề WHERE

Trong nhiều trường hợp, ta chỉ cần chọn ra những bộ giá trị của bảng thỏa mãn điều kiện nào đó. Mệnh đề WHERE (WHERE Clause) với cú pháp WHERE<điều kiện> cho phép thực hiện điều đó. Ở đây <điều kiện> là một biểu thức mà kết quả là một giá trị logic hoặc đúng (True) hoặc sai (False). Đây là sự cài đặt của phép chọn (Selection) trong đại số quan hệ. Có thể kể đến 5 loại điều kiện cơ sở đặt sau từ khoá WHERE để chọn các bộ:

• so sánh giá trị của một biểu thức với một biểu thức khác;

• kiểm tra xem giá trị của một biểu thức có nằm trong một khoảng giá trị đã xác định không;

• kiểm tra xem giá trị của một biểu thức có bằng một trong các giá trị thuộc một tập hợp đã xác định không;

• đối sánh một xâu với một mẫu, kiểm tra xem xâu này có đúng với mẫu đó không;

• kiểm tra xem một cột có chứa giá trị NULL không.

Ví dụ 3.32. Lập danh sách sinh viên “Nam”?.

SELECT *

FROM SINH_VIEN WHERE GioiTinh=”Nam”;

94 Kết quả là:

MaSV HoTenSV NamSinh GioiTinh QueQuan MaLop 1361030001 Lê Đình Bách 1996 Nam Thanh Hoá 136103A

SQL dùng các phép toán so sánh: <, ≤, ≥, >, =, <>. Trong một tân từ thể hiện một điều kiện so sánh có thể xuất hiện các toán tử logic như AND, OR, NOT cùng với các dấu ngoặc chỉ ra thứ tự định giá. Các luật để định giá một biểu thức điều kiện là:

• Một biểu thức được định giá từ trái sang phải

• Các biểu thức con trong ngoặc được định giá trước

• Các phép NOT được định giá trước các phép AND và OR

• Các phép AND định giá trước các phép OR

Ví dụ 3.33. Lập danh sách các sinh viên quê ở “Thanh Hoá” hoặc “Nghệ An”.

SELECT *

FROM SINH_VIEN

WHERE (QueQuan = “Thanh Hoá”) OR (QueQuan = “Nghệ An”);

Hoặc viết cách khác:

SELECT *

FROM SINH_VIEN

WHERE QueQuan IN (“Thanh Hoá”, “Nghệ An”);

Ví dụ 3.34. Lập danh sách các sinh viên sinh từ năm 1988 đến năm 1998:

SELECT *

FROM SINH_VIEN

WHERE (NamSinh≥1988) AND (NamSinh≤ 1998);

Hoặc viết cách khác:

SELECT *

FROM SINH_VIEN

WHERE NamSinh BETWEEN 1988 AND 1998;

Phép toán được dùng là phép đối sánh mẫu với toán tử LIKE, mẫu so sánh trong phép toán LIKE là một giá trị kiểu Text, đó là một dãy kí tự bất kỳ trong đó có 2 kí tự có ý nghĩa đặc biệt sau đây:

• Kí tự nối dưới (_): Đại diện cho một kí tự bất kỳ tại vị trí dấu ?

• Kí tự phần trăm (%): Đại diện cho một nhóm kí tự bất kỳ tại vị trí đó.

SQL còn cho phép dùng toán tử NOT LIKE để tìm các xâu không sánh hợp.

Trong so sánh xâu, các chữ viết hoa hay viết thường là không sánh hợp. Các ví dụ sau làm rõ về khái niệm sánh hợp:

• ‘Hà%’ sánh hợp với mọi xâu bắt đầu bằng ‘Hà’;

• ‘%Hà’ sánh hợp với mọi xâu chứa xâu con ‘Hà’, ví dụ ‘Hà Nội’, ‘Thanh Hà’, ‘Hải Phòng - Hà Nội’;

• ‘---‘sánh hợp với mọi xâu có đúng 3 kí tự;

• ‘---%’sánh hợp với mọi xâu có ít nhất 3 kí tự.

95

Ví dụ 3.35. Lập danh sách sinh viên có tên bắt đầu bằng chữ H:

SELECT *

FROM SINH_VIEN

WHERE HoTenSV LIKE ‘H%’;

Một phần của tài liệu TÀI LIỆU DẠY HỌC CƠ SỞ DỮ LIỆU (Trang 91 - 95)

Tải bản đầy đủ (PDF)

(188 trang)