MySQL của người phỏng vấn tại Kakao, người xử lý hơn 10.000 tỷ dữ liệu
Khóa học này giúp bạn học tập từng bước từ cách sử dụng MySQL cơ bản đến các kỹ thuật nâng cao cần thiết trong môi trường dịch vụ thực tế. Ngoài ra, khóa học còn bao gồm nhiều chủ đề đa dạng như kỹ thuật mô hình hóa dữ liệu dựa trên các ví dụ thực tiễn và dữ liệu thực tế, xem xét tính hiệu quả của thiết kế Foreign Key, phân tích DDL lược đồ của Google Calendar, và các nguyên tắc thiết kế DDL hiện đại. Đây là khóa học giúp bạn tìm hiểu sâu sắc cách vận dụng MySQL không chỉ như một cơ sở dữ liệu đơn thuần mà còn là một thành phần cốt lõi của hệ thống.
Càng ngẫm nghĩ, tôi càng thấy có rất nhiều nội dung thực sự hay. Tôi nghĩ những ai có thói quen tự học mà nghe bài giảng này thì sẽ rất tuyệt vời.
Nếu bạn được học chi tiết về các chủ đề lớn và dành thời gian để tự mình suy ngẫm ở một mức độ nào đó... tôi tin rằng nội dung này được xây dựng tốt hơn bất kỳ bài giảng nào khác.
5.0
이병석
89% đã tham gia
Là một nhà phát triển năm thứ 4 đang làm việc thực tế... mình không ngờ đây lại là một khóa học có thể giúp học sâu về MySQL đến thế này.
Với những ai đang ở mức độ "Tôi chỉ biết viết truy vấn cơ bản" về MySQL, mình thực sự khuyên các bạn nên xem khóa học này.
Mình nghĩ rằng tùy thuộc vào mức độ hiểu biết về DB mà chúng ta có thể triển khai đa dạng các mô hình ứng dụng vào dịch vụ, vượt xa cả việc tối ưu hóa truy vấn (query tuning), và mình đã học được rất nhiều điều.
Một khóa học quý giá như cơn mưa rào giữa mùa hạn...!
5.0
황규민
33% đã tham gia
Đây là một bài giảng giúp nâng cao tầm mắt. Tôi từng sử dụng Strategy Pattern để tuân thủ nguyên tắc OCP thay cho switch-case ở cấp độ ứng dụng, và tôi cảm thấy có sự tương đồng khi sử dụng bảng kích thước (dimension table) để tránh case-when ở cấp độ cơ sở dữ liệu.. Đây là lần đầu tiên tôi biết rằng SQL cũng có các pattern như vậy. Tôi cảm thấy mình có thể trưởng thành hơn nữa.
Bạn sẽ nhận được điều này sau khi học.
Quy trình mô hình hóa dữ liệu phổ biến trong thực tế và kỹ thuật tối ưu hóa cấu trúc quan hệ
Chiến lược quản lý tính toàn vẹn và hiệu suất sử dụng Foreign Key, Index và Transaction
Phân tích cấu trúc schema và thiết kế DDL hướng dịch vụ thông qua trường hợp của Google Calendar
Các mô hình tối ưu hóa truy vấn và tinh chỉnh hiệu năng MySQL trong môi trường lưu lượng truy cập lớn
Phát triển · Lập trình · Cơ sở dữ liệu
Viết được truy vấn nhưng không vẽ được bảng
Tôi có thể viết câu lệnh SELECT. Nhưng vấn đề nảy sinh khi phải thiết kế bảng từ con số không. Liệu có nên đặt Foreign Key hay không, liệu schema mà ORM tạo ra đã là tối ưu nhất chưa, hay làm thế nào để lưu trữ những dữ liệu như lịch trình lặp lại. Khóa học này sẽ bắt đầu từ các câu lệnh truy vấn và đi sâu vào cả phần thiết kế lẫn cấu trúc bên trong của engine.
Trình độ Nhập môn
MySQL 8.x
Cung cấp truy vấn thực tế
Câu đố theo từng phần
Thời hạn khóa học vô hạn
Từ cú pháp đến bên trong engineINSERT·UPDATE·DELETE·SELECT · JOIN · Anti-pattern · Modeling · InnoDB
Schema của Google CalendarThiết kế thực tế cách lưu trữ các lịch trình lặp lại
2 nhà phát triển đang đương chứcNgười phỏng vấn 12 năm kinh nghiệm tại trụ sở Kakao · Phát triển máy chủ nền tảng Pangyo
MySQL là cơ sở dữ liệu quan hệ mà hầu hết các dịch vụ đều sử dụng. Khóa học này không dừng lại ở cách sử dụng truy vấn mà đi sâu vào cả thiết kế schema và bên trong engine.
Điểm xuất phát của bài giảng này
Biết cách sử dụng và thiết kế là hai việc khác nhau
Công việc đang làm hiện tại
Viết truy vấn
Lấy ra những dữ liệu cần thiết. Nếu chậm thì thêm một index nữa. Về cơ bản là vẫn chạy được.
Khi cần phải quyết định cấu trúc
Nơi bị tắc nghẽn
Vẽ bảng
Thực thể có hơn 20 thuộc tính, lịch trình lặp đi lặp lại, và khóa ngoại không biết khi nào nên đặt.
Truy vấn là việc viết dựa trên cấu trúc đã có sẵn, còn thiết kế là việc quyết định cấu trúc đó. Khóa học này sẽ hệ thống lại về truy vấn ở phần đầu và chuyển sang phần thiết kế ở phần sau.
Nơi bài giảng này bắt đầu
Đây là cuộc đối thoại thực tế đã diễn ra
Đây là câu chuyện nảy sinh khi cùng nhau xem lại các đánh giá về bài giảng MySQL đã thực hiện trước đó.
Đây là câu chuyện được chia sẻ sau khi xem các đánh giá về bài giảng MySQL đã tạo trước đó.
HHongBài giảng MySQL chúng ta cùng làm lần trước, tôi nghĩ nội dung đều tốt cả nhưng hóa ra có những người muốn tập trung vào những điều cơ bản hơn tôi tưởng. Điều đó làm tôi hơi bận tâm.
TNhà phát triển TossTôi cũng đã nghĩ như vậy. Tôi đã chuẩn bị với mong muốn vẽ ra một bức tranh toàn cảnh, nhưng khi xem các bài đánh giá, có vẻ như nhiều người muốn tập trung vào các quan điểm cơ bản và mô hình hóa hơn.
KNhà phát triển Kakao (Người phỏng vấn)Bản thân tôi cũng thấy nội dung rất tốt, nhưng tôi cũng tự hỏi liệu đây có thực sự là bài giảng dành cho người mới bắt đầu hoàn toàn hay không. Xem xong tôi cũng muốn thử sức một lần. Vì làm người phỏng vấn nên tôi cũng tiếp xúc nhiều với các bạn cấp độ Junior.
HHongVì vậy, lần này tôi liên lạc để thử xây dựng nội dung từ những điều cơ bản đến các mô hình nâng cao, các nguyên tắc thiết kế DDL thực tế và cả thiết kế trong thực tiễn nữa.
KNgười phỏng vấn Kakao (Nhà phát triển)Vậy lần này tôi sẽ tham gia. Tôi đang nghĩ đến một hướng tiếp cận là đi từ cấp độ Junior và dần dần mở rộng sang góc nhìn của Senior.
Bạn sẽ học được gì
Theo thứ tự Cú pháp · JOIN · Anti-pattern · Modeling · Nội bộ
Cú pháp cơ bảnTổng hợp INSERT·UPDATE·DELETE·SELECT chia theo cấp độ cơ bản và nâng cao
JOINCách hoạt động của Nested Loop Join, xử lý NULL trong LEFT JOIN, sự khác biệt về kế hoạch thực thi (execution plan) giữa WHERE và ON
Anti-patternĐiểm qua năm trường hợp thực tế thường gặp thông qua vấn đề và giải pháp
Mô hình hóa dữ liệuTừ mô hình logic đến các chiến lược thiết kế vật lý như One Table per Anchor · Side Table · EAV
Thiết kế Google CalendarGiải mã các sự kiện lặp lại và cấu trúc Slot thông qua các ví dụ dịch vụ thực tế
Foreign Key Lịch sử và các tùy chọn, cùng câu hỏi "Liệu nó có luôn đúng không"
Bên trong EngineTừ Transaction, Lock, MVCC, Optimizer, B-Tree cho đến Buffer Pool trong phần cuối cùng
Một cảnh tượng về Anti-pattern
Cùng một kết quả, kế hoạch thực thi khác nhau
Có những trường hợp dù đã tạo index nhưng vẫn chậm. Nếu bao bọc cột index bằng một hàm, index đó sẽ không thể sử dụng được.
안티 패턴
WHERE DATE(created_at) = '2026-01-01'
Cho dù đã tạo chỉ mục (index) nhưng vẫn không thể sử dụng được.
Vì nó quét toàn bộ bảng nên dữ liệu càng tăng thì tốc độ sẽ càng chậm đi tương ứng.
Cho đến khi xem kế hoạch thực thi (execution plan), bạn sẽ không biết tại sao nó lại chậm.
고친 뒤
WHERE created_at >= '2026-01-01' AND created_at < '2026-01-02'
Vì để nguyên cột nên nó chuyển sang quét phạm vi chỉ mục (index range scan)
Kết quả vẫn vậy nhưng lượng dữ liệu cần đọc sẽ giảm đi.
Sửa từng cái một trong năm phản mẫu (anti-pattern) theo cùng một cách như vậy
Trong phần 4, các vấn đề như CASE WHEN và bảng chiều (dimension table), SELECT ALL của view, lạm dụng DISTINCT, và lồng ghép view cũng sẽ được xử lý theo cách tương tự.
Chiến lược thiết kế vật lý
Ba lựa chọn khi số lượng thuộc tính trở nên nhiều hơn
Làm thế nào để chứa một thực thể có hàng chục thuộc tính trả lời bằng "Có/Không". Không có câu trả lời chính xác, chỉ có sự đánh đổi.
One Table per AnchorTập hợp tất cả vào một bảng làm chuẩn. Việc đọc dữ liệu đơn giản nhưng số lượng cột sẽ tiếp tục tăng lên
Side TableTách riêng phần thân chính và các phần phụ trợ. Số lượng Join sẽ tăng lên nhưng đổi lại phần thân chính sẽ trở nên nhẹ hơn
EAVLưu trữ các thuộc tính dưới dạng hàng. Đổi lại sự linh hoạt là việc truy vấn và ràng buộc trở nên khó khăn hơn
Ở phần 5, chúng ta sẽ đặt cả ba cạnh nhau để so sánh, đồng thời tìm hiểu những vấn đề phát sinh khi lược đồ thay đổi (Schema Evolution). Trong phần 6, chúng ta sẽ thiết kế cấu trúc Slot và sự kiện lặp lại với ví dụ là Google Calendar.
Phần cuối cùng
Đi sâu vào bên trong engine
Các câu hỏi chuyên sâu trong buổi phỏng vấn thường nằm ở lĩnh vực này. Toàn bộ phần cuối cùng đã được dành riêng cho nội dung này.
MVCC
Gap Lock
Chỉ mục B-Tree
Buffer Pool LRU
Autocommit
Intention Lock
Isolation Level
Query Rewriting
Biểu đồ tần suất (Histogram)
Filesort
Partitioning
InnoDB Page
Doublewrite Buffer
WAL · fsync
Không chỉ dừng lại ở việc liệt kê các thuật ngữ. Chúng ta sẽ xem xét từng nội dung một, từ sự khác biệt giữa Statement-based và Row-based, việc khóa (lock) được giữ ở cấp độ nào, cho đến cách các trang bị đẩy ra khỏi Buffer Pool.
Từ truy vấn đến thiết kế
Bắt đầu từ cú pháp cơ bản và kết nối trực tiếp đến tận bên trong InnoDB.
Phần đầu là cú pháp và JOIN, phần giữa là anti-pattern và thiết kế mô hình (modeling), và phần cuối là cấu trúc bên trong engine.
01
Giới thiệu khóa học
Giới thiệu bài giảng
Các thuật ngữ kỹ thuật cơ bản nên biết trong MySQL [ Đính kèm tệp ]
02
Hướng dẫn MySQL cơ bản cho mọi người đều hiểu
Hướng dẫn cơ bản về MySQL INSERT giúp ai cũng có thể hiểu được
Hướng dẫn MySQL INSERT nâng cao cho mọi người đều hiểu được
Hướng dẫn cơ bản về MySQL UPDATE giúp ai cũng có thể hiểu được
Hướng dẫn nâng cao về MySQL UPDATE giúp ai cũng có thể hiểu được
Hướng dẫn cơ bản về MySQL DELETE giúp ai cũng có thể hiểu được
Hướng dẫn nâng cao về MySQL DELETE giúp ai cũng có thể hiểu được
MySQL Mock Data Script
Hướng dẫn cơ bản về MySQL SELECT giúp ai cũng có thể hiểu được
Hướng dẫn nâng cao về MySQL SELECT giúp bất kỳ ai cũng có thể hiểu được
Câu đố phần 2
03
Lý do nên sử dụng MySQL JOIN
Các loại JOIN đa dạng trong MySQL
Nested Loop Join, Matched Function
Xử lý NULL trong LEFT JOIN và kế hoạch thực thi của điều kiện WHERE vs ON
Subquery Unnesting, CTE, AST
Trắc nghiệm Phần 3
04
Các SQL anti-pattern đa dạng cần tránh
SQL Anti-pattern 1: CASE WHEN và các mẫu bảng kích thước (dimension table) cũng như view
SQL 안티 패턴 2 : 인덱스 컬럼에서 함수 사용의 문제와 해결
SQL Anti-pattern 3: Vấn đề và giải pháp khi sử dụng SELECT ALL trong View
SQL 안티 패턴 4 : DISTINCT 남용으로 인한 중복 문제와 해결
SQL Anti-pattern 5: Vấn đề và giải pháp của Excessive View Layer Stacking
Câu đố phần 4
05
Kỹ thuật mô hình hóa dữ liệu học qua nhiều ví dụ dụ
Mô hình hóa dữ liệu: Định nghĩa thiết kế và mô hình logic cho vô số thuộc tính yes hoặc no
Mô hình hóa dữ liệu: Chiến lược thiết kế vật lý One Table per Anchor
Thiết kế mô hình dữ liệu: Chiến lược thiết kế vật lý Side Table (Bảng phân tách)
Mô hình hóa dữ liệu : Chiến lược thiết kế vật lý Entity–Attribute–Value (EAV)
Database Design Deep Dive Schema Evolution
Database Design Deep Dive Modern Alternatives
Trắc nghiệm Phần 5
06
Kiểm chứng mô hình hóa dữ liệu qua ví dụ Google Calendar
Xác định vấn đề và hiểu mô hình logic của Google Calendar
Google Calendar Basic All-Day Events
Tangled Attribute để mô hình hóa sự kiện lặp lại trong Google Calendar
Mô hình hiển thị (thực thi) Google Calendar - Cấu trúc Slot
Trắc nghiệm Phần 6
07
Foreign Key và Chiến lược mẫu (Strategy Pattern)
Cốt lõi và lịch sử của tính nhất quán dữ liệu Foreign Key
Foreign Keys Enforced & References Options
Foreign Keys JOIN & one equals one
Foreign Key có luôn là một mô hình đúng đắn không?
Trắc nghiệm Phần 7
08
Các chủ đề nâng cao về MySQL
Giới thiệu phần
MySQL Transaction Deep Dive [ LifeCycle, Autocommit, Statement vs Row based ]
MySQL Lock [ Intention Lock, Gap Lock, đa phân đoạn ]
MySQL InnoDB [ Recovery, Log, MVCC ]
Tìm hiểu sâu về Cấp độ cô lập giao dịch (Transaction Isolation Level Deep Dive)
MySQL Optimizer [ Query Rewriting, Histogram ]
Filesort, Bảng tạm thời (Temporary Table) và Phân vùng (Partitioning)
Cấu trúc lưu trữ MySQL Trang InnoDB
MySQL B-Tree Index [ Clustered, Secondary, Page, Format ]
MySQL Page Management Buffer Pool [ LRU ]
Doublewrite Buffer, hiệu suất dưới góc nhìn của WAL và FSync
Câu đố phần 8
Dành cho những người như thế này
Khóa học này dành cho ai?
Các nhà phát triển trình độ sơ - trung cấp muốn củng cố vững chắc kiến thức cơ bản về MySQL
Những người cảm thấy khó khăn trong việc thiết kế thực thể và quan hệ, đồng thời muốn biết khi nào và tại sao nên sử dụng Foreign Key.
Các nhà phát triển backend tò mò về cách thiết kế MySQL trong các dịch vụ quy mô lớn
Những người muốn hệ thống hóa các chủ đề phỏng vấn DB điển hình như transaction, tính toàn vẹn, index dựa trên tiêu chuẩn thực tế.
Nhà phát triển muốn xem MySQL không chỉ là một kho lưu trữ mà là một thành phần cốt lõi trong thiết kế dịch vụ
Thị trường hiện nay
Câu chuyện về việc AI thay thế lập trình viên
Tuyển dụng mới đang giảm dần, và các doanh nghiệp chỉ muốn chọn những người đã được kiểm chứng. Đây là những bài báo xuất hiện trong vài tháng gần đây.
Krafton, công ty vừa đạt được kết quả kinh doanh cao kỷ lục, đã bắt đầu cắt giảm nhân sự. Lý do được đưa ra là để chuyển đổi thành một doanh nghiệp 'AI First'.
Các doanh nghiệp chuyên về phần mềm đang ngừng tuyển dụng lập trình viên mới. Cũng có dự báo cho rằng việc tuyển dụng lập trình viên trình độ sơ cấp sẽ giảm mạnh tới 77%.
53% nhà thiết kế trò chơi đã trả lời rằng "AI sẽ thay thế công việc của tôi". Các trường hợp thôi việc theo khuyến nghị cũng đã được báo cáo.
Khi doanh nghiệp càng bất an, người ứng tuyển càng phải thể hiện sự khác biệt rõ rệt hơn. Việc học cuối cùng vẫn là do bản thân tự nỗ lực, nhưng tùy vào việc bạn nhìn nhận cái gì và dưới góc độ nào mà chiều sâu giải thích sẽ khác nhau dù cùng bỏ ra một lượng thời gian như nhau. Bài giảng này được tạo ra để truyền tải góc nhìn đó.
Đánh giá khóa học
Chia sẻ từ những người đã học trước đó
Tôi đã trích dẫn nguyên văn từ đánh giá khóa học trên Inflearn.
"Đây là một trong những bài giảng hữu ích nhất mà tôi từng xem trên Inflearn. Từ những nội dung MySQL đơn giản đến lý thuyết thiết kế DDL thực tế, và cả những góc nhìn nội bộ chuyên sâu, tôi nghĩ đây thực sự là một bài giảng rất khó có thể tìm thấy ở đâu khác. Có vẻ như đây là lần đầu tiên tôi thấy một bài giảng như thế này trên Inflearn."
Thích số 8 · Viết sau khi hoàn thành 91% khóa học
"Là một nhà phát triển năm thứ 4 đang làm việc thực tế, tôi không ngờ đây lại là một bài giảng có thể giúp học sâu về MySQL đến mức này. Tôi muốn đề xuất bài giảng này cho tất cả những ai đang ở mức "Tôi chỉ biết cách viết truy vấn cơ bản". Không chỉ dừng lại ở việc tối ưu hóa truy vấn (query tuning), tôi đã học được rất nhiều pattern đa dạng để áp dụng vào dịch vụ thực tế."
Lee Byung-seok · Viết sau khi hoàn thành 89% khóa học
"Càng nghiền ngẫm, tôi càng thấy có nhiều nội dung thực sự hay. Nếu bạn tìm hiểu kỹ các chi tiết trong những chủ đề lớn và dành thời gian tự suy nghĩ ở một mức độ nhất định, tôi tin rằng đây là bài giảng có nội dung tốt hơn bất kỳ bài giảng nào khác."
warna · Viết sau khi hoàn thành 91% khóa học
Giảng viên
Hai nhà phát triển đương nhiệm đã cùng nhau tạo ra nó
Khóa học này được thực hiện bởi Choi, một nhà phát triển 12 năm kinh nghiệm đang phát triển máy chủ tại trụ sở chính của Kakao và cũng hoạt động với tư cách là người phỏng vấn, cùng với Hong, một nhà phát triển máy chủ nền tảng tại Pangyo.
KAKAO · BACKEND ENGINEER · 12 năm kinh nghiệm · Người phỏng vấn
Choi
Tôi là nhà phát triển Backend với 12 năm kinh nghiệm hiện đang phát triển server tại trụ sở Kakao, đồng thời cũng đang hoạt động với vai trò là người phỏng vấn. Trong các buổi phỏng vấn, thay vì cú pháp lập trình, tôi chủ yếu xem xét khả năng thiết kế của ứng viên. Tôi đã mang nguyên quan điểm đó vào trong bài giảng này.
"Việc viết truy vấn giỏi và việc thiết kế cấu trúc là hai năng lực khác nhau."
Hiện là nhà phát triển máy chủ tại trụ sở Kakao · Người phỏng vấn · Chuyên ngành Khoa học máy tính
Dữ liệu lớnMô hình hóa dữ liệuNgười phỏng vấnBackend
Người chia sẻ kiến thức · Phát triển máy chủ nền tảng tại Pangyo
Hong
Tôi đang đảm nhận việc phát triển máy chủ nền tảng tại Pangyo. Tôi tiếp tục hoạt động với tư cách là người chia sẻ kiến thức để chia sẻ các phương pháp tự học cũng như những vấn đề và giải pháp gặp phải trong thực tế. Các bài giảng không được thực hiện một mình mà được xây dựng cùng với nhiều nhà phát triển khác đang làm việc trong ngành.
"MySQL thì dễ, nhưng khi thực sự phải vẽ bảng từ đầu thì lúc nào tôi cũng bị khựng lại."
Phát triển máy chủ nền tảngCơ sở dữ liệuNhiều bài giảng Backend
Câu hỏi thường gặp
Câu hỏi thường gặp về khóa học MySQL
Q.Tôi có thể học khóa này ngay cả khi lần đầu sử dụng MySQL không?
⌄
Mức độ khó được thiết lập ở mức nhập môn. Phần 1 sẽ hệ thống lại các thuật ngữ cơ bản và toàn bộ Phần 2 sẽ là về INSERT·UPDATE·DELETE·SELECT. Mỗi nội dung được chia thành hai bài giảng cơ bản và nâng cao, vì vậy chúng tôi không bỏ qua bất kỳ giai đoạn cú pháp nào.
Q.Nội dung về mô hình hóa dữ liệu được đề cập đến mức độ nào?
⌄
Bắt đầu từ mô hình logic cho đến chiến lược thiết kế vật lý. Chúng ta sẽ lần lượt tìm hiểu về One Table per Anchor, Side Table, EAV, cũng như các vấn đề khi schema thay đổi và các giải pháp thay thế hiện đại. Trong chương tiếp theo, chúng ta sẽ thiết kế cấu hình Slot và mô hình hóa sự kiện lặp lại với ví dụ là Google Calendar.
Q.Có nhất thiết phải sử dụng Foreign Key không?
⌄
Phần 7 sẽ giải đáp câu hỏi đó. Sau khi tổng hợp về lịch sử của khóa ngoại (Foreign Key), các tùy chọn cưỡng chế và mối quan hệ với Join, tiêu đề của bài giảng cuối cùng là "Foreign Key có luôn là một pattern đúng đắn?". Nội dung sẽ không kết thúc bằng việc nên dùng hay không nên dùng, mà sẽ xem xét bên nào có lợi hơn trong những điều kiện nhất định.
Hỏi: Có cần phải biết đến tận bên trong engine không?
⌄
Nếu trong buổi phỏng vấn họ hỏi sâu hơn, thì thường sẽ rơi vào phạm vi này. Ở chương cuối, chúng ta sẽ tìm hiểu về vòng đời của transaction, Intention Lock và Gap Lock, MVCC và phục hồi, các cấp độ cô lập (isolation level), việc tối ưu hóa viết lại truy vấn và histogram, cấu trúc chỉ mục B-Tree, LRU của buffer pool, cho đến Doublewrite Buffer và WAL.
Q.Dữ liệu thực hành có được cung cấp không?
⌄
Script dữ liệu mẫu (Mock Data Script) nằm trong phần 2. Bạn chỉ cần thêm nó vào và chạy các câu lệnh truy vấn như trong bài giảng. Mỗi bài giảng đều cung cấp các câu lệnh MySQL thực tế đi kèm.
Hỏi: Khóa học này có giúp ích cho việc chuẩn bị phỏng vấn không?
⌄
Khóa học này được xây dựng bởi các nhà phát triển đang hoạt động với vai trò là người phỏng vấn tại Kakao. Những góc nhìn về cách đặt câu hỏi liên quan đến cơ sở dữ liệu đã được phản ánh vào cấu trúc bài giảng, và mỗi phần đều có các câu đố để bạn có thể tự kiểm tra lại kiến thức của mình.
Vượt ra ngoài các truy vấn, chúng tôi thiết kế cấu trúc beyond just queries
Bắt đầu từ cú pháp cơ bản, chúng ta sẽ đi sâu vào cả phần mô hình hóa và cấu trúc bên trong engine cho đến khi hoàn thành.
Nếu bị tắc nghẽn một mình sẽ mất rất nhiều thời gian. Có một không gian riêng để bạn có thể thoải mái chia sẻ từ những phần vướng mắc khi nghe bài giảng, những câu hỏi phát sinh khi áp dụng vào dịch vụ của chính mình, cho đến những câu chuyện về sự nghiệp và thực tế công việc.
OPEN CHAT · Cộng đồng nhà phát triển
Chúng ta chia sẻ những gì?
Chúng tôi chia sẻ về những vấn đề thực tế gặp phải trong công việc, các cấu trúc mà người khác đã lựa chọn, cũng như những câu chuyện về sự nghiệp lập trình viên. Các câu hỏi liên quan đến bài giảng cũng luôn được chào đón.
"Những chỗ bạn gặp bế tắc thường thì người khác cũng gặp bế tắc tương tự. Hỏi người đã đi trước là cách nhanh nhất."
Câu hỏi về bài giảngTrường hợp áp dụng thực tếCâu chuyện nghề nghiệp
Tôi bắt đầu học lập trình sau một thời gian dài lười biếng ở nhà và cảm thấy hứng thú với nó, hiện tại tôi đang đảm nhận việc phát triển máy chủ nền tảng (platform server) tại Pangyo. Tôi tiếp tục hoạt động với tư cách là người chia sẻ kiến thức vì muốn cung cấp cho các bạn phương pháp tôi đã học cũng như những vấn đề và giải pháp khác nhau mà các bạn có thể gặp phải trong thực tế.
Bài giảng không chỉ được tạo ra từ kiến thức của riêng tôi. Mọi bài giảng đều có sự đồng hành của những người cộng sự.
Tôi đã xem và thấy rất hữu ích!! Với nội dung như thế này thì thành thật mà nói mức giá này là quá rẻ, và tôi đã có thể học hỏi được quan điểm của một người có năng lực. Xin cảm ơn bạn.
Chào bạn "Kẻ cuồng lập trình", cảm ơn bạn đã để lại đánh giá tốt nhé!! Mình sẽ cố gắng cung cấp thêm nhiều nội dung hữu ích hơn nữa trong tương lai. Xin cảm ơn!!
Xin chào mọi người, mình là Choi (tên giả định), hiện đang làm nhà phát triển kiêm người phỏng vấn tại Kakao..!!
Lần trước, sau khi thấy một người bạn ở Toss làm bài giảng, mình cũng cảm thấy có động lực nên đã thử tạo ra một khóa học liên quan đến MySQL như thế này.
mình đã nỗ lực để lồng ghép rất nhiều khái niệm vào đây. Mình tin rằng nếu các bạn học kỹ từng nội dung một, đây sẽ là một khóa học giúp bạn chuẩn bị hoàn hảo đến 90% những gì cần thiết để sử dụng MySQL.
(Bao gồm cả góc nhìn áp dụng vào thực tế nữa nhé!!)
MySQL thực ra khá dễ, nhưng mỗi khi cần dùng đến thì lại hay quên, khiến nó trở thành một kỹ năng khá lấp lửng. Hy vọng qua khóa học này, các bạn có thể vừa ôn tập lại kiến thức cũ, vừa học hỏi thêm được nhiều khái niệm mới.
Xin cảm ơn các bạn.
Càng ngẫm nghĩ, tôi càng thấy có rất nhiều nội dung thực sự hay. Tôi nghĩ những ai có thói quen tự học mà nghe bài giảng này thì sẽ rất tuyệt vời.
Nếu bạn được học chi tiết về các chủ đề lớn và dành thời gian để tự mình suy ngẫm ở một mức độ nào đó... tôi tin rằng nội dung này được xây dựng tốt hơn bất kỳ bài giảng nào khác.
Chào bạn warna, cảm ơn bạn đã để lại đánh giá tốt nhé!!
Có vẻ như định hướng của bạn rất giống với những gì tôi đang theo đuổi!! Do đặc thù của việc giảng dạy, chúng ta thực sự cần thời gian để tự nghiên cứu, nghiền ngẫm các khái niệm và biến chúng thành kiến thức của riêng mình...!!
Bởi vì việc phát triển phần mềm là do bản thân mình tự thực hiện, và thực tế là trong môi trường làm việc thực tế, rất hiếm khi có trường hợp ai đó "dâng tận miệng" cho mình.
Tôi cảm thấy rất tự hào vì bạn có cùng giá trị quan với tôi ㅎㅎ Chúc bạn một ngày tốt lành!
Là một nhà phát triển năm thứ 4 đang làm việc thực tế... mình không ngờ đây lại là một khóa học có thể giúp học sâu về MySQL đến thế này.
Với những ai đang ở mức độ "Tôi chỉ biết viết truy vấn cơ bản" về MySQL, mình thực sự khuyên các bạn nên xem khóa học này.
Mình nghĩ rằng tùy thuộc vào mức độ hiểu biết về DB mà chúng ta có thể triển khai đa dạng các mô hình ứng dụng vào dịch vụ, vượt xa cả việc tối ưu hóa truy vấn (query tuning), và mình đã học được rất nhiều điều.
Một khóa học quý giá như cơn mưa rào giữa mùa hạn...!
Chào anh Lee Byeong-seok, thật vinh dự cho tôi khi được gặp một nhà phát triển đang làm việc thực tế như anh. Tôi cũng cảm thấy hơi ngại ngùng chút ạ ㅎㅎ
Trong tương lai, tôi sẽ cung cấp thêm nhiều bài giảng bổ ích như những cơn mưa rào mang đến những thông tin hữu ích cho anh.
Chúc anh một ngày tốt lành!!