Truy vấn dữ liệu trong sql (Bài 5)

Truy vấn dữ liệu trong sql là thao tác trích xuất thông tin được lưu trữ trong các table. Thông tin được truy xuất thông qua các cột & thông tin cần trích xuất có thể thuộc một hoặc nhiều bảng.

Thao tác này được sử dụng rất là nhiều trong các hệ thống software hoặc trang web, ví dụ khi các bạn đăng nhập vào facebook thì hệ thống sẽ thực hiện truy vấn dữ liệu để kiểm soát tích hợp lệ của account đăng nhập, ….

Truy vấn dữ liệu trong sql – Từ ngữ SQL

SQL viết tắt của Ştructured ?uery ɭanguage, là từ ngữ truy vấn có kết cấu. SQL cho phép tất cả chúng ta tạo nền tảng dữ liệu, thao tác trên dữ liệu như lưu trữ dữ liệu, sửa dữ liệu hoặc xóa dữ liệu hoặc truy vấn dữ liệu.

Đa phần các hệ quản trị nền tảng dữ liệu hiện tại sử dụng SQL (MS SQL Server – Ƭ- SQL, Microsoft Access, Oracle – PL/SQL, DB2, MySQL…)

Truy vấn dữ liệu trong sql – SQL có thể chia thành 4 nhóm

Nhóm truy vấn dữ liệu (DQL): gồm các lệnh truy vấn lựa chọn (Select) để lấy thông tin nhưng không làm biến đổi dữ liệu trong các bảng

Nhóm khái niệm dữ liệu (DDL): Gồm các lệnh tạo, biến đổi các bảng dữ liệu (Create, Drop, Alter, …)

Nhóm thao tác dữ liệu (DML): Gồm các lệnh làm biến đổi dữ liệu lưu trong các bảng (Insert, Delete, Cập nhật,…)

Nhóm điều khiển dữ liệu (DCL): Gồm các lệnh làm chủ quyền truy nhập vào dữ liệu & các bảng (Grant, Revoke, …)

Ngôn ngữ truy vấn dữ liệu (DQL-Data Query Language)

Bao gồm các lệnh cho phép truy vấn dữ liệu mà không làm biến đổi dữ liệu hoặc các đối tượng trong cơ sở dữ liệu. Này là các truy vấn khởi đầu bằng keyword SELECT. Trả về một bộ các tính chất hoặc một tập hợp các bộ tính chất.

Truy vấn dữ liệu trong sql – Cú pháp câu lệnh SELECT

SELECT [DISTINCT] Column(s)
FROM TableName, Views
[WHERE Conditions]
[GROUP BY Row(s)]
[HAVING]
[ORDER BY Column(s) [asc|desc]]

Cảnh báo:

  • Các mệnh đề trong cặp dấu [] không bắt buộc
  • DISTINCT có thể là: Distinct: trả về các bản ghi không trùng lặp nhau hoặc Top: trả về ɳ (hay %) bản ghi tìm ra từ trên xuống
  • Mệnh đề WHERE cho phép truy vấn lựa chọn theo hàng
  • Mệnh đề GROUP BY cho phép nhóm dữ liệu theo hàng
  • Mệnh đề HAVING cho phép truy vấn lựa chọn theo nhóm
  • Mệnh đề ORDER BY cho phép sắp đặt dữ liệu theo cột
Xem Thêm  CAST và CHUYỂN ĐỔI (Transact-SQL) - SQL Server - sql cast datetime cho đến nay

Truy vấn dữ liệu trong sql – Truy vấn lựa chọn toàn bộ các hàng & cột

SELECT * FROM  TableName

Truy vấn dữ liệu trong sql – Truy vấn lựa chọn một số cột

SELECT  Column1, Column2 … FROM  TableName

Chẳng hạn truy vấn lựa chọn toàn bộ các cột của bảng EMP

SELECT * FROM EMP

Truy vấn dữ liệu trong sql – Mệnh đề WHERE

SELECT [DISTINCT] Column(s)
FROM TableName
WHERE  Conditions

Một số toán tử (Operator) sử dụng trong biểu thức Conditions: Toán tử so sánh, toán tử lôgíc & so sánh xâu dùng toán tử LIKE

Các toán tử so sánh

=So sánh bằngvàlt;> hoặc !=Khácvàgt;To hơnvàlt;Bé hơnvàgt;=To hơn hoặc bằngvàlt;=Bé hơn hoặc bằngBETWEEN value1 AND value2So sánh nằm trong khoảng value1 & value2LIKESo sánh chuỗi tương đối

Chẳng hạn hiển thị thông tin nhân sự có lương bằng 800

SELECT EMPNO, ENAME, JOB, SAL, DEPTNO FROM EMP WHERE SAL = 800

Truy vấn dữ liệu trong sql – Ƭoán tử LIKE

Cho phép so sánh một chuỗi với chuỗi khác (có chứa các ký tự đại diện) sử dụng toán tử LIKE. Các ký tự đại diện (Wildcard):

Ký tựMô tả_Thay cho một ký tự đơnphần trămThay cho một chuỗi[]Thay cho một ký tự đơn trong khoảng được bao bởi cặp dấu ngoặc vuông[^]Thay cho một ký tự đơn bất kỳ không nằm trong khoảng được bao bởi cặp dấu ngoặc vuông

Chẳng hạn sử dụng ký tự _

SELECT * FROM EMP WHERE ENAME LIKE 'A____'

Chẳng hạn sử dụng ký tự %

SELECT * FROM EMP WHERE JOB LIKE '%LE%'

Truy vấn dữ liệu trong sql – Mệnh đề ORDER BY 

Cho phép sắp đặt kết quả truy vấn theo cột & có thể sắp đặt kết quả theo chiều: Tăng dần (asc) hoặc giảm dần (desc). Bên dưới là cú pháp

SELECT [DISTINCT] Column(s)
FROM TableName
[WHERE  Conditions ]
ORDER BY Column(s) [asc|desc]

Chẳng hạn dùng toán tử BETWEEN…AND & mệnh đề ORDER BY

SELECT * FROM EMP 
WHERE SAL BETWEEN 3000 AND 8000
ORDER BY SAL DESC

Truy vấn dữ liệu trong sql – Toán tử lôgíc

Các toán tử lôgíc gồm AND, OR & NOT. AND & OR được sử dụng để connect các điều kiện tìm kiếm nêu ra trong mệnh đề WHERE. NOT phủ định kết quả tìm kiếm.

Chẳng hạn sử dụng toán tử AND

SELECT * FROM EMP 
WHERE SAL >= 3000 AND JOB = 'ANALYST'

Truy vấn dữ liệu trong sql – Mệnh đề GROUP BY

Mệnh đề GROUP BY cho phép nhóm các hàng dữ liệu có giá trị giống nhau thành một nhóm. Các tính toán (thường sử dụng các hàm truy vấn nhóm) sẽ được tính trên mỗi nhóm. Một số hàm nhóm như:

Xem Thêm  Thay đổi kích thước hình ảnh trong CSS - cách phóng to css hình ảnh

Min(column)Tìm giá trị nhỏ nhất trong cột columnMax(column)Tìm giá trị lớn nhất trong cột columnAvg(column)Tìm giá trị bình quân của cột columnCount (*)Đếm số dòng

Chẳng hạn 1: Tìm mức lương lớn nhất, nhỏ nhất, lương bình quân & tổng lương trong bảng EMP

SELECT MAX(SAL), MIN(SAL), AVG(SAL), SUM(SAL) FROM EMP

Chẳng hạn 2:  Hiển thị lương lớn nhất & nhỏ nhất trong mỗi bộ phận

SELECT DEPTNO, MAX(SAL), MIN(SAL)
FROM EMP
GROUP BY DEPTNO

Truy vấn dữ liệu trong sql – Mệnh đề HAVING

Mệnh đề HAVING được sử dụng làm điều kiện nhóm. Chính vì thế mong muốn sử dụng HAVING, tất cả chúng ta phải kết phù hợp với GROUP BY.

Chẳng hạn: Hiển thị lương nhỏ nhất trong mỗi bộ phận với điều kiện lương nhỏ nhất từ 900 trở lên

SELECT DEPTNO, MAX(SAL), MIN(SAL)
FROM EMP
GROUP BY DEPTNO
HAVING MIN(SAL) >= 900

Truy vấn dữ liệu trong sql – Truy vấn dữ liệu từ nhiều bảng

Yêu cầu: Hãy hiển thị thông tin gồm mã sinh viên, tên sinh viên, tên lơp, mã môn học & điểm thi của những sinh viên có điểm thi >= 5

Truy vấn dữ liệu trong sql – Mệnh đề SELECT trên nhiều bảng

Khi truy vấn trên nhiều bảng, phải connect các bảng. Có hai kiểu connect:

  • Connect trong: mệnh đề WHERE nêu ra các trường khóa của các bảng cần connect phải như nhau hoặc dùng keyword JOIN trong mệnh đề FROM
  • Connect ngoài: sử dụng keyword  LEFT/RIGHT OUTER JOIN trong mệnh đề FROM

Chẳng hạn về connect trong sử dụng mệnh đề WHERE

truy vấn dữ liệu trong sql

Chẳng hạn về connect ngoài

truy vấn dữ liệu trong sql

So sánh kết quả hai kiểu kết nối

Connect trong chỉ trả về kết quả khi tìm được DEPARTMENT_ID tương ứng của nhân sự trong bảng DEPARTMENT

Connect ngoài trả về kết quả ngay cả khi không tìm được DEPARTMENT_ID của nhân sự trong bảng DEPARTMENT

Truy vấn dữ liệu trong sql – Bài tập mẫu

Thực hiện trên Oracle Database Express Edition, tải bản seting

Xem video chỉ dẫn seting Oracle Express

Xem video chỉ dẫn sử dụng Oracle Express

// Backlink sử dụng để seting trong clip
http://127.0.0.1:8080/apex

Yêu cầu thực hiện

Cho nền tảng dữ liệu QuanLyNhanSu như sau

Câu 1: Tạo nền tảng dữ liệu trên

Câu 2: Truy vấn dữ liệu trong sql

  1. Hiển thị toàn bộ thông tin của bảng NHANVIEN
  1. Hiển thị thông tin của những nhân sự ở phòng số 5
  1. Hiển thị mã nhân sự, họ nhân sự, tên lót & tên nhân sự của những nhân sự ở phòng số 5 & có lương >= 3000
  1. Hiển thị mã nhân sự, tên nhân sự của những nhân sự có lương từ 2000 đến 8000
  1. Hiển thị thông tin của những nhân sự ở địa chỉ có tên đường là Nguyễn
  1. Cho biết số lượng nhân sự
  1. Cho biết số lượng nhân sự trong từng bộ phận
  1. Hiển thị thông tin về mã nhân sự, tên nhân sự & tên bộ phận ở phòng kế toán
Xem Thêm  Ví dụ và Ưu điểm của SQL MIN () - hàm min của máy chủ sql

Truy vấn dữ liệu trong sql – Kết luận bài học

Từ ngữ truy vấn SQL bao gồm các lệnh có kết cấu cho phép Tạo cơ sở dữ liệu & Thêm, Sửa, hoặc Xóa dữ liệu.

Có 4 nhóm lệnh SQL chính, trong đó nhóm lệnh truy vấn dữ liệu (Select) cho phép trích ra phần dữ liệu cần lấy mà không làm biến đổi dữ liệu.

Truy vấn dữ liệu trong sql – Bài tập thực hành

Truy vấn nền tảng dữ liệu làm chủ account bank đã kiến trúc ở bài thực hành số 2

Câu 1: Tạo các truy vấn dữ liệu trong sql sử dụng trên một bảng

1.1. Tạo truy vấn hiển thị thông tin toàn bộ các account có kiểu là “Checking”

1.2. Tạo truy vấn hiển thị các thông tin gồm (MaKH, SoTK, KieuTK, NgayMoTK) của các tài khoản có kiểu “Tài khoản cá nhân trong nước” & sắp đặt kết quả hiển thị sao cho
ngày mở gần nhất sẽ được hiển thị trước (tức là ngày mở được sắp đặt giảm dần)

1.3. Tạo truy vấn hiển thị Tên, địa chỉ, Tp các KH sống tại Tp “Hà
Nội”. Sắp đặt kết quả theo thứ tự Alphabet của tên KH

1.4. Tạo truy vấn hiển thị thông tin các KH đã mở account trước ngày
01/07/2011.

Câu 2: Tạo các truy vấn dữ liệu trong sql sử dụng trên nhiều bảng

2.1. Thực hiện truy vấn hiển thị thông tin KH, kiểu account, ngày mở.

2.2. Thực hiện truy vấn hiển thị toàn bộ các thông tin như truy vấn trên & đáp ứng điều
kiện ngày mở sau ngày 01/07/2011.

2.3. Thực hiện truy vấn hiển thị toàn bộ các thông tin như truy vấn trên & đáp ứng điều
kiện ngày mở sau ngày 01/07/2011 & kiểu account là “Tài khoản tổ chức trong
nước”. Thông tin hiển thị được sắp đặt theo thứ tự Alphabet của tên KH.

2.4. Thực hiện truy vấn hiển thị các thông tin: SoTK,KieuTK,SoTienGD,
MoTaGD,ThoiGianGD,SoDuTaiKhoan cuả account 000000003 & giao dịch
ngày 20/07/2007.

2.5. Liệt kê các thông tin về toàn bộ các lần giao dịch gồm: HoTenKH, DiaChi, SoTK, KieuTK, ThoiGianGD, SoTienGD, MoTaGD, SoDuTaiKhoan  của người sử dụng có số account là: 500000

Viết một bình luận