Thứ Sáu, 30 tháng 6, 2023

Top 5 câu hỏi phỏng vấn MySQL hay gặp và câu trả lời

Mục lục nội dung
1. VARCHAR và CHAR khác nhau thế nào? Lúc nào thì sử dụng cái nào?
2. MySQL có bao nhiêu stored objects (đối tượng lưu trữ)?
3. Khác biệt giữa Heap Table và Temporary Table?
4. Sự khác biệt giữa MySQL và MongoDB
5. Kiểu timestamp và đôi điều đặc biệt trong MySQL
6. Tham khảo thêm về phỏng vấn MySQL

Lại là chuỗi bài series phỏng vấn, SQL có rồi, các hệ cơ sở dữ liệu (RDBMS) khác có rồi, giờ tới lượt MySQL. DB phổ biến hàng đầu thế giới liệu phỏng vấn có gì khác biệt?

Tất cả sẽ tới trong 3 phần của chuỗi bài viết phỏng vấn MySQL.

Bắt đầu thôi nào anh em. Meme cuối cùng cũng chỉ là meme chứ không ý gì là dìm hàng MongoDB. Coi chứ nhiều khi đâu phải MySQL là ngon nhất, nhưng thôi cứ cập nhật kiến thức phỏng vấn đã.

1. VARCHAR và CHAR khác nhau thế nào? Lúc nào thì sử dụng cái nào?

Câu hỏi phỏng vấn MySQL này là câu hỏi cơ bản ha anh em. Đánh giá ở mức độ Junior, nắm chắc kiến thức về các kiểu dữ liệu.

Đầu tiên thì CHAR và VARCHAR chắc chắn là kiểu dữ liệu dạng chuỗi ha. Độ dài các kí tự là cần được quy định.

  • CHAR lưu trữ các kí tự có độ dài cố định, trong khi VARCHAR lưu trữ các ký tự có độ dài không cố định (có thể thay đổi được)
  • Với kiểu CHAR, khi đã khai báo độ dài cố định, nếu chuỗi input vào có độ dài nhỏ hơn, các kí tự phía sau sẽ được tự động thêm vào bằng khoảng trắng.
  • Về hiệu suất thì CHAR tốt hơn VARCHAR một chút.
  • Chính vì độ dài CHAR cấp là cố định từ trước nên bộ nhớ cấp phát cũng có giới hạn, VARCHAR thì ngược lại, bộ nhớ của VARCHAR chưa giới hạn trước mà có thể thay đổi.

Phỏng vấn MySQL

Các kiến thức có thể bổ sung thêm ở phần này:

  • Khác nhau giữa TRUNCATE và DELETE
  • GRANT command trong MySQL
  • Kiểu Blob trong MySQL
  • Khác nhau giữa Foregin Key và Primary Key
  • ENUM trong MySQL

2. MySQL có bao nhiêu stored objects (đối tượng lưu trữ)?

Làm việc nhiều với MySQL tất nhiên anh em ít nhất đã từng một lần nghe hoặc dùng tới VIEW, STORED PROCEDURE, STORED FUNCTION.

Câu hỏi phỏng vấn MySQL này được phân loại ở mức độ Middle. Có 5 đối tượng dùng để lưu trữ trong MySQL nha anh em, bao gồm VIEW, STORED PROCEDURE, STORED FUNCTION, TRIGGER, EVENT.

Liệt kê từng loại:

  • VIEW – View được xem như một bảng ảo dưa trên kết quả truy vấn dữ liệu. Gom 3 field này ở bảng A, 2 field kia ở query B gom gom xếp xếp lại đem đặt vào VIEW.
  • STORED PROCEDURE – Là stored objects, được gọi tới về lệnh call. Có cái đặc biệt là procedure không trả về giá trị. Chỉ thực hiện làm một việc gì đó nha
  • STORED FUNCTION – Function thì ngược với PROCEDURE, nó có thể trả về một giá trị duy nhất. Có thể được gọi từ một câu lệnh khác.
  • TRIGGER – Trigger là một chương trình được liên kết với bảng. Cái này có thể gọi trước hoặc gọi sau các thao tác anh em thực hiện với table (insert, update, delete)
  • EVENT – Cái này anh em thường ít dùng, Event dùng để chạy một chương trình hoặc một tập các lệnh theo lịch trình đã lên từ trước đó.

Tham khảo việc làm MySQL Hồ Chí Minh hấp dẫn

Phỏng vấn MySQL
Chú ý là bài viết này chỉ đang đề cập tới MySQL nha anh em. SQL Server và MariaDB thì procedure có thể khác đấy.

3. Khác biệt giữa Heap Table và Temporary Table?

Anh em xài nhiều MySQL và thực hiện nhiều truy vấn hoặc có kinh nghiệm tối ưu performance có thể tự tin trả lời câu hỏi phỏng vấn MySQL này. Cũng không khó để trả lời câu này nếu nhìn vào từ khoá (Heap và Temporary).

Temporary tất nhiên là tạm, nên một số điểm khác biệt cốt lõi có thể nêu ra như sau:

  • Heap thì tồn tại trên memory, nếu anh em restart DB hay gì đó thì mất ha. Temporary thì ngược lại, do tính chất tạm bợ nên temporary chỉ tồn tại theo sessions. Session mất nghĩa là ta cũng mất.
  • Cũng phân biệt đối xử như vậy thì heap có thể chia sẻ giữa một vài client khi query tới DB, trong khi temporary table không chia sẻ giữa các clients.
  • Có cái hơn là để tạo được bảng tạm (temporary) anh em cần được cấp quyền, còn Heap thì không, cứ tạo thoải mái.

Thông tin thêm là MySQL heap table sẽ dử dụng hash index và rất nhanh nha anh em.

4. Sự khác biệt giữa MySQL và MongoDB

Câu hỏi phỏng vấn MySQL này chỉ nêu ví dụ là sự khác biệt với MongoDB. Tuy nhiên anh em nếu có hiểu biết thêm về các hệ cơ sở dữ liệu khác thì càng tốt ha.

Về khác biệt thì có nhiều nhưng anh em có thể liệt kê một số khác biệt chính như sau:

MongoDBMySQL
Là hệ cơ sở dữ liệu mã nguồn mở lưu trữ dạng JSONLà hệ cơ sở dữ liệu mã nguồn mở nhưng lưu trữ theo kiểu dữ liệu dạng quan hệ (relation)
Mỗi dòng dữ liệu khác nhau được lưu trữ theo kiểu document (tài liệu)Mỗi dòng dữ liệu được lưu trữ dưới dạng các hàng trong bảng
Tài liệu một nhóm các Documents sẽ được lưu trữ trong Collection.Một nhóm các records sẽ được lưu trữ trong một bảng

Anh em cũng có thể nói thêm về kiến trúc, sự khác biệt về hiệu năng, lúc nào nên sử dụng MongoDB, lúc nào nên sử dụng MySQL.

5. Kiểu timestamp và đôi điều đặc biệt trong MySQL

Câu này bảo là trick thì cũng đúng, nhưng nếu anh em biết thêm thì cũng hay. Đầu tiên cho 1 statement tạo bảng. Bảng này có 2 cột kiểu TIMESTAMP là start và end

CREATE TABLE phongvan (cau1 VARCHAR(32), cau2 VARCHAR(32), batdau TIMESTAMP, kethuc TIMESTAMP);
INSERT INTO game VALUES ("laptrinh", "cautrucvagiaithuat", now(), now());

Sau khi chạy xong câu này dữ liệu trong bảng như sau:

+-----------+--------+---------------------+---------------------+
| cau1     | cau2  | batdau               | kethuc                 |
+-----------+--------+---------------------+---------------------+
| laptrinh | cautrucvagiaithuat | 2014-07-17 20:44:35 | 2014-07-17 20:44:35 |
+-----------+--------+---------------------+---------------------+

Câu hỏi là khi thực hiện câu SQL dưới đây, những dữ liệu nào sẽ thay đổi?

UPDATE phongvan SET cau1 = "cautrucvagiaithuat" WHERE cau1 = "laptrinh";

Hầu hết anh em đều cho rằng chỉ có cột cau1 là cập nhật. Nhưng kết quả lại là cả cột batdau cũng cập nhật theo, mặc dù ta không thực hiện chạy update. Nguyên nhân là do batdau và ketthuc thuộc kiểu TIMESTAMP. Trong MySQL kiểu timestamp sẽ tự động cập nhật khi thực hiện câu UPDATE. Nhưng chỉ duy nhất cột đầu tiên thực hiện cập nhật đó. Trớ trêu cuộc tình ghê.

Câu này trong bộ câu hỏi phỏng vấn MySQL thì liệt vào dạng trick ha. Nếu anh em có biết trả lời được thì tốt, nếu không cũng không thể đánh giá gì vì nó thuộc dạng trick người thì biết, người không.

6. Tham khảo thêm về phỏng vấn MySQL

Cảm ơn anh em đã đón đọc

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master