Uploaded by Long Nguyen

50 câu Q&A thường gặp về SQL dành cho Tester - Phần 1 - Viblo

17/10/2018
50 câu Q&A thường gặp về SQL dành cho Tester - Phần 1 - Viblo
Search Viblo
Tran Le Khuyen @Tran.Le.Khuyen
 2K
 108
Follow
 20


 Sign In/Sign up
Published Mar 25th, 2017 7:17 PM
 8.6K  2
 25
50 câu Q&A thường gặp về SQL dành cho Tester Phần 1
QA
SQL

Testing
Trong bài viết này, chúng ta sẽ liệt kê 28/50 câu hỏi phổ biến nhất thường gặp khi phỏng vấn Testers. Đâ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.
Q#1. SQL là gì? Trả lời: SQL là viết tắt của cụm từ "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, … Tất cả hệ quản trị cơ sở dữ liệu
(Database Management System - DBMS) như MySQL, Oracle, MS Access, Sybase, Informix, Postgres và SQL Server
đều sử dụng SQL như là ngôn ngữ cơ sở dữ liệu chuẩn.
Q#2. Làm thế nào để lấy được tất cả các bản ghi trong một bảng xác định? Trả lời: Để lấy được tất cả các bản
ghi từ một bảng, chúng ta cần sử dụng câu lệnh dưới đây:
Select * from table_name;
Q#3. Định nghĩa từ khóa "JOIN" và các loại "JOIN" khác nhau? Trả lời: Từ khóa "JOIN" được sử dụng để lấy dữ
liệu từ 2 hay nhiều bảng liên quan. Đây là phép kết hợp các dòng dữ liệu từ nhiều bảng lại với nhau. Khi bạn 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ả, bạn cần dùng từ khóa
"JOIN". Các loại JOIN :
INNER JOIN (Hoặc JOIN)
LEFT OUTER JOIN (Hoặc LEFT JOIN)
 +21 
https://viblo.asia/p/50-cau-qa-thuong-gap-ve-sql-danh-cho-tester-phan-1-ByEZk7axZQ0

•

•  • 
1/7
17/10/2018
50 câu Q&A thường gặp về SQL dành cho Tester - Phần 1 - Viblo
RIGHT OUTER JOIN (Hoặc RIGHT JOIN)
FULL OUTER JOIN (Hoặc OUTER JOIN)
CROSS JOIN
SELF JOIN
Q#4. Dùng cú pháp nào để thêm bản ghi vào một bảng? Trả lời: Để thêm bản ghi vào một bảng, sử dụng câu
lệnh INSERT theo cú pháp sau:
INSERT into table_name VALUES (value1, value2..);
Q#5. Bạn thêm một cột vào bảng như thế nào? Trả lời: Để thêm một cột vào trong bảng thì câu lệnh dưới đây
được sử dụng:
ALTER TABLE table_name ADD (column_name);
Q#6. Định nghĩa câu lệnh SQL Delete. Trả lời: Câu lệnh "DELETE" được sử dụng để xóa một dòng hoặc nhiều
dòng từ một bảng dựa trên những điều kiện do người dùng chỉ định. Cú pháp cơ bản như sau:
DELETE FROM table_name
WHERE <Condition>
Q#7. "COMMIT" trong SQL là gì? Trả lời: "COMMIT" lưu tất cả những thay đổi được thực hiện trong một
transaction. Các thay đổi này được tạo bởi DML (ngôn ngữ thao tác dữ liệu -Data Manipulation Language). 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. Trong SQL
một transaction có đoạn code ở dạng đơn giản như sau:
BEGIN TRAN
-- Lệnh 1
-- Lệnh 2
-- ...
COMMIT
Bạn mở transaction bằng lệnh BEGIN TRAN và kết thúc bằng lệnh COMMIT – sau lệnh này những cập nhật dữ liệu
sẽ được xác nhận vào trong database, transaction được đóng lại và các khóa (lock) trên các bảng được cập nhật
được thả ra.
Q#8. Primary key là gì? Trả lời: Một PRIMARY KEY- Khóa chính là một trường trong một bảng mà nhận diện một
cách duy nhất mỗi hàng/bản ghi trong một bảng dữ liệu. Các PRIMARY KEY phải chứa các giá trị duy nhất, không
đượ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
 +21 
https://viblo.asia/p/50-cau-qa-thuong-gap-ve-sql-danh-cho-tester-phan-1-ByEZk7axZQ0

•

•  • 
2/7
17/10/2018
50 câu Q&A thường gặp về SQL dành cho Tester - Phần 1 - Viblo
PRIMARY KEY, bao gồm một trường đơn hay nhiều trường. Mỗi bảng đều cần có khóa chính.
Q#9. Foreign keys là gì? Trả lời: FOREIGN KEY - Khóa ngoại là một trường trong bảng cơ sở dữ liệu, đó là khóa
chính trong một bảng khác được thêm vào tạo ra sự liên quan giữa hai bảng. Trong bảng, giá trị của FOREIGN KEY
có thể chấp nhận giá trị NULL, cũng như các giá trị trùng nhau.
Q#10. CHECK Constraint - Ràng buộc CHECK là gì? Trả lời: Một ràng buộc CHECK được sử dụng để giới hạn các
giá trị hoặc kiểu của dữ liệu có thể nhập và lưu trữ trong một trường của bản ghi. 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.
Q#11. Một bảng có thể có nhiều hơn một khóa ngoại được không? Trả lời: Có, một bảng có thể có nhiều khóa
ngoại và chỉ có một khóa chính.
Q#12. Trường BOOLEAN có thể nhận các giá trị nào. Trả lời: Giá trị của trường BOOLEAN có thể nhận 1 trong 2
giá trị sau: -1(TRUE) và 0(FALSE).
Q#13. STORED PROCEDURE là gì? Trả lời: STORED PROCEDURE là một tập hợp các câu lệnh SQL dùng để thực thi
một nhiệm vụ nhất định. Nó hoạt động giống như một hàm trong các ngôn ngữ lập trình khác. STORED
PROCEDURE là một khái niệm khá phổ biến và được hầu hết các hệ quản trị cơ sở dữ liệu (DBMS) hỗ trợ, tuy nhiên
không phải tất cả đều hỗ trợ STORED PROCEDURE.
Q#14. IDENTITY trong SQL là gì? Trả lời: Một trường IDENTITY trong SQL tự động sinh ra các giá trị số tự tăng.
Chúng ta có thể định nghĩa giá trị bắt đầu và giá trị gia tăng của cột IDENTITY.
Q#15. NORMALIZATION - Chuẩn hóa dữ liệu là gì? Trả lời: Quá trình thiết kế bảng để giảm thiểu sự dư thừa số
liệu, loại bỏ các thay đổi dữ liệu dị thường (update anomaly, insertion anomaly, deletion anomaly) được gọi là quá
trình chuẩn hóa dữ liệu. Để thực hiện quá trình này, 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.
Q#16. TRIGGER là gì? Trả lời: TRIGGER được hiểu đơn giản là một thủ tục (một tập các câu lệnh SQL được lưu trữ
trong CSDL) được thực thi từ phía máy chủ cơ sở dữ liệu (CSDL) khi có một sự kiện xảy ra như Update, Insert hay
Delete. TRIGGER thường dùng để kiểm ra các ràng buộc toàn vẹn trên CSDL, và chúng được thực thi một cách tự
động mà không cần sự can thiệp bằng các thao tác thủ công như kiểm tra dữ liệu, đồng bộ hóa dữ liệu,…
Q#17. Làm thế nào để lấy ra được các dòng ngẫu nhiên từ một bảng? Trả lời: Sử dụng mệnh đề SAMPLE chúng
ta có thể lấy được các dòng ngẫu nhiên. Ví dụ:
SELECT * FROM table_name SAMPLE(10);
 +21 
https://viblo.asia/p/50-cau-qa-thuong-gap-ve-sql-danh-cho-tester-phan-1-ByEZk7axZQ0

•

•  • 
3/7
17/10/2018
50 câu Q&A thường gặp về SQL dành cho Tester - Phần 1 - Viblo
Q#18. SQL Server chạy cổng TCP / IP nào? Trả lời: SQL Server mặc định chạy trên cổng 1433.
Q#19. Viết một câu lệnh SQL SELECT mà trả về mỗi bản ghi chỉ một lần từ một bảng? Trả lời: Để lấy mỗi bản
ghi chỉ một lần, chúng ta cần sử dụng từ khóa DISTINCT. Từ khóa DISTINCT trong SQL được sử dụng kết hợp với
lệnh SELECT để loại tất cả các bản sao của bản ghi và chỉ lấy các bản ghi duy nhất. Có thể có trường hợp xuất hiện
nhiều bản sao của bản ghi trong một bảng. Trong khi lấy các bản ghi này, chỉ lấy bản ghi duy nhất thay vì lấy nhiều
bản sao của bản ghi đó.
SELECT DISTINCT name FROM table_name;
Q#20. Giải thích DML và DDL? Trả lời:
DML là viết tắt của "Data Manipulation Language" - Ngôn ngữ thao tác dữ liệu: 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. INSERT, UPDATE và DELETE là các
câu lệnh DML.
DDL viết tắt cho "Data De nition Language" - Ngôn ngữ định nghĩa dữ liệu: dùng để định nghĩa cấu trúc của cơ
sở dữ liệu, bao gồm định nghĩa các hàng, các cột, các bảng dữ liệu, các chỉ số và một số thuộc tính khác liên
quan đến cơ sở dữ liệu như vị trí của le và là thành phần chính trong các hệ quản lý dữ liệu và có sự khác biệt
rất nhiều giữa các ngôn ngữ truy vấn trên các hệ khác nhau. CREATE, ALTER, DROP, RENAME là các câu lệnh
DDL.
Q#21. Chúng ta có thể đổi tên một cột trong đầu ra của SQL query được không? Trả lời: Có. Có thể dùng câu
lệnh sau để làm việc này:
SELECT column_name AS new_name FROM table_name;
Q#22. Thứ tự của các mệnh đề trong câu lệnh SQL SELECT như thế nào? Trả lời: Thứ tự các mệnh đề SQL
SELECT là: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY. Trong đó chỉ có điều khoản SELECT và FROM là
bắt buộc phải có, các mệnh đề khác có thể có hoặc không.
Q#23. Giả sử một bảng Student có hai cột, Name and Marks. Làm thế nào để có được tên và điểm của ba
sinh viên top đầu Trả lời:
 +21 
https://viblo.asia/p/50-cau-qa-thuong-gap-ve-sql-danh-cho-tester-phan-1-ByEZk7axZQ0

•

•  • 
4/7
17/10/2018
50 câu Q&A thường gặp về SQL dành cho Tester - Phần 1 - Viblo
SELECT Name, Marks FROM Student s1 where 3 <= (SELECT COUNT(*) FROM Students s2 WHERE s1.marks = s2.marks)
Q#24. SQL comments là gì? Trả lời: Đôi khi bạn muốn ghi chú thích vào câu truy vấn SQL của bạn, để làm cho câu
truy vấn ấy trở nên rõ ràng và dễ hiểu hơn, khi ấy bạn sử dụng SQL comment.
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. Vì thế chương trình
sẽ không có lỗi.
Có 2 cách để tạo SQL comments:
Sử dụng 2 dấu gạch ngang liên tiếp (–): đây là comment trên một dòng, tức chỉ có hiệu lực 1 trên dòng mà bạn
đặt comment này, được tính từ sau 2 dấu gạch cho đến cuối dòng. Khi bạn đặt dấu comment vào dòng nào,
thì ngay lập tức dòng đó sẽ bị chuyển thành màu xanh lá (green), đó là dấu hiệu để nhận biết dòng lệnh của
bạn đã bị comment (và trình biên dịch sẽ bỏ qua dòng này, tính từ sau 2 dấu gạch)
-- text_of_comment
Sử dụng cú pháp /*…*/: đây là comment dành cho một khối lệnh (có thể nhiều hơn một dòng). Trong dấu … là
phần bạn muốn comment. Cũng tương tự như 2 dấu gạch, những dòng comment cũng sẽ chuyển sang màu
xanh lá và trình biên dịch tự động bỏ qua trong lúc thực thi.
/*
text_of_comment 1
text_of_comment 2
text_of_comment 3
...
*/
Q#25. Sự khác nhau giữa các câu lệnh TRUNCATE, DELETE và DROP? Trả lời:
Lệnh DELETE có tác dụng xóa một số hoặc tất cả các hàng từ một bảng dựa trên những điều kiện được chỉ
định. Các bản ghi này cũng có thể được phục hồi lại (Roll back).
Lệnh TRUNCATE xóa toàn bộ các bản ghỉ từ bảng bằng cách phân chia lại bộ nhớ các trang. Xử lý này không
thể được phục hồi.
Lệnh DROP xóa hoàn toàn một bảng từ cơ sở dữ liệu.
Q#26. Các thuộc tính của một giao dịch là gì? Trả lời: Nói chung các thuộc tính này được gọi là các thuộc tính
ACID. Chúng bao gồm:
Atomicity - Tính nguyên tử
Consistency - Tính nhất quán
Isolation - Cô lập
Durability - Độ bền
 +21 
https://viblo.asia/p/50-cau-qa-thuong-gap-ve-sql-danh-cho-tester-phan-1-ByEZk7axZQ0

•

•  • 
5/7
17/10/2018
50 câu Q&A thường gặp về SQL dành cho Tester - Phần 1 - Viblo
Q#27. ROWID được hiểu là gì? Trả lời: Đó là một cột giả trong bảng CSDL, bao gồm 18 ký tự cho biết địa chỉ của
mỗi dòng trong Cơ sở dữ liệu: Thông thường, ROWID xác định mỗi một row riêng biệt trong table (trừ trường hợp
cluster table), ghi lại cách thức tổ chức dữ liệu và là cách truy cập dữ liệu nhanh nhất có thể. ROWID gồm
block.row. le, trong đó:
block : chuỗi hệ hexa cho biết block chứa row
row : chuỗi hệ hexa cho biết row trong block
le : chuỗi hệ hexa cho biết database le chứa block
Ví dụ:
0000000F.0000.0002 ==> Được hiểu là row đầu tiên trong block 15 của data file thứ hai.
Những câu hỏi tiếp theo sẽ được trình bày trong một bài viết khác. Chúc các bạn học SQL thật vui ^^
Bài viết tham khảo từ nguồn: http://www.softwaretestinghelp.com/50-popular-sql-interview-questions-for-testers/
 

Related
Sự khác nhau cơ bản giữa MySql và SqlServer
Quy trình kiểm thử phần mềm - Software testing life c…
Phạm Anh Tuấn
Han Sora
 954
4
8 
 10
 827
1
6 
6
Thực tế ảo VR và thực tế ảo tăng cường AR
Con đường sự nghiệp của một Tester
Dinh Thi Huyen Trang
ThaoLTP
 630
1
0 
0
 570
2
0 
1
More from Tran Le Khuyen
Kiến thức cơ bản trong kiểm thử các ứng dụng ngân h…
Một số điểm cần lưu ý khi test website thương mại đi…
Tran Le Khuyen
Tran Le Khuyen
 259
1
0 
2
 1023
3
0 
2
Làm sao để lựa chọn kỹ thuật test hiệu quả nhất?
Danh sách 10 yếu tố cần quan tâm khi test nội dung …
Tran Le Khuyen
Tran Le Khuyen
 1313
0
0 
2
 1018
4
0 
5
Comments
 Login to comment
Cùi Bắp @euclid
Jun 12th, 2017 11:37 AM
Bài viết rất chi tiết cho người mới bắt đầu +1
 +21 
0 
| Reply
share 
https://viblo.asia/p/50-cau-qa-thuong-gap-ve-sql-danh-cho-tester-phan-1-ByEZk7axZQ0

•

•  • 
6/7
17/10/2018
50 câu Q&A thường gặp về SQL dành cho Tester - Phần 1 - Viblo
Red Devil @manhtqb
Aug 11th, 2017 10:59 AM 
Bài viết rất hay ! Các câu có vẻ đơn giản nhưng không chỉ tester, kể cả dev đôi khi cũng phải google để viết chính xác =))
 0  | Reply
share 
RESOURCES
LINKS
Posts
Questions

Facebook
Videos
Tags

GitHub
Authors
Discussions

Browser extension
Tools
Machine Learning
MOBILE APP
Atom plugin
© 2018 Viblo. All rights reserved.
 +21 
https://viblo.asia/p/50-cau-qa-thuong-gap-ve-sql-danh-cho-tester-phan-1-ByEZk7axZQ0
Feedback
Help

FAQs
•

Terms
•  • 
7/7