Ngày cập nhật 2024-12-22 11:07:56

Bộ câu hỏi phỏng vấn SQL phổ biến, được dùng nhiều

Bộ câu hỏi phỏng vấn SQL - Structured Query Language thường gặp giúp bạn nắm vững các kiến thức, kỹ năng và tự tin cho buổi phỏng vấn xin việc. Bên cạnh kinh nghiệm làm việc, chuyên môn SQL, cách trả lời phỏng vấn thông minh, khôn khéo cũng là yếu tố quyết định một buổi phỏng vấn thành công. Cùng Tanca tham khảo bộ câu hỏi sau để giúp bạn chinh phục các nhà tuyển dụng.

SQL là gì?

SQL la gi

SQL là viết tắt của cụm từ Structured Query Language - đây là ngôn ngữ truy vấn có cấu trúc thường được sử dụng trong lập trình. SQL được thiết kế cho mục đích quản lý dữ liệu được lưu trữ trong RDBMS (hệ thống quản lý cơ sở dữ liệu quan hệ).  Hoặc để xử lý luồng trong hệ thống quản lý luồng dữ liệu quan hệ (RDSMS).

Chức năng chính của SQL thường là tạo, xóa hoặc sửa đổi các bảng. SQL là một tiêu chuẩn ANSI (Viện Tiêu chuẩn Quốc gia Hoa Kỳ). Bản thân SQL không phải là ngôn ngữ lập trình. Nhưng tiêu chuẩn cho SQL có thể được mở rộng thành ngôn ngữ lập trình. Đó là lý do tại sao một số người vẫn coi SQL là ngôn ngữ lập trình.

Xem thêm: Bộ câu hỏi phỏng vấn C++

Bộ câu hỏi phỏng vấn SQL

Khi phỏng vấn xin việc vị trí liên quan SQL, các nhà tuyển dụng thường yêu cầu ở ứng viên trình độ chuyên môn cao, kinh nghiệm phong phú. Bên cạnh đó khả năng xử lý vấn đề cũng được đánh giá cao.

Đó là lý do các câu hỏi phỏng vấn SQL thường tập trung chủ yếu vào chuyên môn. Tham khảo ngay những câu hỏi phỏng vấn thường gặp, giúp ứng viên chuẩn bị tốt nhất cho cuộc phỏng vấn sắp tới.

MySQL là gì?

MySQL là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở, được phát triển bởi công ty Thụy Điển MySQL AB và hiện nay thuộc quyền sở hữu của Oracle Corporation.

MySQL sử dụng ngôn ngữ truy vấn cấu trúc (SQL) để truy xuất, thêm, cập nhật và xóa dữ liệu trong cơ sở dữ liệu. MySQL được thiết kế để xử lý các ứng dụng cơ sở dữ liệu lớn, đa người dùng và có độ bảo mật cao.

Nó là một trong những hệ thống quản lý cơ sở dữ liệu phổ biến nhất trên thế giới, được sử dụng trong nhiều ứng dụng web. Điển hình là các nền tảng quản trị nội dung như WordPress, Drupal, và Joomla.

Xem thêm: Bộ câu hỏi phỏng vấn ReactJS

Sự khác biệt giữa SQL và MySQL là gì?

phong van ve SQL

SQL là một ngôn ngữ truy vấn cấu trúc dùng để tương tác với các hệ thống quản lý cơ sở dữ liệu quan hệ, trong khi MySQL là một RDBMS cụ thể sử dụng ngôn ngữ SQL để xử lý dữ liệu.

SQL là một tiêu chuẩn quốc tế được áp dụng cho nhiều hệ thống quản lý cơ sở dữ liệu khác nhau như Oracle, Microsoft SQL Server, PostgreSQL, và SQLite, trong khi MySQL chỉ là một trong số các hệ thống đó.

SQL tập trung vào cú pháp và lệnh để truy vấn và quản lý dữ liệu, trong khi MySQL cung cấp một hệ thống để lưu trữ, xử lý và quản lý dữ liệu dựa trên ngôn ngữ SQL.

SQL có hỗ trợ các tính năng của ngôn ngữ lập trình không?

SQL không thể được sử dụng cho bất kỳ mục đích nào khác ngoài thao tác dữ liệu. Nó là một ngôn ngữ lệnh để thực hiện các hoạt động cơ sở dữ liệu. Mục đích chính của SQL là truy xuất, thao tác, cập nhật, xóa và thực hiện các thao tác phức tạp như nối trên dữ liệu có trong cơ sở dữ liệu.

Các ràng buộc (Constraints) trong SQL là gì?

Các ràng buộc được sử dụng để xác định các quy tắc về dữ liệu. Nó có thể được áp dụng cho một hoặc nhiều trường trong bảng SQL trong hoặc sau khi tạo bảng bằng lệnh ALTER TABLE. Các ràng buộc bao gồm:

  • Not full– Hạn chế chèn giá trị NULL vào 1 cột.
  • Check - Xác minh rằng tất cả các giá trị trong một trường thỏa mãn một điều kiện.
  • Default– Nếu không có giá trị nào được chỉ định cho trường, giá trị mặc định sẽ tự động được chỉ định.
  • Unique– Đảm bảo các giá trị duy nhất được chèn vào trường.
  • Index – Các trường lập chỉ mục để tăng tốc độ truy xuất bản ghi.
  • Primary key – xác định duy nhất từng bản ghi.
  • Foreign key – Đảm bảo tính toàn vẹn tham chiếu của các bản ghi trong một bảng khác.

Hãy liệt kê 4 loại câu lệnh SQL cơ bản?

  • DDL (Data Definition Language) - ngôn ngữ định nghĩa dữ liệu, ví dụ: CREATE, ALTER, DROP.
  • DML (Data Manipulation Language) - thao tác dữ liệu, ví dụ: SELECT, INSERT, UPDATE, DELETE.
  • DCL (Data Control Language) - kiểm soát dữ liệu, ví dụ: GRANT, REVOKE.
  • TCL (Transaction Control Language) - kiểm soát giao dịch, ví dụ: COMMIT, ROLLBACK, SAVEPOINT.

Định nghĩa chỉ mục (index) trong SQL và tại sao chúng lại quan trọng?

Chỉ mục (index) trong SQL là một cấu trúc dữ liệu giúp cải thiện tốc độ truy vấn dữ liệu trong hệ thống cơ sở dữ liệu bằng cách cung cấp một đường dẫn nhanh chóng để tìm kiếm các dòng trên bảng dựa vào giá trị của một hoặc nhiều cột.

Chỉ mục quan trọng vì chúng giúp giảm thời gian truy vấn và tăng hiệu suất của ứng dụng, đặc biệt khi xử lý các bảng lớn.

Xem thêm: Bộ câu hỏi phỏng vấn Android

Khóa chính (Primary Key) là gì - Câu hỏi phỏng vấn SQL nâng cao

phong van SQL nang cao

Khóa chính (Primary Key) trong cơ sở dữ liệu là một cột hoặc một nhóm cột được sử dụng để xác định duy nhất cho mỗi dòng.

Mỗi bảng thường chỉ có một khóa chính. Khóa chính không được phép có giá trị NULL, và giá trị của khóa chính phải là duy nhất. Khóa chính giúp đảm bảo tính nhất quán và tính toàn vẹn của dữ liệu.

Trong quá trình thiết kế cơ sở dữ liệu, việc lựa chọn khóa chính phù hợp rất quan trọng, vì nó ảnh hưởng đến hiệu suất và tính dễ dàng quản lý của cơ sở dữ liệu. Thông thường, khóa chính được chọn dựa trên các thuộc tính sau:

  • Duy nhất: Giá trị của khóa chính phải là duy nhất cho mỗi dòng.
  • Không được NULL: Giá trị của khóa chính không được phép là NULL.
  • Không thay đổi: Giá trị của khóa chính nên ổn định và không thay đổi theo thời gian.
  • Tối giản: Nên chọn khóa chính với ít cột nhất có thể, để giảm độ phức tạp của cấu trúc dữ liệu.

Trong trường hợp không có cột nào thỏa mãn các yêu cầu trên, bạn có thể tạo một cột ID tự động tăng (auto-increment) làm khóa chính.

Sự khác biệt giữa Union và Union All?

  • UNION: Kết hợp kết quả của hai hoặc nhiều câu SELECT thành một tập hợp kết quả duy nhất, loại bỏ các dòng trùng lặp.
  • UNION All: Kết hợp kết quả của hai hoặc nhiều câu SELECT thành một tập hợp kết quả duy nhất, không loại bỏ các dòng trùng lặp. UNION ALL thường nhanh hơn UNION do không cần thực hiện việc loại bỏ dòng trùng lặp.

Sự khác biệt giữa TRUNCATE và DELETE?

  • TRUNCATE: Là một câu lệnh DDL, nhanh chóng xóa toàn bộ dữ liệu của bảng mà không ghi log cho từng dòng đã xóa. TRUNCATE không áp dụng cho các bảng có khóa ngoại.
  • DELETE: Là một câu lệnh DML, xóa dữ liệu của bảng dựa trên điều kiện lọc (nếu có). DELETE ghi log cho từng dòng đã xóa và có thể hoàn tác (rollback) nếu cần. DELETE có thể áp dụng cho các bảng có khóa ngoại.

Sự khác biệt giữa WHERE và HAVING?

WHERE và HAVING đều dùng để áp dụng điều kiện lọc khi truy vấn dữ liệu, tuy nhiên:

  • WHERE: Dùng để lọc dữ liệu trước khi tiến hành tổng hợp (GROUP BY). WHERE áp dụng cho các dòng của bảng.
  • HAVING: Dùng để lọc dữ liệu sau khi đã tổng hợp bằng GROUP BY. HAVING áp dụng cho các nhóm của bảng sau khi đã tổng hợp.

Liệt kê một số hàm tổng hợp thông dụng trong SQL

  • COUNT(): Đếm số dòng trong một nhóm hoặc bảng.
  • SUM(): Tính tổng giá trị của một cột trong một nhóm hoặc bảng.
  • AVG(): Tính giá trị trung bình của một cột trong một nhóm hoặc bảng.
  • MAX(): Tìm giá trị lớn nhất của một cột trong một nhóm hoặc bảng.
  • MIN(): Tìm giá trị nhỏ nhất của một cột trong một nhóm hoặc bảng.

Sự khác biệt giữa mệnh đề HAVING và mệnh đề WHERE?

Mệnh đề HAVING và mệnh đề WHERE trong SQL đều dùng để lọc dữ liệu trong câu truy vấn, tuy nhiên chúng có những sự khác biệt quan trọng như sau:

Mục đích sử dụng:

Mệnh đề WHERE: Dùng để lọc dữ liệu trên các dòng của bảng dựa vào điều kiện cho trước. Mệnh đề WHERE hoạt động trước khi thực hiện phép gom nhóm (GROUP BY) hoặc các phép tổng hợp.

Mệnh đề HAVING: Dùng để lọc dữ liệu trên các nhóm dòng của bảng sau khi thực hiện phép gom nhóm (GROUP BY) và các phép tổng hợp (SUM, COUNT, AVG, MIN, MAX, ...). Mệnh đề HAVING thường được sử dụng kết hợp với GROUP BY để lọc các nhóm dữ liệu.

Vị trí trong câu truy vấn:

  • Mệnh đề WHERE: Đặt trước mệnh đề GROUP BY và sau mệnh đề FROM hoặc JOIN trong câu truy vấn.
  • Mệnh đề HAVING: Đặt sau mệnh đề GROUP BY và trước mệnh đề ORDER BY trong câu truy vấn.

Ví dụ: Tìm số lượng sản phẩm (Product) của từng loại (Category) có số lượng sản phẩm lớn hơn 10.

SELECT Category, COUNT(Product) as ProductCount

FROM Products

GROUP BY Category

HAVING ProductCount > 10;

Trong ví dụ này, mệnh đề HAVING được sử dụng để lọc các nhóm dữ liệu (Category) sau khi thực hiện phép gom nhóm (GROUP BY) và phép tổng hợp (COUNT).

Cách thêm một cột mới vào bảng trong SQL?

Đáp án: Để thêm một cột mới vào bảng trong SQL, sử dụng câu lệnh ALTER TABLE với tùy chọn ADD COLUMN. Ví dụ:

ALTER TABLE ten_bang

ADD COLUMN ten_cot_moi kieu_du_lieu;

Cách xóa một cột trong bảng trong SQL?

Đáp án: Để xóa một cột, sử dụng câu lệnh ALTER TABLE với tùy chọn DROP COLUMN. Tuy nhiên, lưu ý rằng việc xóa cột sẽ xóa vĩnh viễn tất cả dữ liệu. Ví dụ:

ALTER TABLE ten_bang

DROP COLUMN ten_cot;

Cách thay đổi kiểu dữ liệu của một cột?

Đáp án: Để thay đổi kiểu dữ liệu của một cột, sử dụng câu lệnh ALTER TABLE với tùy chọn MODIFY COLUMN (đối với MySQL) hoặc ALTER COLUMN (đối với SQL Server, PostgreSQL). Ví dụ:

  • MySQL

ALTER TABLE ten_bang

MODIFY COLUMN ten_cot kieu_du_lieu_moi;

  • SQL Server, PostgreSQL

ALTER TABLE ten_bang

ALTER COLUMN ten_cot TYPE kieu_du_lieu_moi;

Cách thêm ràng buộc NOT NULL cho một cột trong bảng trong SQL?

Đáp án: Để thêm ràng buộc NOT NULL cho một cột, sử dụng câu lệnh ALTER TABLE với tùy chọn MODIFY COLUMN (đối với MySQL) hoặc ALTER COLUMN (đối với SQL Server, PostgreSQL) kèm theo ràng buộc NOT NULL. Ví dụ:

  • MySQL

ALTER TABLE ten_bang

MODIFY COLUMN ten_cot kieu_du_lieu NOT NULL;

  • SQL Server, PostgreSQL

ALTER TABLE ten_bang

ALTER COLUMN ten_cot SET NOT NULL;

Phép nối (join) trong SQL là gì? Liệt kê các loại join phổ biến

Phép nối (join) trong SQL là một kỹ thuật dùng để kết hợp dữ liệu từ hai hoặc nhiều bảng trong cơ sở dữ liệu dựa trên mối quan hệ giữa các cột trong các bảng đó. Thông thường, mối quan hệ này được xác định dựa vào khóa chính (primary key) và khóa ngoại (foreign key).

Các loại join phổ biến trong SQL bao gồm:

INNER JOIN: Phép nối này chỉ trả về các dòng có khóa chung giữa hai bảng. Nếu không có khóa chung, kết quả sẽ không có dòng nào.

LEFT JOIN (hoặc LEFT OUTER JOIN): Phép nối này trả về tất cả các dòng từ bảng bên trái và các dòng tương ứng từ bảng bên phải nếu có khóa chung. Nếu không có khóa chung, các cột từ bảng bên phải sẽ có giá trị NULL.

RIGHT JOIN (hoặc RIGHT OUTER JOIN): Phép nối này trả về tất cả các dòng từ bảng bên phải và các dòng tương ứng từ bảng bên trái nếu có khóa chung. Nếu không có khóa chung, các cột từ bảng bên trái sẽ có giá trị NULL.

FULL JOIN (hoặc FULL OUTER JOIN): Phép nối này trả về tất cả các dòng từ cả hai bảng, và nối chúng dựa trên khóa chung. Nếu không có khóa chung, các cột từ bảng không có khóa chung sẽ có giá trị NULL.

CROSS JOIN: Phép nối này trả về tích Descartes của hai bảng, tức là mỗi dòng của bảng bên trái sẽ được nối với mỗi dòng của bảng bên phải. Kết quả là một bảng có số dòng bằng tích số dòng của hai bảng ban đầu.

SELF JOIN: Phép nối này không phải là một loại join riêng biệt, mà chỉ là việc thực hiện join trên cùng một bảng. Để thực hiện self join, bạn cần sử dụng bí danh (alias) cho bảng để phân biệt giữa hai phiên bản của cùng một bảng trong câu truy vấn.

Ưu điểm của Views là gì?

Views là các câu truy vấn SQL được lưu trữ trong cơ sở dữ liệu dưới dạng đối tượng ảo. Các ưu điểm của Views bao gồm:

Tính bảo mật: Views giúp giới hạn quyền truy cập của người dùng đến các phần nhất định của dữ liệu. Bằng cách tạo Views trên các bảng, bạn có thể kiểm soát thông tin mà người dùng có thể xem hoặc truy cập.

Đơn giản hóa truy vấn phức tạp: Views giúp đơn giản hóa các truy vấn phức tạp bằng cách tạo ra một đối tượng ảo dễ hiểu hơn từ kết quả của truy vấn phức tạp. Người dùng chỉ cần truy vấn View thay vì phải thực hiện truy vấn phức tạp gốc.

Tính ổn định: Khi cấu trúc của bảng thay đổi, bạn có thể cập nhật View mà không ảnh hưởng đến các ứng dụng hay truy vấn đang sử dụng View đó. Điều này giúp duy trì tính ổn định của ứng dụng.

Tái sử dụng mã: Views cho phép tái sử dụng mã truy vấn, giúp giảm thiểu lượng mã lặp lại trong ứng dụng và cải thiện hiệu suất phát triển.

Tính độc lập của ứng dụng và cơ sở dữ liệu: Views giúp tạo ra một lớp trừu tượng giữa ứng dụng và cơ sở dữ liệu, giúp ứng dụng không phải thay đổi nhiều khi cấu trúc cơ sở dữ liệu thay đổi.

Tối ưu hóa hiệu suất: Một số hệ thống quản lý cơ sở dữ liệu (RDBMS) hỗ trợ tạo ra Views được chỉnh sửa (materialized views), lưu trữ kết quả của truy vấn thay vì truy vấn động. Điều này giúp tăng hiệu suất truy vấn khi không cần thực hiện lại truy vấn phức tạp gốc.

Như vậy qua bài viết trên Tanca đã gợi ý bộ câu hỏi phỏng vấn SQL phổ biến, trang bị đầy đủ kiến thức chuyên môn từ cơ bản đến nâng cao. Đảm bảo giúp bạn tạo ấn tượng tốt với các nhà tuyển dụng và có được công việc mơ ước. Cảm ơn quý bạn đọc đã quan tâm và theo dõi bài viết.

Lê Thị Thuỳ Vi
Bài viết mới
Bài viết liên quan