- Sản phẩm & Dịch vụSản phẩm & Dịch vụ
- Giải phápGiải pháp
- Bảng giáBảng giá
- Công tyCông ty
- Tài liệuTài liệu
vi
vi
Chuyên mục với các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.
Technical Writer
I have over 5 years of experience writing technical documentation for tech products, making them accessible and user-friendly. My focus is always on providing clear and precise information. @#@ Tôi đã có hơn 5 năm kinh nghiệm viết tài liệu kỹ thuật cho các sản phẩm công nghệ, giúp người dùng dễ dàng tiếp cận và sử dụng. Tôi luôn tập trung vào việc cung cấp thông tin chính xác và dễ hiểu.
Thảo luận (0)
Đăng nhập để thảo luận
Các câu hỏi về SQL được đưa ra trong hầu hết các buổi phỏng vấn vì thao tác với cơ sở dữ liệu rất phổ biến trong các ứng dụng. SQL là viết tắt của Structured Query Language, một ngôn ngữ lập trình chuyên biệt theo lĩnh vực dùng cho giao tiếp cơ sở dữ liệu và quản lý cơ sở dữ liệu quan hệ.

SQL bao gồm các lệnh chuẩn cho tương tác cơ sở dữ liệu như SELECT, INSERT, CREATE, DELETE, UPDATE, DROP… Với những lệnh này, SQL cho phép người dùng truy xuất và tải dữ liệu từ cơ sở dữ liệu, tạo và xóa các phần tử bảng, cũng như triển khai các tương tác cơ sở dữ liệu động giữa máy chủ và chương trình.
Dưới đây là các câu hỏi và câu trả lời phỏng vấn SQL, giúp bạn củng cố kiến thức về SQL và mang lại những góc nhìn, kiến thức mới về ngôn ngữ này. Hãy tham khảo những câu hỏi SQL này để ôn tập trước khi tham gia phỏng vấn.
SQL là một ngôn ngữ lập trình chuyên biệt cho phép bạn truy vấn và thao tác dữ liệu trong hệ quản trị cơ sở dữ liệu được sắp xếp tối ưu và phân loại. Điều này có thể thực hiện được thông qua các lệnh trong SQL cho phép bạn đọc, ghi, chọn và xóa các bản ghi hoặc thậm chí là các cột trong cùng một thuộc tính hoặc bảng. SQL cũng cung cấp một cách rất hiệu quả để tạo kênh truy cập động giữa chương trình, website hoặc ứng dụng di động và cơ sở dữ liệu.
Ví dụ, khi nhập thông tin đăng nhập trên một website, dữ liệu đăng nhập này sẽ được SQL chuyển vào cơ sở dữ liệu để xác minh và áp dụng các hạn chế cho người dùng.
Cơ sở dữ liệu hoặc Hệ quản trị cơ sở dữ liệu (DBMS) và Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) đều được SQL sử dụng để lưu trữ dữ liệu và cấu trúc. Tuy nhiên, mỗi loại hệ quản trị được ưu tiên sử dụng trong các tình huống khác nhau. Điểm khác biệt chính là DBMS lưu thông tin dưới dạng file trong khi RDBMS lưu thông tin dưới dạng bảng. Hơn nữa, giống như tên gọi “Relational”, RDBMS cho phép các bảng khác nhau có mối quan hệ với nhau bằng cách sử dụng Khóa chính, Khóa ngoại… Điều này tạo ra một chuỗi quan hệ động giữa các bảng và mang lại những ràng buộc hữu ích. DBMS thì sắp xếp bảng theo dạng phân cấp hoặc điều hướng, điều này phù hợp khi lưu dữ liệu trong các bảng độc lập và bạn không muốn thay đổi các bảng khác khi chỉnh sửa một bảng.
SQL được xây dựng dựa trên các phép toán quan hệ, có các chỉnh sửa và cải tiến. Một truy vấn SQL cơ bản có dạng:
SELECT A1, A2, ..., An FROM R1, R2, ..., Rm WHERE P;
Trong đó:
Các lệnh SQL được chia thành bốn loại sau:
SQL rất phổ biến với các lập trình viên phía máy chủ nhờ khả năng xử lý nhanh một lượng lớn bản ghi trong cơ sở dữ liệu một cách dễ dàng. Điều này giúp cải thiện đáng kể hiệu quả truy xuất và thao tác dữ liệu. Cụ thể, SQL cho phép thực thi, truy xuất, chèn, cập nhật, xóa dữ liệu trong cơ sở dữ liệu. Ngoài ra, SQL còn hỗ trợ tạo các cấu trúc như bảng, view, và cơ sở dữ liệu với tên duy nhất.
Các từ khóa SQL cơ bản
DDL liên quan đến các lệnh SQL tác động trực tiếp đến cấu trúc của cơ sở dữ liệu. DDL là một nhóm trong các phân loại lệnh SQL, ngoài ra còn có DML, Transactions và Security. Một đặc điểm riêng của các lệnh DDL là chúng có thể thao tác với index, đối tượng, bảng, view, trigger…
Ba từ khóa DDL phổ biến trong SQL là:
CREATE TABLE tableName (name data_type);
ALTER TABLE tableName ADD columnName data_type;
DROP TABLE tableName;
DML là một tập hợp các lệnh được phân loại theo khả năng cho phép người dùng thay đổi các bản ghi trong cơ sở dữ liệu. Điều này có thể được thực hiện thông qua việc chèn, truy vấn, xóa hoặc cập nhật dữ liệu trong các bảng. Các câu lệnh DML phổ biến bắt nguồn từ những chức năng cốt lõi này và được liệt kê dưới đây:
SELECT – dùng để truy vấn và lấy một hàng trong bảng.
SELECT [columnName] FROM [tableName]
UPDATE – dùng để cập nhật các bản ghi trong bảng hiện có.
UPDATE [tableName] SET [value]
INSERT – dùng để chèn các bản ghi vào bảng hiện có.
INSERT INTO [tableName]
DELETE – dùng để xóa các bản ghi khỏi bảng hiện có.
DELETE FROM [tableName]
TCL là một nhóm lệnh SQL chủ yếu xử lý giao dịch trong cơ sở dữ liệu và các điểm lưu (savepoint). Những từ khóa này triển khai các chức năng và logic SQL mà lập trình viên định nghĩa vào trong cấu trúc và hành vi của cơ sở dữ liệu.
Ví dụ về các lệnh TCL:
DCL giám sát việc cấp quyền truy cập và giới hạn cho người dùng, bao gồm cả các quyền và đặc quyền cần thiết trong các câu lệnh SQL.
Ví dụ về các từ khóa DCL:
Trong ngữ cảnh cơ sở dữ liệu, bảng là một cấu trúc lưu trữ các bản ghi có tổ chức. Bảng được chia thành các ô, mỗi ô chứa các trường của một hàng trong bảng.
Trường là một cấu trúc dữ liệu biểu diễn một đơn vị thông tin duy nhất. Các trường được sắp xếp thành bản ghi. Về cơ bản, mỗi trường lưu giữ một mẩu dữ liệu, là đơn vị cơ bản của phân bổ bộ nhớ cho dữ liệu và có thể truy cập được.
Khóa là một tính năng quan trọng trong RDBMS. Về bản chất, chúng là các trường dùng để liên kết các bảng lại với nhau, đồng thời hỗ trợ truy xuất dữ liệu nhanh chóng và quản lý log thông qua việc quản lý index trên cột.
Các loại khóa khác nhau gồm:
SQL là một ngôn ngữ lập trình máy chủ cho phép thao tác với các cột và trường dữ liệu trong cơ sở dữ liệu.
Trong khi đó, MySQL là một hệ quản trị cơ sở dữ liệu (DBMS), cụ thể hơn là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS), chứ không phải là một ngôn ngữ lập trình. Tuy nhiên, MySQL triển khai cú pháp của SQL.
Toán tử UNION trong SQL kết hợp nhiều tập kết quả từ các câu lệnh SELECT. Các điều kiện ràng buộc gồm:
UNION sẽ tự động loại bỏ các hàng trùng lặp trong kết quả được trả về bởi câu lệnh SELECT.
UNION ALL cũng thực hiện chức năng giống như UNION, nhưng sẽ giữ lại tất cả các hàng, bao gồm cả các hàng trùng lặp.
Ví dụ:
SELECT C1, C2 FROM T1 UNION SELECT Cx, Cy FROM T2;
Từ khóa JOIN dùng để truy vấn dữ liệu từ nhiều bảng. Nó được sử dụng với các khóa khác nhau để tìm ra các bản ghi này và dựa vào mối liên kết giữa các trường.
Normalization sắp xếp các bảng và các trường hiện có trong cơ sở dữ liệu nhằm giảm thiểu sự trùng lặp. Nó được dùng để đơn giản hóa bảng ở mức tối đa trong khi vẫn duy trì các trường duy nhất.
Denormalization cho phép truy xuất các trường từ tất cả các dạng chuẩn (normal form) trong cơ sở dữ liệu. So với normalization, nó thực hiện ngược lại và đưa sự dư thừa vào bảng.
Cả hai mệnh đề đều chấp nhận các điều kiện được dùng làm cơ sở để truy xuất trường dữ liệu. Sự khác biệt là mệnh đề WHERE chỉ được sử dụng cho các cột tĩnh không tổng hợp, trong khi HAVING chỉ dùng cho các cột đã được tổng hợp.
Ví dụ:
select order_id, SUM(sale_amount) as TotalSale from SalesData where quantity > 1 group by order_id having SUM(sale_amount) > 100;
SELECT * FROM Employee LIMIT 10;SELECT * FROM Employee WHERE ROWNUM < 10;SELECT TOP 3 * FROM Employee;
Điều này có thể thực hiện bằng cách gọi một SQL trigger lắng nghe sự kiện khi bất kỳ phần tử nào bị xóa trong Bảng A, sau đó xóa các phần tử liên kết tương ứng trong Bảng B.
INSERT INTO TableB (columnOne, columnTwo, columnThree, ...)SELECT columnOne, columnTwo, columnThree, ... FROM TableA WHERE added_condition;
Sự khác biệt rõ ràng giữa hai mệnh đề này là từ khóa EXISTS có tốc độ thực thi nhanh hơn so với IN. Nguyên nhân là vì từ khóa IN phải tìm qua tất cả các bản ghi hiện có, trong khi EXISTS sẽ tự động dừng lại khi đã tìm thấy bản ghi phù hợp. Ngoài ra, câu lệnh IN hoạt động trong ResultSet, còn EXISTS thì hoạt động trên các bảng ảo. Trong ngữ cảnh này, câu lệnh IN cũng không hoạt động trên các truy vấn có liên kết với bảng ảo, trong khi từ khóa EXISTS được sử dụng cho các truy vấn liên kết.
ACID là viết tắt của Atomicity, Consistency, Isolation, và Durability. Thuộc tính này chủ yếu đảm bảo tính toàn vẹn của quá trình trong hệ thống cơ sở dữ liệu. Điều này có nghĩa là bất kỳ giao dịch dữ liệu nào mà người dùng gửi đến cơ sở dữ liệu đều phải được thực hiện một cách đầy đủ, chính xác và có khả năng duy trì lâu dài.
Database trigger là một chương trình tự động được thực thi để phản hồi lại một số sự kiện trên bảng hoặc view, chẳng hạn như thêm, cập nhật hoặc xóa bản ghi. Về cơ bản, trigger trong cơ sở dữ liệu giúp chúng ta duy trì tính toàn vẹn của dữ liệu.
Auto increment cho phép người dùng tạo ra một số duy nhất mỗi khi một bản ghi mới được chèn vào bảng. AUTO INCREMENT là từ khóa trong Oracle, AUTO_INCREMENT trong MySQL và từ khóa IDENTITY có thể được sử dụng trong SQL Server để tự động tăng. Phần lớn từ khóa này được dùng để tạo Primary Key cho bảng.
Collation về cơ bản là một tập hợp các quy tắc xác định cách so sánh và sắp xếp ký tự, mở rộng sang chuỗi. Collation trong MSSQL và MySQL hoạt động gần như giống nhau, ngoại trừ một số tùy chọn collation như UTF-8. Bên cạnh việc so sánh từng ký tự thông thường, collation cũng có thể sắp xếp và so sánh chuỗi theo góc nhìn biểu diễn ASCII.
Stored procedure đệ quy là một thủ tục được gọi chính nó cho đến khi đạt đến một điều kiện giới hạn nào đó. Hàm hoặc thủ tục đệ quy này giúp lập trình viên có thể sử dụng lại cùng một đoạn mã nhiều lần.
Câu trả lời là toán tử LIKE. Toán tử LIKE được sử dụng để so khớp mẫu và có thể dùng với:
Hibernate là một công cụ Object Relational Mapping (ORM) trong Java. Hibernate cho phép chúng ta viết code theo hướng đối tượng và nội bộ sẽ chuyển đổi chúng thành các truy vấn SQL gốc để thực thi trên cơ sở dữ liệu quan hệ.
Hibernate sử dụng ngôn ngữ riêng tương tự SQL gọi là Hibernate Query Language (HQL). Điểm khác biệt là HQL cho phép truy vấn các entity object của Hibernate. Ngoài ra, Hibernate còn có một ngôn ngữ truy vấn hướng đối tượng gọi là Criteria Query. Điều này rất cần thiết cho các lập trình viên chủ yếu làm việc với đối tượng trong ứng dụng phía front-end, và Criteria Query có thể xử lý các đối tượng đó đồng thời bổ sung các tính năng giống SQL như bảo mật và kiểm soát truy cập.
Lỗi này thường xuất hiện do lỗi cú pháp khi gọi tên cột trong cơ sở dữ liệu Oracle, như có thể thấy trong mã lỗi với tiền tố ORA. Do đó, để tránh lỗi này, bạn phải nhập đúng tên cột. Ngoài ra, cần đặc biệt lưu ý đến các bí danh vì chúng thường là nguyên nhân dẫn đến lỗi invalid identifier.
SQL Profiler là một giao diện đồ họa (GUI) cho phép các nhà phát triển cơ sở dữ liệu giám sát và theo dõi các hoạt động của SQL database engine. Nó có tính năng ghi log mọi sự kiện xảy ra và cung cấp phân tích khi có sự cố hoặc sai lệch. Về cơ bản, đây là một tính năng chẩn đoán trong SQL, dùng để gỡ lỗi các vấn đề hiệu năng và mang lại cách linh hoạt hơn để xác định phần nào trong tệp trace gây ra tắc nghẽn trong các giao dịch SQL.
Điều này yêu cầu một JDBC (Java Database Connectivity) driver để kết nối hai bên. Ngoài ra, bạn cần thêm các phụ thuộc tương ứng vào tệp build.gradle cùng với các quyền và cấp phép cần thiết.
Tham khảo: Wikipedia