12/08/2018, 15:28

Kiến thức SQL cơ bản cần thiết cho Tester

Trong thời đại công nghệ phát triển, yêu cầu về kĩ năng ở người Tester ngày càng cao, đòi hỏi họ ngoài những kiến thức căn bản về kiểm thử phần mềm, tiếng anh, thì SQL là một trong những kĩ năng về kĩ thuật cần phải có của một người kiểm thử phần mềm. Vậy kỹ năng SQL đối với tester có cần phải ...

Trong thời đại công nghệ phát triển, yêu cầu về kĩ năng ở người Tester ngày càng cao, đòi hỏi họ ngoài những kiến thức căn bản về kiểm thử phần mềm, tiếng anh, thì SQL là một trong những kĩ năng về kĩ thuật cần phải có của một người kiểm thử phần mềm.

Vậy kỹ năng SQL đối với tester có cần phải cao siêu như developer không? Tester có cần phải viết câu lệnh SQL không? Hay chỉ cần biết đọc hiểu câu SQL là được rồi? Và những câu lệnh cơ bản về truy vấn trong SQL mà một người tester cần nắm được là gì?

Trong bài viết này, tôi sẽ trình bày về một số kiến thức cơ bản về SQL cần thiết.

1.1 Khái niệm

  • SQL - Structural Query Language là ngôn ngữ truy vấn mang tính cấu trúc. Nó được thiết kế để quản lý dữ liệu trong một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS).

  • SQL là ngôn ngữ cơ sở dữ liệu, được sử dụng để tạo, xóa trong cơ sở dữ liệu, lấy các hàng và sửa đổi các hàng, …

Tất cả DBMS (Database Management System) như MySQL, Oracle, MS Access, Sybase, Informix, Postgres và SQL Server sử dụng SQL như là ngôn ngữ cơ sở dữ liệu chuẩn.

1.2 Tại sao SQL là cần thiết ?

SQL là cần thiết để:

  • Tạo cơ sở dữ liệu, bảng và view mới.

  • Để chèn các bản ghi vào trong một cơ sở dữ liệu.

  • Để xóa các bản ghi từ một cơ sở dữ liệu.

  • Để lấy dữ liệu từ một cơ sở dữ liệu.

1.3 Chức năng của SQL

  • Có thể truy vấn Database theo nhiều cách khác nhau, bởi sử dụng các lệnh.

  • Người dùng có thể truy cập dữ liệu từ RDBMS.

  • SQL cho phép người dùng miêu tả dữ liệu.

  • SQL cho phép người dùng định nghĩa dữ liệu trong một Database và thao tác nó khi cần thiết.

  • Cho phép người dùng tạo, xóa Database và bảng.

  • Cho phép người dùng tạo view, Procedure, hàm trong một Database.

  • Cho phép người dùng thiết lập quyền truy cập vào bảng, thủ tục và view.

1.4 Một số lí do Tester nên học SQL

  • Tương tự như lập trình viên (developer), công việc của tester cũng rất cần kỹ năng sử dụng SQL. Vì họ là người tạo ra dữ liệu test chính. Trong nhiều dự án, Tester sẽ truy cập DB và sử dụng dữ liệu trong hầu hết thời gian kiểm thử ứng dụng. Nếu QA không có kỹ năng sử dụng, thao tác với SQL thì sẽ gặp nhiều khó khăn. Họ phải nhờ Tester khác hoặc dev để giúp học những việc đó.

  • Hơn nữa Tester có kiến thức SQL có thể review và chỉ ra một số vấn đề gặp phải trong các câu truy vấn, nhất là các câu truy vấn dài. Lỗi performance, quét dữ liệu nhiều lần gây tốn thời gian không cần thiết.

  • Backup dữ liệu và tạo mới dữ liệu để test. Khách hàng báo cáo lỗi và gửi bản dump dữ liệu của họ cho mình. Tester không biết restore dữ liệu thì sao mà có thể dựng môi trường test và tái hiện bug?

Đó là ví dụ về một vài lí do cần thiết để học SQL.

2.1 Mệnh đề WHERE

Mệnh đề WHERE trong SQL được sử dụng để xác định một điều kiện trong khi lấy dữ liệu từ bảng đơn hoặc nhiều bảng kết hợp.

Nếu điều kiện đã cho được thỏa mãn, thì nó chỉ trả về các giá trị cụ thể từ bảng đó. Bạn sẽ sử dụng mệnh đề WHERE để lọc các bản ghi và chỉ lấy các bản ghi cần thiết.

Mệnh đề WHERE không chỉ được sử dụng trong lệnh SELECT, mà nó còn được sử dụng trong các lệnh UPDATE, DELETE, …

Cú pháp cơ bản của lệnh SELECT với mệnh đề WHERE trong SQL như sau:

SELECT cot1, cot2, cotN 
FROM ten_bang
WHERE [dieu_kien]

Ví dụ: Bảng SINHVIEN có các bản ghi sau:

+----+---------+-----+-----------+--------+
| ID |  TEN    | TUOI|  KHOAHOC  | HOCPHI |
+----+---------+-----+-----------+---------+
|  1 | Hien   |  21 | CNTT      | 4       |
|  2 | Ha     |  20 | DTVT      | 3       |
|  3 | Dat    |  18 | CDT       |  4      |
|  4 | Dao    |  19 | KHMT      |   4.5   |
|  5 | Hoa    |  20 | TCNH      |   5     |
+----+---------+-----+-----------+---------+

Ví dụ sau sẽ lấy các trường ID, TEN, HOCPHI từ bảng này với điều kiện là HOCPHI lớn hơn 4:

SELECT ID, TEN, HOCPHI 
FROM SINHVIEN
WHERE HOCPHI > 2000;

Ví dụ trên sẽ cho kết quả:

+----+----------+----------+
| ID | TEN     | HOCPHI   |
+----+----------+----------+
|  4 | Dao    |  4.5   |
|  5 | Hoa   |   5     |
+----+----------+----------+

2.2 Mệnh đề SELECT

Lệnh SELECT trong SQL được sử dụng để lấy dữ liệu từ một bảng trong Database mà trả về dữ liệu ở dạng bảng dữ liệu kết quả. Những bảng dữ liệu kết quả này được gọi là các tập hợp kết quả.

Cú pháp cơ bản của lệnh SELECT trong SQL như sau:

SELECT cot1, cot2, cotN FROM ten_bang;

Ở đây, cot1, cot2, … là các trường của một bảng có các giá trị mà bạn muốn lấy. Nếu bạn muốn lấy tất cả các trường có sẵn trong bảng, bạn có thể sử dụng cú pháp sau: SELECT * FROM ten_bang;

Ví dụ, với bảng sinh viên đã có ở trên, muốn lấy ra tất cả các trường của bảng sinh viên ta dùng truy vấn sau: SELECT * FROM SINHVIEN;

Và thu được kết quả là:

+----+---------+-----+-----------+--------+
| ID |  TEN    | TUOI|  KHOAHOC  | HOCPHI |
+----+---------+-----+-----------+---------+
|  1 | Hien  |  21 | CNTT     | 4       |
|  2 | Ha    | 20  | DTVT     | 3       |
|  3 | Dat   |  18 | CDT      |  4      |
|  4 | Dao   |  19 | KHMT     |   4.5   |
|  5 | Hoa   |  20 | TCNH     |   5     | 
+----+---------+-----+-----------+---------+

2.3 Mệnh đề ORDER BY & GROUP BY

2.3.1 Order By

Mệnh đề ORDER BY trong SQL được sử dụng để sắp xếp dữ liệu theo thứ tự tăng dần hoặc theo thứ tự giảm dần, trên một hoặc nhiều cột. Một số Database sắp xếp kết quả truy vấn theo thứ tự tăng dần theo mặc định.

Cú pháp cơ bản của mệnh đề ORDER BY trong SQL như sau:

SELECT danh_sach_cot 
FROM ten_bang 
[WHERE dieu_kien] 
[ORDER BY cot1, cot2, .. cotN] [ASC | DESC];

Chúng ta có thể sử dụng nhiều hơn một cột trong mệnh đề ORDER BY. Đảm bảo rằng, bất cứ cột nào bạn đang sử dụng để sắp xếp, thì nó phải có trong danh_sach_cot.

Ví dụ sau minh họa cách sắp xếp theo thứ tự tăng dần cho TEN.

SELECT * FROM SINHVIEN
     ORDER BY TEN;

Ví dụ trên sẽ cho kết quả:

+----+---------+-----+-----------+--------+
| ID |  TEN    | TUOI|  KHOAHOC  | HOCPHI |
+----+---------+-----+-----------+---------+
|  4 | Dao   |  19 | KHMT      | 4.5     |
|  3 | Dat   |  18 | CDT       |   4     |
|  2 | Ha    |  20 | DTVT      |   3     |
|  1 | Hien  |  21 | CNTT      |  4      |
|  5 | Hoa   |  20 | TCNH      | 5       |
+----+---------+-----+-----------+---------+

2.3.2 Group By

Mệnh đề GROUP BY trong SQL được sử dụng kết hợp với lệnh SELECT để sắp xếp dữ liệu đồng nhất vào trong các nhóm.

Trong SQL, mệnh đề GROUP BY theo sau mệnh đề WHERE trong một lệnh SELECT và ở trước mệnh đề ORDER BY.

Cú pháp cơ bản của Mệnh đề GROUP BY trong SQL như dưới đây. Mệnh đề GROUP BY phải theo sau các điều kiện trong mệnh đề WHERE và phải đứng trước mệnh đề ORDER BY nếu được sử dụng.

SELECT cot1, cot2
FROM ten_bang
WHERE [ dieu_kien ]
GROUP BY cot1, cot2
ORDER BY cot1, cot2

2.4 Mệnh đề JOIN, INNER JOIN, LEFT JOIN & RIGHT JOIN

Mệnh đề Joins trong SQL được sử dụng để kết hợp các bản ghi từ hai hoặc nhiều bảng trong một Database. Một JOIN là một phương tiện để kết hợp các trường từ hai bảng bằng việc sử dụng các giá trị chung của mỗi bảng.

Giả sử có hai bảng, bảng SINHVIEN có các bản ghi sau:

+----+---------+-----+-----------+--------+
| ID |  TEN    | TUOI|  KHOAHOC  | HOCPHI |
+----+---------+-----+-----------+---------+
|  1 | Hoang   |  21 | CNTT      | 4000000     |
|  2 | Viet    |  19 | DTVT      | 3000000     |
|  3 | Thanh   |  18 | KTDN      |  4000000    |
|  4 | Nhan    |  19 | CK        |   4500000   |
|  5 | Huong   |  20 | TCNH      |   5000000   |
+----+---------+-----+-----------+---------+

Bảng MUONSACH có các bản ghi sau:

+-----+---------------------+-------------+--------+
|STT  | NGAY                | SINHVIEN_ID | SOTIEN |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 |           3 |   320 |
| 100 | 2009-10-08 00:00:00 |           3 |   250 |
| 101 | 2009-11-20 00:00:00 |           2 |   280 |
| 103 | 2008-05-20 00:00:00 |           4 |   290 |
+-----+---------------------+-------------+--------+

Bây giờ, chúng ta kết hợp hai bảng này trong lệnh SELECT như sau:

SELECT ID, TEN, TUOI, SOTIEN
        FROM SINHVIEN, MUONSACH
        WHERE  SINHVIEN.ID = MUONSACH.SINHVIEN_ID;

Ví dụ trên sẽ cho kết quả:

+----+----------+-----+--------+
| ID | TEN     | TUOI | SOTIEN |
+----+----------+-----+--------+
|  3 | Thanh  |  18 |   320 |
|  3 | Thanh  |  18 |   250 |
|  2 | Viet   |  19 |   280 |
|  4 | Nhan   |  19 |   290 |
+----+----------+-----+--------+

Trong SQL, có một số loại JOIN có sẵn là:

  • INNER JOIN trong SQL: Trả về các hàng khi có một so khớp (match) trong các bảng.

  • LEFT JOIN trong SQL: Trả về tất cả các hàng từ bảng bên trái, ngay cả khi không có so khớp nào trong bảng bên phải.

  • RIGHT JOIN trong SQL: Trả về tất cả các hàng từ bảng bên phải, ngay cả khi không có so khớp nào trong bảng bên trái.

  • FULL JOIN trong SQL: Trả về các hàng khi có một so khớp ở một trong các bảng.

  • SELF JOIN trong SQL: Được sử dụng để kết hợp một bảng với chính nó, khi nếu table đó là hai bảng dữ liệu, thay tên tạm thời cho ít nhất một bảng trong lệnh SQL.

  • CARTESIAN JOIN trong SQL: Trả về tích Đề-các của tập hợp các bản ghi từ hai hoặc nhiều bảng kết hợp.

Trên đây là một số mệnh đề truy vấn cơ bản thường dùng trong SQL cần thiết mà Tester nên biết và sử dụng thành thạo chúng.Nó sẽ giúp ích rất nhiều cho việc kiểm thử trở nên hiệu quả và dễ dàng hơn. Ngoài ra còn rất nhiều mệnh đề khác nâng cao có thể tìm hiểu thêm trên trang chủ của SQL.

https://mariadb.com/kb/vi/basic-sql-statements/ https://www.w3schools.com/sql/sql_where.asp https://www.tutorialspoint.com/sql/sql-where-clause.htm

0