Bài giảng thực hành cơ SỞ DỮ liệU



tải về 4.27 Mb.
Chế độ xem pdf
trang21/43
Chuyển đổi dữ liệu13.11.2023
Kích4.27 Mb.
#55638
1   ...   17   18   19   20   21   22   23   24   ...   43
TH CSDL 2015Sep
NEW.Bài giảng CSDL sau nghiệm thu-2023, 6. Đề cương Cơ sở dữ liệu- sau nghiệm thu. 23.02.2022, Chuong01-CSDL
Ví dụ

Giả sử muốn tìm kiếm những nhân viên có tên bắt đầu với ký tự 'a', có thể làm 
điều đó như sau: 
SELECT employeeNumber, lastName, firstName 
FROM employees 
WHERE firstName LIKE 'a%' 
Kết quả trả về như sau: 


41 
MySQL quét toàn bộ bảng employees (nhân viên)  để tìm tất cả nhân viên có tên bắt đầu 
với ký tự 'a' và theo sau bởi một số lượng ký tự bất kỳ. 
Ví dụ

Để tìm kiếm tất cả các nhân viên có họ kết thúc với chuỗi ‘on’, có thể thực hiện 
truy vấn như sau: 
SELECT employeeNumber, lastName, firstName 
FROM employees 
WHERE lastName LIKE '%on' 
Kết quả trả về như sau: 
Nếu chỉ biết rằng chuỗi tìm kiếm được nhúng vào một vị trí nào đó trong giá trị của một 
cột, có thể đặt % đầu và cuối của chuỗi tìm kiếm để tìm tất cả khả năng. 
Ví dụ: muốn tìm tất cả các nhân viên mà họ của các nhân viên này có chứa cụm 'on', có 
thể thực hiện truy vấn sau đây: 
SELECT employeeNumber, lastName, firstName 
FROM employees 
WHERE lastName LIKE '%on%' 
Kết quả trả về như sau: 


42 
Chúng ta cũng có thể dùng NOT kèm với LIKE để hàm chứa ý nghĩa phủ định. 
Ví dụ: muốn tìm các nhân viên có họ không bắt đầu bởi ký tự ‘B’, viết như sau: 
SELECT employeeNumber, lastName, firstName 
FROM employees 
WHERE lastName NOT LIKE 'B%' 
Kết quả trả về như sau: 
Lưu ý là MySQL không phân biệt chữ hoa chữ thường nên ‘b%’ và ‘B%’ là như nhau. 
Trong trường hợp chuỗi tìm kiếm của lại bắt đầu bởi một ký tự đại diện, chẳng hạn là 
‘_’, mysql cung cấp cho ký tự ‘\’ để chỉ ra rằng các ký tự đại diện đi sau đó được sử 
dụng theo đúng nghĩa đen chứ không còn là ký tự đại diện nữa.
Ví dụ: tìm các sản phẩm mà mã của chúng có chứa chuỗi ‘_20’, khi đó phải viết truy vấn 
như sau: 
SELECT productCode, productName 
FROM products 


43 
WHERE productCode LIKE '%\_20%' 
Kết quả trả về như sau: 
LIKE cung cấp cho một cách thuận tiện để tìm bản ghi có các cột chứa các chuỗi phù 
hợp với mẫu tìm kiếm. Tuy nhiên, do việc thực thi LIKE chính là quét toàn bộ bảng để 
tìm tất cả các bản ghi phù hợp do đó nó không cho phép database engine sử dụng index 
để tìm kiếm nhanh. Khi dữ liệu trong bảng là đủ lớn, hiệu suất thực thi LIKE sẽ bị suy 
giảm. Trong một số trường hợp, có thể tránh vấn đề này bằng cách sử dụng các kỹ thuật 
khác để đạt được các kết quả tương tự. Hoặc sử dụng phương pháp đánh chỉ mục 
FULLTEXT của MySQL (sẽ đề cập về kỹ thuật này trong khóa học về Hệ quản trị CSDL 
MySQL). 
Ví dụ: nếu muốn tìm tất cả các nhân viên có tên đầu tiên bắt đầu với một chuỗi quy định
có thể sử dụng hàm LEFT() giống như các truy vấn sau đây: 
SET @str = 'b'; 
SELECT employeeNumber, lastName, firstName 
FROM employees 
WHERE LEFT(lastname,length(@str)) = @str; 
Kết quả trả về như sau: 


44 
Kết quả trả về của truy vấn này là tương đương với truy vấn dưới đây, tuy nhiên tốc độ 
thực thi của cách viết sau tốt hơn rất nhiều vì chúng ta có thể sử dụng index trên cột 
lastname
SELECT employeeNumber, lastName, firstName 
FROM employees 
WHERE lastname LIKE 'b%' 

tải về 4.27 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   17   18   19   20   21   22   23   24   ...   43




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương