12/08/2018, 16:02

Các lý do nên học SQL và các câu hỏi thường gặp về SQL dành cho tester

Khi đi ứng tuyển vào các vị trí lập trình viên, tester, QA, BA,... thì việc nắm vững được ngôn ngữ truy vấn cấu trúc SQL luôn là một kỹ năng quan trọng mà nhà tuyển dụng muốn ứng viên có được. Vậy thì ngôn ngữ SQL là gì và tại sao nó lại quan trọng đến vậy? Và các câu hỏi thường gặp dành cho ...

Khi đi ứng tuyển vào các vị trí lập trình viên, tester, QA, BA,... thì việc nắm vững được ngôn ngữ truy vấn cấu trúc SQL luôn là một kỹ năng quan trọng mà nhà tuyển dụng muốn ứng viên có được.

Vậy thì ngôn ngữ SQL là gì và tại sao nó lại quan trọng đến vậy? Và các câu hỏi thường gặp dành cho tester là gì?

Khái niệm: Ngôn ngữ truy vấn có cấu trúc SQL (Structured Query Language) là một loại ngôn ngữ máy tính phổ biến để tạo, chỉnh sửa, truy vấn và xóa dữ liệu. Nói một cách đơn giản SQL là ngôn ngữ dùng để quản lý dữ liệu. Nó được dùng trong gần như tất cả các ứng dụng cần lưu dữ liệu của người dùng.

Một số ứng dụng đơn giản có thể lưu dữ liệu trên một file đơn giản và khi cần lấy dữ liệu thì lập trình viên có thể đọc từ nội dung của file đó. Ví dụ một file chứa danh sách tên của người dùng có thể được lưu với nội dung như sau:

Nguyễn Văn A  
Phùng Văn B    
Lê Văn C   
Phan Văn D
  • Tuy nhiên, hình thức này chỉ thích hợp cho các ứng dụng vô cùng đơn giản và tỏ ra kém hiệu quả , còn với các ứng dụng đòi hỏi lưu nhiều hơn một trường dữ liệu như trường hợp trên (ví dụ: ngoài lưu họ tên thì cần lưu cả tuổi, giới tính, email, số điện thoại của người dùng).

  • SQL hỗ trợ việc lưu các thông tin phức tạp bằng cách đưa các thông tin này về một dàng cấu trúc thống nhất, rõ ràng và dễ hiểu.

  • Tuy nhiên SQL không dừng lại ở việc hỗ trợ lưu các thông tin phức tạp, còn rất nhiều tính năng khác khiến SQL trở thành ngôn ngữ đáng học cho bất cứ ai làm trong ngành lập trình.

1. Dữ liệu có ở mọi lúc mọi nơi

  • Dữ liệu tồn tại ở hầu như mọi ứng dụng bạn tìm thấy trên internet. Ngay cả các ứng dụng desktop, laptop và mobile cũng cần phải lưu dữ liệu.
  • Khi bạn đăng ký tài khoản trên ứng dụng, bạn đang cung cấp thông tin cho ứng dụng.
  • Khi chơi một game mobile, dù bạn nhận ra hay không bạn đang tương tác với thông tin lưu của game đó.

2. Thêm, sửa, xóa, đọc dữ liệu dễ dàng

Với SQL, việc ta muốn thêm, sửa, đọc hay xóa dữ liệu trở lên dễ dàng hơn bao giờ hết. Ví dụ, nếu ta muốn lấy thông tin người dùng với email chứa gmail trong đó bạn có thể chạy một câu lệnh duy nhất sau với MySQL:

mysql> Select * From users Where email like '%gmail%'

Thử tưởng tượng việc này sẽ khó khăn như thế nào nếu như bạn phải dùng một ngôn ngữ lập trình thông thường để đọc toàn bộ nội dung file và tìm ra dòng chữ có chứa 'gmail' trong đó.

Tuy nhiên, SQL không chỉ giới hạn ở việc Thêm, Sửa, Truy Vấn và Xóa dữ liệu.

3. SQL Giúp công việc lập trình trở nên dễ dàng hơn

  • Thử tưởng tượng trong ứng dụng của bạn có rất nhiều loại thông tin cần lưu và bạn quyết định sử dụng nhiều file để lưu mỗi loại dữ liệu.
  • Tuy nhiên việc này lại khiến cho việc đọc dữ liệu trở lên phân tán và quy trình maintain không dễ dàng chút nào. Ngoài ra nếu bạn có nhiều ứng dụng khác nhau cần lưu thông tin thì việc quản lý dữ liệu lại càng trở lên khó khăn.

Với SQL, bạn có thể lưu nhiều dữ liệu cho nhiều ứng dụng khác nhau trên cũng một cơ sở dữ liệu và việc truy cập các cơ sở dữ liệu này trở lên đơn giản hơn nhờ một cách thức giống nhau đối với nhiều cơ sở dữ liệu.

4. SQL được sử dụng và hỗ trợ từ nhiều công ty lớn

  • Mặc dù SQL là ngôn ngữ khá đơn giản, nhưng nắm vững được nó là một kỹ năng là một điều vô cùng cần thiết. Tất cả các công ty lớn về công nghệ trên thế giới hiện nay như Microsoft, IBM, Oracle... đều hỗ trợ việc phát triển ngôn ngữ này và SQL được rất nhiều công ty lớn sử dụng.

Và sau đây là những câu hỏi kèm theo câu trả lời phổ biến và hữu ích nhất sẽ giúp bạn tự tin tham gia một cuộc phỏng vấn.

Sau đây tôi sẽ liệt kê 50 câu hỏi phỏng vấn SQL phổ biến và hữu ích nhất dành cho các tester, để bạn có thể chuẩn bị cho cuộc phỏng vấn trong khi học SQL.

Các câu hỏi phỏng vấn đơn giản về SQL & Câu trả lời

STT Câu hỏi Câu trả lời
1 SQL là gì? SQL là viết tắt của Structured Query Language - 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 dùng để tạo, xóa, lấy các hàng và sửa đổi các hàng.
2 Làm thế nào để chọn tất cả bản ghi từ table? Sử dụng cú pháp sau: Select * from table_name;
3 Định nghĩa JOIN và các loại JOIN khác nhau? Từ khóa JOIN được sử dụng để nạp dữ liệu từ hai hay nhiều bảng liên quan. Khi cần truy vấn các cột dữ liệu từ nhiều bảng khác nhau để trả về trong cùng một tập kết quả, cần sử dụng từ khóa "JOIN"
Loại JOIN là -
INNER JOIN (Hoặc JOIN)
LEFT OUTER JOIN (Hoặc LEFT JOIN)
RIGHT OUTER JOIN (Hoặc RIGHT JOIN)
FULL OUTER JOIN (Hoặc OUTER JOIN)
CROSS JOIN
SELF JOIN
4 Cú pháp để thêm bản ghi vào một bảng là gì? Để thêm bản ghi trong một bảng cú pháp INSERT được sử dụng.
Ví dụ:INSERT into table_name VALUES (value1, value2..);
5 Làm thế nào để bạn thêm một cột vào một bảng? Để thêm một cột khác trong bảng sử dụng lệnh.
ALTER TABLE table_name ADD (column_name);
6 Xác định câu lệnh Delete SQL. Xóa được sử dụng để xóa hàng hoặc các hàng từ một bảng dựa trên điều kiện được chỉ định. Cú pháp cơ bản như sau:
DELETE FROM table_name<br>WHERE<Condition>
7 Xác định COMMIT? COMMIT lưu tất cả các thay đổi được thực hiện bởi các câu lệnh DML.
DML cho phép thực thi các câu truy vấn, bao gồm cú pháp để cập nhật – sửa đổi, chèn thêm và xoá các mẩu tin.
8 Khóa chính (PRIMARY KEY )là gì? Khóa chính là cột có các giá trị xác định duy nhất mỗi hàng trong một bảng. Giá trị khóa chính không bao giờ được sử dụng lại.
Một cột là PRIMARY KEY thì không được phép có giá trị NULL.
Một bảng chỉ cho phép tối đa một PRIMARY KEY.
Mỗi bảng đều cần có khóa chính.
9 Khóa ngoại (Foreign key) là gì? Khi một trường khoá chính của một bảng được thêm vào các bảng có liên quan để tạo ra trường phổ biến có liên quan đến hai bảng, nó được gọi là khoá ngoại trong các bảng khác. Các ràng buộc khóa ngoại thực thi toàn vẹn tham chiếu.
10 CHECK Constraint - Ràng buộc CHECK là gì? Một ràng buộc CHECK được sử dụng để giới hạn các giá trị hoặc loại dữ liệu có thể được lưu trữ trong một cột. Nếu bản ghi không đáp ứng được điều kiện này, thì sẽ không được lưu trữ vào trong bảng.
11 Một bảng có thể có nhiều hơn một khoá ngoại? Đúng, một bảng có thể có nhiều khóa ngoài và chỉ có một khóa chính.
12 Trường dữ liệu BOOLEAN có giá trị nào? Đối với trường dữ liệu BOOLEAN, có hai giá trị: -1 (TRUE) và 0 (FALSE).
13 Thủ tục lưu trữ (stored procedure) là gì? Một thủ tục lưu trữ là một tập hợp các truy vấn SQL có thể lấy đầu vào và gửi lại đầu ra.
14 IDENTITY trong SQL là gì? Một cột IDENTITY trong SQL sẽ tự động sinh ra các giá trị số tự tăng. Có thể định nghĩa giá trị bắt đầu và gia tăng của cột nhận dạng.
15 NORMALIZATION - Chuẩn hóa là gì? Quá trình thiết kế bảng để giảm thiểu sự thừa số liệu được gọi là chuẩn hóa. Chúng ta cần phải chia một cơ sở dữ liệu thành hai hay nhiều bảng và xác định các mối quan hệ giữa chúng.
16 Trigger là gì ? Trigger là một thủ tục dược thực thi từ phía máy chủ CSDL khi một sự kiện bảng xảy ra (Chèn, cập nhật hoặc xóa lệnh thực hiện đối với một bảng cụ thể) .
17 Làm thế nào để lấy ra các hàng ngẫu nhiên từ một bảng? Sử dụng mệnh đề SAMPLE chúng ta có thể chọn các hàng ngẫu nhiên.
Ví dụ:
SELECT * FROM table_name SAMPLE (10);
18 Cổng TCP / IP nào mà SQL Server chạy? Mặc định SQL Server chạy trên cổng 1433.
19 Viết một truy vấn SELECT SQL mà trả về mỗi bản ghi chỉ một lần từ một bảng? Để có được mỗi tên một lần duy nhất, chúng ta cần phải sử dụng từ khoá DISTINCT.
SELECT DISTINCT name FROM table_name;
20 DML và DDL là gì? DML là viết tắt của Ngôn ngữ Thao tác Dữ liệu ( Data Manipulation Language): INSERT, UPDATE và DELETE là các câu lệnh DML.
DDL là viết tắt của Ngôn ngữ Định nghĩa Dữ liệu (Data Definition Language): CREATE, ALTER, DROP, RENAME là các câu lệnh DDL.
21 Lệnh nào để đổi tên một cột trong đầu ra của truy vấn SQL? Có sử dụng cú pháp sau đây.:
SELECT column_name AS new_name FROM table_name;
22 Thứ tự của SQL SELECT? Thứ tự các mệnh đề SQL SELECT là: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY. Trong đó SELECT và FROM là bắt buộc.
23 Giả sử một cột Student có hai cột, Name và Marks. Làm thế nào để có được Name và Marks của ba sinh viên top đầu.
SELECT Name, Marks FROM Student s1 where 3 <= (SELECT COUNT(*) FROM Students s2 WHERE s1.marks = s2.marks)
24 SQL comments là gì? Khi muốn ghi chú thích vào câu truy vấn SQL, để làm cho câu truy vấn ấy trở nên rõ ràng và dễ hiểu hơn, thì sử dụng SQL comment.
SQL comments có thể được đặt bởi hai dấu nối liên tiếp (-) hoặc /* .... */
Khi câu truy vấn được thực thi thì trình biên dịch sẽ tự động bỏ qua những dòng có comment.
25 Sự khác biệt giữa các lệnh TRUNCATE, DELETEDROP? DELETE xóa một hoặc tất cả các hàng từ một bảng dựa trên điều kiện và có thể được phục hồi lại.
TRUNCATE xóa tất cả các hàng từ một bảng bằng cách phân bổ các trang bộ nhớ và không thể phục hồi lại
DROP xóa hoàn toàn một bảng từ cơ sở dữ liệu.
26 Các thuộc tính của một giao dịch là gì? Nói chung các thuộc tính này được gọi là thuộc tính ACID bao gồm:
Tính nguyên tử (Atomicity)
Tính nhất quán (Consistency)
Cô lập (Isolation)
Độ bền (Durability).
27 ROWID nghĩa là gì? Đó là một cột giả dài 18 ký tự gắn liền với mỗi hàng của một bảng.
28 Xác định UNION, MINUS, UNION ALL, INTERSECT? MINUS - sử dụng để kết hợp 2 câu lệnh SELECT, nó trả về tất cả các bản ghi chỉ thuộc vào bảng của câu truy vấn SELECT đầu tiên, những bản ghi giao nhau và những bản ghi của câu truy vấn SELECT thứ 2 thì không được lấy vào kết quả..
UNION - Bạn viết hai hay nhiều câu truy vấn SELECT khác nhau nhưng bạn muốn nó trả về một danh sách kết quả duy nhất thì bạn phải sử dụng toán tử UNION
UNION ALL - trả về tất cả các hàng được chọn bởi một trong hai truy vấn, giữ lại các kết quả trùng
INTERSECT - lấy ra những bản ghi nào mà nó hiện diện ở trong cả 2 bảng (có trong bảng này và cũng có trong bảng kia)
29 Giao dịch ( transaction) là gì? Một giao dịch là một dãy mã chạy trên cơ sở dữ liệu. Cần có cơ sở dữ liệu từ một trạng thái nhất quán sang trạng thái khác.
30 Sự khác nhau giữa UNIQUEPRIMARY KEY constraints là gì? Một bảng có thể chỉ có một PRIMARY KEY và có thể không có hoặc có mộ hay nhiều UNIQUE keys.
PRIMARY KEY không thể chứa giá trị Null , UNIQUE có thể chứa giá trị Null.
31 Khóa tổng hợp (Composite primary key) là gì? Khóa chính được tạo trên nhiều cột được gọi là khóa chính tổng hợp.
32 Index là gì? Index (Chỉ mục) là bảng tra cứu đặc biệt mà Database Search Engine có thể sử dụng để tăng nhanh thời gian và hiệu suất thực hiện các truy vấn.
Index có thể được tạo ra trên một hoặc nhiều cột của một bảng.
33 Subquery là gì? Truy vấn con (còn được gọi truy vấn phụ hay truy vấn lồng nhau) là một truy vấn bên trong truy vấn SQL khác và được nhúng bên trong mệnh đề WHERE.
34 Tối ưu hoá truy vấn là gì? Tối ưu hóa truy vấn là một quá trình trong đó hệ thống cơ sở dữ liệu so sánh các chiến lược truy vấn khác nhau và chọn truy vấn với chi phí thấp nhất.
35 Collation là gì? Bộ quy tắc định nghĩa cách dữ liệu được lưu trữ, cách phân biệt chữ hoa chữ thường và ký tự Kana có thể được xử lý như thế nào.
36 Tính toàn vẹn tham chiếu là gì? Tập các quy tắc hạn chế các giá trị của một hoặc nhiều cột của các bảng dựa trên các giá trị của khóa chính hoặc khóa duy nhất của bảng tham chiếu.
37 Hàm Case là gì? Trường hợp tạo điều kiện logic kiểu if-then-else trong SQL. Nó đánh giá một danh sách các điều kiện và trả về một trong nhiều biểu thức kết quả tốt.
38 Xác định một bảng tạm thời? Một bảng tạm là một cấu trúc lưu trữ tạm thời để lưu trữ dữ liệu tạm thời.
39 Làm thế nào chúng ta có thể tránh trùng lặp hồ sơ trong một truy vấn? Bằng cách sử dụng từ khoá DISTINCT sao chép hồ sơ trong một truy vấn có thể tránh được.
40 Giải thích sự khác nhau giữa Đổi tên (Rename) và Bí danh (Alias)? Đổi tên là một tên thường xuyên cho một bảng hoặc cột
Bí danh là tên tạm thời cho một bảng hoặc cột.
41 View là gì? Một khung nhìn là một bảng ảo chứa dữ liệu từ một hoặc nhiều bảng. Lượt xem hạn chế quyền truy cập dữ liệu của bảng bằng cách chỉ chọn các giá trị được yêu cầu và thực hiện các truy vấn phức tạp một cách dễ dàng.
42 Lợi ích của Views là gì? Ưu điểm của Views:
Chế độ xem hạn chế quyền truy cập vào dữ liệu vì chế độ xem có thể hiển thị các cột được chọn từ bảng.
Có thể sử dụng chế độ xem để truy vấn các kết quả tìm kiếm phức tạp. Ví dụ: chế độ xem có thể được sử dụng để truy vấn thông tin từ nhiều bảng mà không có sự hiểu biết của người dùng.
43 Liệt kê các đặc quyền khác nhau mà người dùng có thể cấp cho người dùng khác? SELECT, CONNECT, RESOURCES.
44 Schema là gì? Lược đồ là tập hợp các đối tượng cơ sở dữ liệu của Người dùng.
45 Bảng là gì? Một bảng là đơn vị cơ bản của lưu trữ dữ liệu trong hệ thống quản lý cơ sở dữ liệu. Dữ liệu bảng được lưu trữ trong hàng và cột.
46 Chế độ xem (View) có chứa dữ liệu không? Không, View là cấu trúc ảo.
47 Chế độ xem có thể dựa trên chế độ xem khác không? Chế độ xem dựa trên một Chế độ xem khác.
48 Sự khác biệt giữa mệnh đề Having và mệnh đề Where? Cả hai đều chỉ định điều kiện tìm kiếm nhưng mệnh đề Having chỉ được sử dụng với câu lệnh SELECT và thường được sử dụng với mệnh đề GROUP BY. Nếu mệnh đề GROUP BY không được sử dụng thì Havingn sử dụng giống như mệnh đề WHERE.
49 Sự khác nhau giữa bảng tạm cục bộ (Local)bảng tạm toàn cầu (Global) là gì? Nếu được định nghĩa bên trong câu lệnh hợp chất,
Một bảng tạm thời cục bộ tồn tại trong 1 kết nối. Khi kết thúc kết nối thì bảng tạm này sẽ tự động được xóa. Tên của bảng tạm kiểu Local được bắt đầu bằng ký tử #
Một bảng tạm thời toàn cầu tồn tại vĩnh viễn trong db nhưng các hàng của nó biến mất khi kết nối được đóng lại. Tên bảng tạm kiểu Global được bắt đầu bằng ##.
50 CTE là gì? Biểu thức bảng CTE ( Common Table Expression) hoặc bảng chung là một biểu thức có chứa tập kết quả tạm thời được định nghĩa trong câu lệnh SQL.
  • Đây là một số lý do cơ bản mà bạn nên tìm hiểu về SQL, trên thực tế sẽ còn có rất nhiều lý do khác nữa có thể liệt kê thêm.
  • Và trên đây là một số câu hỏi thường gặp. Hy vọng bài viết này sẽ giúp bạn tìm thấy câu trả lời cho hầu hết các câu hỏi phỏng vấn SQL giành cho tester. Các kiến thức về SQL là thông dụng cho bất kỳ tester nào và bài viết này sẽ giúp bạn chuẩn bị câu hỏi SQL cho cuộc phỏng vấn.

http://www.softwaretestinghelp.com/50-popular-sql-interview-questions-for-testers/ http://sqladvice.com/5-ly-do-ban-nen-hoc-sql/

0