Tổng hợp câu hỏi phỏng vấn Database

Tổng hợp câu hỏi phỏng vấn Database

Giới thiệu về Database

Trong thời đại công nghệ số, database đóng vai trò quan trọng trong việc lưu trữ và quản lý dữ liệu cho các ứng dụng và hệ thống thông tin. Hiểu biết về database là một kỹ năng cần thiết cho các nhà phát triển, đặc biệt là những người mới bắt đầu trong lĩnh vực này.


Câu hỏi thường gặp

1. Database là gì?

Database là một hệ thống dùng để lưu trữ và quản lý dữ liệu một cách có tổ chức. Nó cho phép người dùng lưu trữ, truy vấn, chỉnh sửa và xóa dữ liệu một cách dễ dàng.

2. Sự khác biệt giữa SQL và NoSQL?

Tiêu chíSQL (Relational Database)NoSQL (Non-Relational Database)
Cấu trúcDữ liệu lưu trong bảng với schema cố địnhDữ liệu linh hoạt, không cần schema cố định
Ngôn ngữ truy vấnSử dụng SQL (Structured Query Language)Không sử dụng SQL, có thể dùng JSON, XML, v.v.
Tính nhất quánĐảm bảo tính nhất quán ACIDThường ưu tiên tính khả dụng và mở rộng
Ví dụMySQL, PostgreSQL, OracleMongoDB, Firebase, Cassandra

3. MySQL là gì?

MySQL là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở, sử dụng ngôn ngữ SQL để quản lý và truy vấn dữ liệu. Nó thường được sử dụng trong các ứng dụng web nhờ vào tính ổn định và khả năng mở rộng.

4. NoSQL là gì?

NoSQL là loại cơ sở dữ liệu không sử dụng cấu trúc bảng như SQL. Nó thích hợp cho các ứng dụng cần tốc độ cao, dữ liệu phi cấu trúc hoặc bán cấu trúc.

5. Sự khác biệt giữa INNER JOINOUTER JOIN?

  • INNER JOIN: Chỉ lấy các bản ghi có dữ liệu khớp ở cả hai bảng.
  • OUTER JOIN: Lấy tất cả các bản ghi từ một bảng, ngay cả khi không có dữ liệu khớp từ bảng kia.
SELECT users.name, orders.id
FROM users
INNER JOIN orders ON users.id = orders.user_id;

6. Index trong MySQL là gì? Tại sao cần dùng?

Index (chỉ mục) là một cấu trúc dữ liệu giúp tăng tốc truy vấn bằng cách sắp xếp dữ liệu theo một cách tối ưu hơn.

CREATE INDEX idx_users_email ON users(email);

7. Làm thế nào để tối ưu hóa truy vấn MySQL?

  • Sử dụng index cho các cột tìm kiếm.
  • Tránh dùng SELECT *, chỉ lấy các cột cần thiết.
  • Dùng LIMIT để giảm số lượng bản ghi trả về.
  • Sử dụng EXPLAIN để phân tích truy vấn.

8. Sự khác biệt giữa CHARVARCHAR?

  • CHAR(n): Lưu dữ liệu với độ dài cố định n.
  • VARCHAR(n): Lưu dữ liệu với độ dài thay đổi.

9. Làm thế nào để thực hiện backup và restore database MySQL?

  • Backup:
mysqldump -u root -p database_name > backup.sql
  • Restore:
mysql -u root -p database_name < backup.sql

10. Sự khác biệt giữa TRUNCATEDELETE?

LệnhTRUNCATEDELETE
Xóa dữ liệuXóa toàn bộ bảngXóa từng bản ghi
Khả năng rollbackKhông thể rollbackCó thể rollback nếu dùng transaction
Hiệu suấtNhanh hơnChậm hơn

11. MySQL có hỗ trợ transaction không? Giải thích cách dùng.

Có, MySQL hỗ trợ transaction với các lệnh:

START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

Nếu có lỗi, có thể dùng ROLLBACK để hoàn tác.

12. Làm thế nào để bảo mật MySQL?

  • Sử dụng mật khẩu mạnh cho tài khoản root.
  • Chỉ mở cổng MySQL cho các IP đáng tin cậy.
  • Không sử dụng tài khoản root cho ứng dụng.
  • Mã hóa dữ liệu quan trọng.

13. Làm thế nào để kiểm tra hiệu suất của một truy vấn MySQL?

Sử dụng EXPLAIN để phân tích cách MySQL thực thi truy vấn.

EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';

14. MySQL có hỗ trợ JSON không? Giải thích cách dùng.

Có, MySQL hỗ trợ kiểu dữ liệu JSON.

SELECT JSON_EXTRACT(data, '$.name') FROM users;

Lệnh này lấy giá trị từ một cột JSON.

15. Làm thế nào để thực hiện full-text search trong MySQL?

Dùng FULLTEXT INDEXMATCH ... AGAINST:

SELECT * FROM articles WHERE MATCH(title, content) AGAINST ('MySQL');

16. Sự khác biệt giữa PRIMARY KEYUNIQUE KEY?

  • PRIMARY KEY: Không thể chứa giá trị NULL và mỗi bảng chỉ có một PRIMARY KEY.
  • UNIQUE KEY: Có thể chứa một giá trị NULL và có thể có nhiều UNIQUE KEY trong một bảng.

Similar Posts