Truy vấn dữ liệu trong sql
Truy vấn dữ liệu trong sql
Truy vấn dữ liệu trong SQL (Structured Query Language) là quá trình lấy dữ liệu từ cơ sở dữ liệu bằng cách sử dụng câu lệnh truy vấn. Truy vấn SQL cho phép người dùng truy xuất, thêm, cập nhật hoặc xóa dữ liệu từ một hoặc nhiều bảng trong cơ sở dữ liệu.
Để tìm hiểu chi tiết, hãy cùng tham khảo bài viết dưới đây của R2S về các câu lệnh truy vấn SQL phổ biến bao gồm SELECT, INSERT, UPDATE và DELETE.
Truy vấn dữ liệu trong sql là gì?
Trong sql, truy vấn dữ liệu là việc lấy thông tin được lưu trữ trong các bảng. Thông tin được lấy ra thông qua các cột và có thể thuộc nhiều bảng khác nhau.
Thao tác này được sử dụng rộng rãi trong các hệ thống phần mềm hoặc trang web. Ví dụ, khi đăng nhập vào Facebook, hệ thống sẽ thực hiện truy vấn dữ liệu để kiểm tra tính hợp lệ của tài khoản đăng nhập.
Ngôn ngữ SQL là gì?
SQL là viết tắt của “Structured Query Language” (Ngôn ngữ truy vấn có cấu trúc) và được sử dụng để tương tác với các hệ quản trị cơ sở dữ liệu (DBMS) như MySQL, Oracle, SQL Server, PostgreSQL, và nhiều hơn nữa. SQL cho phép người dùng truy vấn, thêm, sửa đổi và xóa dữ liệu trong cơ sở dữ liệu của họ. Nó là một ngôn ngữ lập trình phổ biến cho các ứng dụng web và các hệ thống quản lý cơ sở dữ liệu.
Có thể bạn chưa biết là hiện nay đa số các hệ quản trị cơ sở dữ liệu hiện nay sử dụng SQL như MS SQL Server – T- SQL, Microsoft Access, Oracle – PL/SQL, DB2, MySQL…
Phân loại SQL
Hiện nay, SQL được chia thành 4 nhóm chính sau:
- SQL DDL (Data Definition Language): các lệnh dùng để định nghĩa cấu trúc cơ sở dữ liệu, bao gồm CREATE, ALTER, DROP.
- SQL DML (Data Manipulation Language): các lệnh dùng để thao tác với dữ liệu trong cơ sở dữ liệu, bao gồm SELECT, INSERT, UPDATE, DELETE.
- SQL DCL (Data Control Language): các lệnh dùng để kiểm soát quyền truy cập và phân quyền trong cơ sở dữ liệu, bao gồm GRANT, REVOKE.
- SQL TCL (Transaction Control Language): các lệnh dùng để kiểm soát các giao dịch trong cơ sở dữ liệu, bao gồm COMMIT, ROLLBACK.
Ngôn ngữ truy vấn dữ liệu (DQL-Data Query Language) là gì?
Các lệnh trong CSDL cho phép truy vấn dữ liệu mà không ảnh hưởng đến dữ liệu hoặc đối tượng. Những lệnh này bắt đầu bằng SELECT và trả về một bộ hoặc tập hợp thuộc tính.
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]]
Lưu ý:
- 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ề n (hay %) bản ghi tìm thấy 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 xếp dữ liệu theo cột.
Truy vấn dữ liệu trong sql – Truy vấn lựa chọn tất cả các hàng và cột
SELECT * FROM TableName
Truy vấn lựa chọn một số cột
SELECT Column1, Column2 … FROM TableName
Ví dụ truy vấn lựa chọn tất cả 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
Các toán tử được sử dụng trong biểu thức điều kiện bao gồm: toán tử so sánh, toán tử logic và toán tử so sánh xâu bằng cách sử dụng toán tử LIKE.
Các toán tử so sánh
Ký hiệu | Giải thích |
= | So sánh bằng |
<> hoặc != | Khác |
> | Lớn hơn |
< | Nhỏ hơn |
>= | Lớn hơn hoặc bằng |
<= | Nhỏ hơn hoặc bằng |
BETWEEN value1 AND value2 | So sánh nằm trong khoảng value1 và value2 |
LIKE | So sánh chuỗi tương đối |
Ví dụ hiển thị thông tin nhân viên 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 – Toá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ự đơn |
% | Thay 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 |
Ví dụ sử dụng ký tự _
SELECT * FROM EMP WHERE ENAME LIKE 'A____'
Ví dụ sử dụng ký tự %
SELECT * FROM EMP WHERE JOB LIKE '%LE%'
Truy vấn dữ liệu trong sql – Mệnh đề ORDER BY
Có thể sắp xếp kết quả truy vấn theo cột và thứ tự tăng dần hoặc giảm dần. Dưới đây là cú pháp cho việc sắp xếp.
SELECT [DISTINCT] Column(s)
FROM TableName
[WHERE Conditions ]
ORDER BY Column(s) [asc|desc]
Ví dụ dùng toán tử BETWEEN…AND và 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
Trong SQL, ta có ba toán tử logic chính là AND, OR và NOT. AND và OR được sử dụng để kết nối các điều kiện tìm kiếm trong câu lệnh WHERE. NOT được dùng để đảo ngược kết quả tìm kiếm.
Ví dụ 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
GROUP BY là một mệnh đề 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 thực hiện trên mỗi nhóm. Một số hàm nhóm bao gồm:
Min(column) | Tìm giá trị nhỏ nhất trong cột column |
Max(column) | Tìm giá trị lớn nhất trong cột column |
Avg(column) | Tìm giá trị trung bình của cột column |
Count (*) | Đếm số dòng |
Ví dụ 1: Tìm mức lương lớn nhất, nhỏ nhất, lương trung bình và tổng lương trong bảng EMP
SELECT MAX(SAL), MIN(SAL), AVG(SAL), SUM(SAL) FROM EMP
Ví dụ 2: Hiển thị lương lớn nhất và nhỏ nhất trong mỗi phòng ban
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 để áp dụng điều kiện lên các nhóm trong câu truy vấn SQL. Để sử dụng HAVING, ta cần kết hợp với GROUP BY.
Ví dụ: Để hiển thị lương nhỏ nhất trong mỗi phòng ban với điều kiện lương từ 900 trở lên, ta có thể sử dụng câu truy vấn sau:
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: Để 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 và điểm thi của những sinh viên có điểm thi >= 5, ta cần làm như thế nào?
Truy vấn dữ liệu trong sql – Mệnh đề SELECT trên nhiều bảng
Khi thực hiện truy vấn trên nhiều bảng, chúng ta cần thực hiện kết nối các bảng lại với nhau. Có hai kiểu kết nối chính:
- Kết nối trong (INNER JOIN): Mệnh đề WHERE được sử dụng để chỉ ra các trường khóa của các bảng cần kết nối phải giống nhau hoặc sử dụng từ khóa JOIN trong mệnh đề FROM.
- Kết nối ngoài (LEFT/RIGHT OUTER JOIN): Sử dụng từ khóa LEFT JOIN hoặc RIGHT JOIN trong mệnh đề FROM để kết nối các bảng. Kết quả trả về sẽ bao gồm tất cả các bản ghi từ bảng trái (LEFT JOIN) hoặc bảng phải (RIGHT JOIN), và các bản ghi tương ứng từ bảng kia
Ví dụ về kết nối trong sử dụng mệnh đề WHERE
Ví dụ về kết nối ngoài
So sánh kết quả hai kiểu kết nối
Kết nối trong chỉ trả về kết quả khi tìm được DEPARTMENT_ID tương ứng của nhân viên trong bảng DEPARTMENT.
Kết nối ngoài trả về kết quả ngay cả khi không tìm được DEPARTMENT_ID của nhân viên trong bảng DEPARTMENT.
Bài tập mẫu
Để thực hiện trên Oracle Database Express Edition, bạn cần tải bản cài đặt và sau đó xem video hướng dẫn cài đặt Oracle Express.
Bạn cũng có thể xem video hướng dẫn sử dụng Oracle Express để biết thêm thông tin chi tiết.
Xem video hướng dẫn cài đặt Oracle Express
Xem video hướng dẫn sử dụng Oracle Express
// Link sử dụng để thiết lập trong clip
http://127.0.0.1:8080/apex
Yêu cầu thực hiện
Cho cơ sở dữ liệu QuanLyNhanSu như sau
Câu 1: Tạo cơ sở dữ liệu trên
Câu 2: Truy vấn dữ liệu trong sql
- Hiển thị tất cả thông tin của bảng NHANVIEN.
- Hiển thị thông tin của những nhân viên ở phòng số 5.
- Hiển thị mã nhân viên, họ nhân viên, tên lót và tên nhân viên của những nhân viên ở phòng số 5 và có lương từ 3000 trở lên.
- Hiển thị mã nhân viên, tên nhân viên của những nhân viên có lương từ 2000 đến 8000.
- Hiển thị thông tin của những nhân viên ở địa chỉ có tên đường là Nguyễn.
- Cho biết số lượng nhân viên.
- Cho biết số lượng nhân viên trong từng phòng ban.
- Hiển thị thông tin về mã nhân viên, tên nhân viên và tên phòng ban ở phòng kế toán.
Bài tập thực hành
Truy vấn cơ sở dữ liệu quản lý tài khoản ngân hàng đã thiết kế ở bài thực hành số 2
Câu 1: Tạo các truy vấn dữ liệu sử dụng trên một bảng
- 1.1. Tạo truy vấn hiển thị thông tin tất cả các tài khoản 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” và sắp xếp kết quả hiển thị theo ngày mở từ mới nhất đến cũ nhất.
- 1.3. Tạo truy vấn hiển thị Tên, địa chỉ, thành phố của các khách hàng sống tại thành phố “Hà Nội”. Sắp xếp kết quả theo thứ tự Alphabet của tên khách hàng.
- 1.4. Tạo truy vấn hiển thị thông tin các khách hàng đã mở tài khoản 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ách hàng, kiểu tài khoản, ngày mở từ nhiều bảng.
- 2.2. Thực hiện truy vấn hiển thị tất cả các thông tin như truy vấn trên và thỏa mãn đ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ị tất cả các thông tin như truy vấn trên và thỏa mãn điều kiện ngày mở sau ngày 01/07/2011 và kiểu tài khoản là “Tài khoản tổ chức trong nước”. Thông tin hiển thị được sắp xếp theo thứ tự Alphabet của tên khách hàng.
- 2.4. Thực hiện truy vấn hiển thị các thông tin: SoTK, KieuTK, SoTienGD, MoTaGD, ThoiGianGD, SoDuTaiKhoan của tài khoản 000000003 và giao dịch ngày 20/07/2007.
- 2.5. Liệt kê các thông tin về tất cả các lần giao dịch gồm: HoTenKH, DiaChi, SoTK, KieuTK, ThoiGianGD, SoTienGD, MoTaGD, SoDuTaiKhoan của khách hàng có số tài khoản là 500000.
Kết luận
Ngôn ngữ truy vấn SQL bao gồm các lệnh có cấu trúc để tạo cơ sở dữ liệu và thực hiện các thao tác 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 xuất dữ liệu mà không làm thay đổi nó.
Bài viết gốc được đăng tại: giasutinhoc.vn