Chuyển tới nội dung chính

Tổng hợp những câu hỏi phỏng vấn về MySQL

MySQL là hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở, chạy nhanh, tin cậy và dễ sử dụng

🔖 Gợi ý từ Admin

📝 Tài liệu phỏng vấn kiến thức lập trình: Xem tại đây!!!

📌 Tìm hiểu về thuật toán: Xem tại đây!!!

📌 Roadmaps - Lộ trình trở thành một lập trình viên: Xem tại đây!!!

⚡️ Cheatsheet các ngôn ngữ lập trình: Xem tại đây!!!

⚡️ Handbook lập trình: Xem tại đây!!!

I. Giới thiệu MySQL

Giới thiệu Mysql

MySQL là hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở, chạy nhanh, tin cậy và dễ sử dụng. MySQL dựa trên chuẩn SQL để biên dịch trên nhiều nền tảng, nó là hệ quản trị cơ sở dữ liệu SQL đa luồng và đa người dùng.

Dữ liệu trong cơ sở dữ liệu MySQL được lưu dưới dạng bảng. Một bảng là một tập hợp dữ liệu có quan hệ, trong bảng bao gồm cột và hàng.

MySQL có client độc lập cho phép người dùng tương tác trực tiếp với cơ sở dữ liệu MySQL bằng SQL, nhưng cũng có thể triển khai các ứng dụng sử dụng ngôn ngữ khác.

Hiện tại MySQL là cơ sở dữ liệu phổ biến nhất thế giới.

II. Câu hỏi phỏng vấn về MySQL

1. MySQL là gì?

MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở lớn nhất thế giới, đặc biết được dùng rất nhiều cho các dự án, ứng dụng, website trên internet.

2. Ưu điểm của MySQL?

  • Dễ sử dụng: MySQL là cơ sở dữ liệu tốc độ cao, ổn định, dễ sử dụng và hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh.
  • Độ bảo mật cao: MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên Internet khi sở hữu nhiều nhiều tính năng bảo mật thậm chí là ở cấp cao.
  • Đa tính năng: MySQL hỗ trợ rất nhiều chức năng SQL được mong chờ từ một hệ quản trị cơ sở dữ liệu quan hệ cả trực tiếp lẫn gián tiếp.
  • Khả năng mở rộng và mạnh mẽ: MySQL có thể xử lý rất nhiều dữ liệu và hơn thế nữa nó có thể được mở rộng nếu cần thiết.
  • Nhanh chóng: Việc đưa ra một số tiêu chuẩn cho phép MySQL để làm việc rất hiệu quả và tiết kiệm chi phí, do đó nó làm tăng tốc độ thực thi.

3. Cơ sở dữ liệu là gì?

Cơ sở dữ liệu là hệ thống bao gồm rất nhiều thông tin, dữ liệu được xây dựng theo một cấu trúc nhất định nhằm đáp ứng nhu cầu khai thác, sử dụng của nhiều người hay chạy nhiều chương trình ứng dụng cùng một lúc.

Khi áp dụng hình thức lưu trữ này, nó sẽ giúp khắc phục được những điểm yếu của việc lưu file thông thường trên máy tính. Các thông tin lưu trữ sẽ đảm bảo được nhất quán, hạn chế tình trạng trùng lặp thông tin.

4. Chuẩn SQL là gì?

Chuẩn SQL (Structured Query Language) là ngôn ngữ sử dụng cho các RDBMS bên cạnh MySQL như Oracle, Microsoft SQL Server. Có thể coi SQL là ngôn ngữ chung mà bất cứ hệ thống cơ sở dữ liệu quan hệ (RDBMS) nào cũng phải đáp ứng.

5. Một cơ sở dữ liệu MySQL bao gồm những gì?

Một cơ sở dữ liệu MySQL bao gồm một hay nhiều bảng, mỗi bảng gồm cột và dòng. Trong đó cột là các thuộc tính dữ liệu còn hàng là các bản ghi dữ liệu.

6. Làm thế nào để tương tác với MySQL?

Có 3 cách để tương tác với MySQL:

  • Dùng lệnh trực tiếp
  • Qua web interface
  • Qua ngôn ngữ lập trình

7. Truy vấn MySQL là gì?

Một truy vấn là một yêu cầu hay câu hỏi cụ thể. Nó đòi hỏi cơ sở dữ liệu phải trả về một hay nhiều bảng ghi cụ thể.

8. Các lệnh phổ biến trong MySQL?

CommandAction
ALTERChỉnh sửa bảng hay cơ sở dữ liệu
BACKUPPhục hồi bảng
CREATETạo cơ sở dữ liệu
DELETEXoá hàm của bảng
DESCRIBEMô tả cột của bảng
DROPXoá bảng hay cơ sở dữ liệu
EXITThoát
GRANTĐổi quyền người dùng
HELPHiển thị bảng trợ giúp
INSERTThêm dữ liệu
LOCKKhoá bảng
QUITGiống EXIT
RENAMEĐổi tên bảng
SHOWLiệt kê chi tiết đối tượng
SOURCEThực thi một file
STATUSHiển thị trạng thái hiện tại
TRUNCATELàm trống bảng
UNLOCKMở khoá bảng
UPDATECập nhật bảng ghi đã tồn tại
USESử dụng cơ sở dữ liệu

9. Cách tạo cơ sở dữ liệu trong MySQL?

Tạo CSDL trong MySQL
CREATE DATABASE books;

10. Cách tạo bảng trong MySQL?

Tạo bảng trong MySQL
CREATE TABLE history (
author VARCHAR(128),
title VARCHAR(128),
type VARCHAR(16),
year CHAR(4)
) ENGINE InnoDB;

11. Cách chèn dữ liệu vào MySQL?

Lệnh INSERT INTO dùng cho chèn bảng ghi mới vào bảng MySQL:

Chèn dữ liệu vào MySQL
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

Nếu bạn muốn thêm dữ liệu cho tất cả cột trong bảng, bạn không cần chỉ định tên cột trong truy vấn SQL. Tuy nhiên, trật tự của giá trị sẽ tương ứng với thứ tự cột của bảng.

Thêm dữ liệu cho tất cả cột trong bảng
INSERT INTO table_name
VALUES (value1, value2, value3,...)

12. Xoá cột trong MySQL?

Xoá cột trong MySQL
ALTER TABLE classics DROP pages;

13. Đánh chỉ mục trong MySQL?

Trong MySQL, có nhiều kiểu chỉ mục khác nhau như regular index, fulltext index hay primary key. Các chỉ mục giúp ta tìm kiếm nhanh hơn. Chỉ mục gia tăng hiệu suất bằng cách đánh thứ tự dữ liệu trên đĩa, nhờ đó mà nó tìm kiếm kết quả nhanh hơn, hoặc nói cho SQL engine biết vị trí cần tìm dữ liệu.

Ví dụ:

ALTER TABLE history ADD INDEX(author(10));
ALTER TABLE history ADD INDEX(title(10));
ALTER TABLE history ADD INDEX(category(5));
ALTER TABLE history ADD INDEX(year);
DESCRIBE history;

14. Xoá dữ liệu trong bảng MySQL?

Xoá dữ liệu trong bảng MySQL
DELETE FROM table_name
WHERE column_name = value_name

15. Cách để xem cơ sở dữ liệu trong MySQL?

Xem CSDL trong MySQL
mysql> SHOW DATABASES;

16. Các kiểu số trong MySQL?

TypeÝ nghĩa
TINYINITSố nguyên rất nhỏ
SMALLINTSố nguyên nhỏ
MEDIUMINTSố nguyên cỡ vừa
INTSố nguyên tiêu chuẩn
BIGINTSố nguyên lớn
DECIMALSố thập phân
FLOATSố dấu phẩy động chính xác đơn
DOUBLESố dấu phẩy động chính xác kép
BITtrường bit

17. Các kiểu chuỗi trong MySQL?

TypeÝ nghĩa
CHARchuỗi (ký tự) với độ dài cố định
VARCHARchuỗi với độ dài biến
BINARYchuỗi nhị phân độ dài cố định
VARBINARYchuỗi nhị phân độ dài biến
TINYBLOBBLOB (đối tượng nhị phân lớn) rất nhỏ
BLOBBlob nhỏ
MEDIUMBLOBBlob trung bình
LONGBLOBBlob lớn
TINYTEXTChuỗi rất ngắn
TEXTChuỗi ngắn
MEDIUMTEXTChuỗi trung bình
LONGTEXTChuỗi dài
ENUMMỗi giá trị cột được gán, một thành viên enum
SETMột tập hợp, mỗi cột giá trị được gán 0 hoặc nhiều tập hợp thành viên
NULLNULL trong SQL là thuật ngữ được sử dụng để biểu thị một giá trị bị thiếu. Giá trị NULL trong bảng là giá trị trong trường có vẻ như là trống. Giá trị này khác với giá trị 0 hoặc một trường có chứa khoảng trắng.

18. Kiểu dữ liệu thời gian là gì?

TypeÝ nghĩa
DATEGiá trị ngày, theo định dang "YYYY-MM-DD"
TIMEGiá trị giờ, theo định dang "hh:mm:ss"
DATETIMETGiá trị ngày giờ, theo định dang "YYYY-MM-DD hh:mm:ss"
TIMESTAMPGiá trị thười gian, theo định dang "YYYY-MM-DD hh:mm:ss"
YEARGiá trị năm, theo định dang "YYYY" hoặc "YY"

Ví dụ: Để lấy bảng ghi từ Order có ngày là "2018-11-11":

SELECT * FROM Orders WHERE OrderDate='2018-11-11'

19. BLOB trong MySQL là gì?

BLOB là một đối tượng nhị phân lớn (Binary Large OBject) có thể chứa một lượng lớn dữ liệu. Có bốn loại BLOB, TINYBLOB, BLOB, MEDIUMBLOB, và LONGBLOB. Những chỉ khác nhau về độ dài tối đa của các giá trị mà chúng có thể giữ.

BLOB được dùng cho lưu giữ một biến có dữ liệu rất lớn. Bạn có thể lưu trữ cả quyển tiểu thuyết trong BLOB nếu cần.

20. Cách thêm người dùng vào MySQL?

Bạn có thể thêm người dùng bằng cách dùng lệnh CREATE và chỉ định định danh.

CREATE USER 'testuser' IDENTIFIED BY "sample password";

21. View trong MySQL là gì?

Trong MySQL, một view bao gồm một tập hợp hàng được trả về nếu một truy vấn được thực thi. Nó còn gọi là một "bảng ảo". View giúp việc truy xuất dễ dàng hơn thông qua tên alias.

Các ưu điểm của view:

  • Đơn giản
  • Bảo mật
  • Dễ bảo trì

22. Tạo và thực thi view trong MySQL?

Tạo một view được thực hiện thông qua lệnh CREATE VIEW. Ví dụ:

CREATE
[OR REPLACE]
[ALGORITHM = {MERGE | TEMPTABLE | UNDEFINED }]
[DEFINER = { user | CURRENT_USER }]
[SQL SECURITY { DEFINER | INVOKER }]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]

23. MySQL Trigger là gì?

Trigger là trình kích hoạt, sẽ được kích hoạt khi có một tác động nào đó vào nó.

Trong MySQL, Trigger có nghĩa là một đoạn code SQL xử lý một chức năng nào đó, nó hoạt động ngầm và được chạy khi một trong các tác động như chèn, sửa đó hay xoá dữ liệu trong bảng.

Trigger có nhiều mục đích, bao gồm:

  • Kiểm tra dữ liệu
  • Đồng bộ hoá dữ liệu
  • Đảm bảo các mối quan hệ giữa các bảng

24. Có bao nhiêu Trigger khả dụng trong MySQL?

Có 6 Trigger được cho phép trong cơ sở dữ liệu MySQL:

  • Trước khi chèn
  • Sau khi chèn
  • Trước khi sửa
  • Sau khi sửa
  • Trước khi xoá
  • Sau khi xoá

25. MySQL Server là gì?

MySQL Server là máy tính hay một hệ các máy tính cài đặt phần mềm MySQL dành cho server để giúp bạn lưu trữ dữ liệu trên đó, để máy khách có thể truy cập vào quản lý. Dữ liệu này được đặt trong các bảng, và các bảng có mối liên hệ với nhau. MySQL server nhanh, an toàn, đáng tin cậy. Phần mềm MySQL cũng miễn phí và được phát triển, phân phối và hỗ trợ bởi Oracle Corporation.

26. MySQL Client là gì?

Là các chương trình MySQL khả dụng để giao tiếp với server. Dành cho mục đích quản trị, các phần quan trong được liệt kê dưới đây:

  • mysql: Một chương trình tương tác cho phép bạn gửi các câu lệnh SQL đến server và xem kết quả. Bạn cũng có thể sử dụng mysql để thực thi các script (file chứa câu lệnh SQL).
  • mysqladmin: Một chương trình quản trị để thực hiện các tác vụ như tắt server, kiểm tra cấu hình hoặc theo dõi trạng thái của nó nếu nó có vẻ không hoạt động bình thường.
  • mysqldump: Một công cụ để sao lưu cơ sở dữ liệu của bạn hoặc sao chép cơ sở dữ liệu sang một máy chủ khác.
  • mysqlcheck & myisamchk: Các chương trình giúp bạn thực hiện kiểm tra, phân tích và tối ưu hóa bảng, cũng như sửa chữa nếu bảng bị hỏng. mysqlcheck hoạt động với các bảng MyISAM và ở một mức độ nào đó với các bảng cho các công cụ lưu trữ khác. myisamchk chỉ được sử dụng với các bảng MyISAM.

27. Các kiểu quan hệ trong MySQL?

Có 3 kiểu quan hệ trong MySQL

  • One-to-One: là mối quan hệ giữa hai bảng trong đó mỗi bản ghi trong một bảng được liên kết với tối đa một bản ghi trong bảng kia.
  • One-to-Many: là mối quan hệ được sử dụng phổ biến nhất trong đó một bản ghi trong bảng được liên kết với nhiều bản ghi trong bảng khác.
  • Many-to-Many: được sử dụng trong các trường hợp khi cần có nhiều thực thể ở cả hai bên để tạo mối quan hệ.

28. Kiến trúc của MySQL?

Giải thích kiến trúc của MySQL?

Như bạn có thể thấy trên hình, kiến trúc logic của MySQL gồm 3 layers chính.

  • Layer trên cùng chỉ ra các services mà MySQL cung cấp cho các hệ thống mạng client/server bao gồm xử lí kết nối, xác thực, bảo mật.
  • Layer ở giữa là trung tâm xử lí của MySQL bao gồm việc phân tích câu truy vấn, tối ưu hóa, caching và các hàm sẵn có trong MySQL.
  • Layer dưới cùng bao gồm storage engine chịu trách nhiệm cho với lưu trữ và lấy ra dữ liệu. Các storage engine phổ biến hiện nay của MySQL là InnoDB và MyISAM

29. Mở rộng trong MySQL?

Trong MySQL, khả năng mở rộng thực ra là khả năng xử lý tải và sẽ hữu ích khi nghĩ về tải từ một số góc độ khác nhau như:

  • Số lượng dữ liệu
  • Số lượng người dùng
  • Hoạt động người dùng
  • Kích thước của các bộ dữ liệu liên quan

30. Sharding trong MySQL?

Sharding là một mẫu kiến trúc cơ sở dữ liệu liên quan đến phân vùng ngang - thực tế tách một hàng bảng. Bảng thành nhiều bảng khác nhau, được gọi là partitions. Mỗi partitions có cùng schema và cột, nhưng cũng có các hàng hoàn toàn khác nhau. Tương tự, dữ liệu được giữ trong mỗi partitions là duy nhất và độc lập với dữ liệu được giữ trong các partitions khác.

Có thể hữu ích khi so sánh suy nghĩ về phân vùng ngang theo cách nó liên quan đến phân vùng dọc. Trong một bảng được phân vùng theo chiều dọc, toàn bộ các cột được tách ra và đưa vào các bảng mới, riêng biệt. Dữ liệu được giữ trong một phân vùng dọc độc lập với dữ liệu trong tất cả các phân vùng khác và mỗi dữ liệu chứa cả các hàng và cột riêng biệt. Sơ đồ sau minh họa cách bảng có thể được phân vùng theo cả chiều ngang và chiều dọc

Sharding trong MySQL?

31. Transaction Storage Engines trong MySQL là gì?

Để có thể sử dụng transaction cơ sở của MySQL, bạn phải sử dụng storage engine InnoDB của MySQL. Đây là Storage Engine mặc định trong MySQL 5.7. InnoDB là một Storage Engine transaction-safe (tuân thủ ACID) cho MySQL có các commit, rollback và khả năng khôi phục lỗi để bảo vệ dữ liệu người dùng. Row-level locking của InnoDB và kiểu nonlocking read của Oracle-style làm tăng sự đồng thời và hiệu suất của nhiều người dùng. InnoDB lưu trữ dữ liệu người dùng trong các clustered indexes để giảm I/O cho các truy vấn thông thường dựa trên các primary key. Để duy trì tính toàn vẹn của dữ liệu, InnoDB cũng hỗ trợ các ràng buộc toàn vẹn Foreign Key.

III. Tài liệu tham khảo

Tài liệu được tham khảo từ các nguồn sau:

Chia sẻ: