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úc | Dữ liệu lưu trong bảng với schema cố định | Dữ liệu linh hoạt, không cần schema cố định |
| Ngôn ngữ truy vấn | Sử 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 ACID | Thường ưu tiên tính khả dụng và mở rộng |
| Ví dụ | MySQL, PostgreSQL, Oracle | MongoDB, 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 JOIN và OUTER 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 CHAR và VARCHAR?
- 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 TRUNCATE và DELETE?
| Lệnh | TRUNCATE | DELETE |
|---|---|---|
| Xóa dữ liệu | Xóa toàn bộ bảng | Xóa từng bản ghi |
| Khả năng rollback | Không thể rollback | Có thể rollback nếu dùng transaction |
| Hiệu suất | Nhanh hơn | Chậ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
rootcho ứ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 INDEX và MATCH ... AGAINST:
SELECT * FROM articles WHERE MATCH(title, content) AGAINST ('MySQL');
16. Sự khác biệt giữa PRIMARY KEY và UNIQUE 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 KEYtrong một bảng.


