A. Các Câu Hỏi MySQL Dành Cho Người Mới Bắt Đầu:
-
MySQL là gì?
- MySQL là hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở (RDBMS) dùng Structured Query Language (SQL) để quản lý và thao tác dữ liệu được lưu trữ trong cơ sở dữ liệu.
-
Những tính năng chính của MySQL là gì?
- MySQL có các tính năng nổi bật như mã nguồn mở, hỗ trợ đa nền tảng, hiệu suất cao, khả năng xử lý truy vấn phức tạp, tính năng bảo mật tốt, tuân thủ ACID, khả năng mở rộng, cùng với tính năng replication và clustering.
-
Cơ sở dữ liệu quan hệ là gì?
- Đây là kiểu cơ sở dữ liệu lưu trữ thông tin trong các bảng với hàng và cột, mỗi bảng có một khóa duy nhất. Mối quan hệ giữa các bảng được thiết lập qua foreign keys.
-
SQL là gì?
- SQL (Structured Query Language) là ngôn ngữ lập trình tiêu chuẩn dùng để quản lý và thao tác với cơ sở dữ liệu quan hệ, bao gồm việc thực hiện truy vấn, chèn, cập nhật, và xóa dữ liệu.
-
Các loại dữ liệu trong MySQL bao gồm những gì?
- MySQL hỗ trợ các loại dữ liệu như:
- Numeric:
INT
,FLOAT
,DOUBLE
,DECIMAL
- String:
VARCHAR
,TEXT
,CHAR
- Date and Time:
DATE
,DATETIME
,TIMESTAMP
,TIME
- Binary:
BLOB
,BINARY
- Numeric:
- MySQL hỗ trợ các loại dữ liệu như:
-
Primary key là gì?
- Primary key là một định danh duy nhất cho một bản ghi trong bảng, đảm bảo không có giá trị trùng lặp và mỗi bảng chỉ có một primary key.
-
Foreign key là gì?
- Foreign key là một trường dùng để xác định một hàng trong bảng khác, tạo liên kết giữa hai bảng và đảm bảo tính toàn vẹn tham chiếu.
-
Sự khác biệt giữa
CHAR
vàVARCHAR
là gì?CHAR
là kiểu chuỗi cố định, cònVARCHAR
có độ dài thay đổi.CHAR
thích hợp cho chuỗi có độ dài cố định, trong khiVARCHAR
tiết kiệm bộ nhớ hơn với độ dài thay đổi.
-
AUTO_INCREMENT
trong MySQL là gì?- Đây là tính năng tự động tạo định danh duy nhất cho các bản ghi mới, thường áp dụng cho các cột primary key.
-
JOIN
trong SQL là gì?
JOIN
kết hợp các hàng từ hai hoặc nhiều bảng dựa trên một cột liên quan. Các loạiJOIN
bao gồmINNER JOIN
,LEFT JOIN
,RIGHT JOIN
, vàFULL JOIN
.
INNER JOIN
là gì?
INNER JOIN
trả về chỉ các hàng có giá trị trùng khớp trong cả hai bảng.
LEFT JOIN
là gì?
LEFT JOIN
trả về tất cả các hàng từ bảng bên trái và các hàng khớp từ bảng bên phải, với giá trị NULL cho các cột không khớp.
UNION
trong SQL là gì?
UNION
kết hợp các tập kết quả từ hai hoặc nhiều truy vấn SELECT, đồng thời loại bỏ các hàng trùng lặp.
- Sự khác biệt giữa
UNION
vàUNION ALL
là gì?
UNION
loại bỏ các hàng trùng lặp, trong khiUNION ALL
bao gồm tất cả các hàng, kể cả trùng lặp.
GROUP BY
là gì?
GROUP BY
nhóm các hàng có cùng giá trị vào các nhóm, thường kết hợp với các hàm tổng hợp nhưSUM()
,AVG()
,COUNT()
,MIN()
, vàMAX()
.
B. Các Câu Hỏi MySQL Ở Cấp Độ Trung Bình:
-
Index trong MySQL là gì?
- Index là cấu trúc dữ liệu giúp cải thiện tốc độ truy xuất dữ liệu trong bảng mà không cần quét toàn bộ bảng.
-
Các loại index trong MySQL là gì?
- Các loại index phổ biến trong MySQL bao gồm:
- Primary Index: Tạo cho primary keys.
- Unique Index: Đảm bảo mỗi giá trị trong cột được index là duy nhất.
- Full-text Index: Dùng để tìm kiếm văn bản.
- Composite Index: Index nhiều cột.
- Các loại index phổ biến trong MySQL bao gồm:
-
Normalization là gì?
- Quá trình tổ chức bảng để giảm thiểu dữ liệu dư thừa và cải thiện tính toàn vẹn, thường chia nhỏ bảng lớn thành các bảng nhỏ hơn liên quan.
-
Denormalization là gì?
- Kết hợp các bảng để giảm số lượng
JOIN
và cải thiện hiệu suất truy vấn.
- Kết hợp các bảng để giảm số lượng
-
HAVING
trong SQL là gì?HAVING
lọc bản ghi sau khi tổng hợp, thường đi kèm vớiGROUP BY
, tương tự nhưWHERE
nhưng áp dụng sau khi có kết quả tổng hợp.
-
Stored procedure là gì?
- Tập hợp các câu lệnh SQL có thể thực thi như một đơn vị, được lưu trữ trong cơ sở dữ liệu và có thể được gọi bằng tên.
-
Trigger trong MySQL là gì?
- Trigger là các câu lệnh SQL tự động thực thi khi một sự kiện (INSERT, UPDATE, DELETE) xảy ra trên một bảng.
-
View trong MySQL là gì?
- View là bảng ảo dựa trên kết quả của một truy vấn SELECT, mà không lưu trữ dữ liệu vật lý.
-
Transaction trong MySQL là gì?
- Transaction là chuỗi các câu lệnh SQL thực thi như một đơn vị. Nó tuân theo thuộc tính ACID (Atomicity, Consistency, Isolation, Durability).
-
Thuộc tính ACID là gì?
- Atomicity: Tất cả thao tác đều thực hiện hoặc không.
- Consistency: Đưa CSDL từ trạng thái hợp lệ này sang trạng thái hợp lệ khác.
- Isolation: Transactions không can thiệp lẫn nhau.
- Durability: Khi đã cam kết, các thay đổi là vĩnh viễn.
C. Các Câu Hỏi MySQL Ở Cấp Độ Cao:
-
Replication trong MySQL là gì?
- Replication là quá trình sao chép dữ liệu từ một MySQL server (master) sang một hoặc nhiều servers (slaves) để tạo ra sự dư thừa và cân bằng tải.
-
Các loại replication trong MySQL là gì?
- Master-Slave Replication: Dữ liệu ghi vào master và sao chép sang slaves.
- Master-Master Replication: Cả hai servers đều có thể làm master và sao chép qua lại.
- Group Replication: Replication multi-master cho các MySQL clusters có tính sẵn sàng cao.
- Master-Slave Replication: Dữ liệu ghi vào master và sao chép sang slaves.
-
InnoDB storage engine là gì?
- InnoDB là storage engine mặc định trong MySQL, cung cấp hỗ trợ cho các giao dịch tuân thủ ACID, foreign keys và khôi phục sau sự cố.
-
Sự khác biệt giữa
DELETE
,TRUNCATE
, vàDROP
là gì?- DELETE: Xóa hàng theo điều kiện, có thể hoàn tác.
- TRUNCATE: Xóa tất cả hàng nhưng giữ lại cấu trúc, không thể hoàn tác.
- DROP: Xóa toàn bộ bảng và cấu trúc, không thể hoàn tác.
- DELETE: Xóa hàng theo điều kiện, có thể hoàn tác.
-
Làm thế nào để tối ưu hóa một truy vấn chậm trong MySQL?
- Các kỹ thuật bao gồm sử dụng indexing, phân tích kế hoạch thực thi truy vấn (
EXPLAIN
), viết lại truy vấn cho hiệu quả hơn, sử dụng JOIN thay vì subqueries, tránhSELECT *
, và đảm bảo tài nguyên phần cứng phù hợp.
- Các kỹ thuật bao gồm sử dụng indexing, phân tích kế hoạch thực thi truy vấn (
source: viblo