Chương 1: Giới thiệu về MySQL 

Giới thiệu về MySQL

Cuối cùng cũng tới được phần II rồi ! Thở một cái nào ! Giờ thì các bạn không còn là một beginner về PHP nữa, bạn đã có thể viết một trang web bằng PHP rồi đấy ! Nhưng đấy chỉ là về cơ bản, chưa có gì hấp dẫn cả đâu ! Bạn đã học những chức năng rời rạc của PHP, vấn đề là trong thực tế mình dùng những chức năng ấy như thế nào, dùng để làm gì cho trang web, làm sao kết hợp các chức năng đó lại để phục vụ cho mục đích của mình ! Bạn đã từng suy nghĩ làm sao để tạo một forum hay đơn giản chỉ là một cái blog cho riêng mình chưa nhỉ ? Tất nhiên ý tôi muốn nói là bạn tự viết, chứ không phải dùng các công cụ có sẵn để làm forum hay dùng các dịch vụ blog miễn phí như Yahoo 360 hay WorldPress, Opera,…
Thế thì đừng chần chừ nữa, hãy bắt tay vào khám phá MySQL, bạn đồng hành của PHP ! Hai người bạn này mà hợp sức lại thì sẽ làm nên nghiệp lớn đấy !
Mục Lục next chapter

MySQL là gì ?

MySQL là một chương trình dùng để quản lý hệ thống cơ sở dữ liệu (CSDL), CSDL là một hệ thống lưu trữ thông tin ! Giống như một file text chứ gì ? Không, hoàn toàn không ! Điều quan trọng ở đây là CSDL là một hệ thống được sắp xếp, phân lớp rõ ràng ngăn nắp những thông tin mà mình lưu trữ.
Nếu tớ không thích sắp xếp gọn gàng ngăn nắp thì sao ? Tớ thích cứ bừa ra hỗn độn thế đấy ! Có ai kề dao vào cổ bắt tớ phải sắp xếp thông tin lưu trữ cho có trật tự lại không ?
Không ! Chả ai ép bạn sắp xếp lại cả, nhưng cuối cùng rồi chính bạn là người sẽ tự kề dao vào cổ mình thôi ! Hãy thử tưởng tượng nhé : khi bạn bước vào một căn phòng, bạn chứng kiến một cảnh tượng hỗn độn chưa từng thấy trên đời : nồi niêu xoong chảo bừa cả trên giường, chăn màn chiếu gối dồn cục ở xó bếp, bát đĩa đầy dầu mỡ ngỗn ngang trong bồn chưa được rửa, tủ chứa đầy sách bị đổ cả ra ngoài không còn lối đi, chiếc máy tính được tìm thấy dưới một lớp vỏ chai bia, nước ngọt, trái cây, vỏ kẹo,…thì bạn có thấy dễ chịu không ? Tôi thà không thèm trỡ về còn hơn là chui vô đó để ngủ ! Chẳng hạn trong hình này, đố bạn tìm được hộp cơm của tôi đấy, đố bạn biết tôi ngồi ở đâu để đánh máy vi tính !

hon don

Sự ngăn nắp thì có lợi như thế nào ? Tưởng tượng một cái tủ hồ sơ nhé ! Tất cả hồ sơ được cất trong đó, ngăn trên cùng chứa hồ sơ khách hàng, ngăn dưới chứa hồ sơ nhân sự trong công ty, ngăn dưới nữa chứa các catalogues sản phẩm của công ty. Và trong mỗi ngăn hồ sơ lại được sắp xếp theo một thứ tự nào đó, chẳng hạn khách hàng thì được sắp xếp theo mẫu tự ABC, nhân sự thì được sắp xếp theo cấp bậc trong công ty, và mỗi cấp bậc lại được sắp xếp theo mẫu tự ABC nữa, tên sản phẩm cũng được sắp xếp theo vần ABC hoặc theo lĩnh vực sử dụng (giải trí, ăn uống, du lịch, thời trang, thương mại,…). Như vậy, chuyện tìm ra một hồ sơ để xử lý không còn là vấn đề khó khăn nữa đúng không ?
Thông tin cũng vậy, nếu bạn sắp xếp tốt thông tin mà bạn sưu tập và lưu trữ, thì sau đó bạn sẽ dễ dàng tìm ra thông tin cần thiết để xử lý !

PHP làm việc cùng với MySQL

Nói nhiều vậy đâu có ích gì phải không ? Nói thiệt đọc xong mấy đoạn trên tôi cũng chưa tưởng tượng ra rốt cụt thì MySQL là cái gì !
Cho tới bây giờ mình chỉ biết mỗi PHP, dùng để ra lệnh cho server làm gì đó ! Và mình ra lệnh bằng tiếng PHP (ngôn ngữ PHP) ! Với MySQL, mình sẽ ra lệnh cho nó bằng « tiếng SQL » ! Đừng hoảng, tạm thời bạn hãy nhớ điều này, rồi tôi sẽ giải thích ngôn ngữ SQL là gì.
Vấn đề là không hiểu sao mình không có cách nào để ra lệnh trực tiếp cho MySQL, có lẽ thằng MySQL không hiểu tiếng của mình nên nó nhờ thằng PHP làm thông dịch giúp ! Và vì vậy mà mình mới phải nhờ PHP làm trung gian để mình ra lệnh cho MySQL. Ví dụ mình bảo PHP như thế này : "mày đi mà nói với thằng MySQL rằng tao muốn lấy tài liệu số 4 hàng thứ 2" ! Đại khái như vậy.
Sơ đồ hóa quá trình làm việc của PHP và MySQL như thế này :

co che hoat dong cua MySQL

Ở đây mình không thấy client đâu cả, mình chỉ quan tâm đến những gì server làm khi phát sinh một trang web từ php mà thôi.
Đây là những gì diễn ra khi client yêu cầu server cho phép post một tin nhắn mới lên forum :
  1. Server sử dụng PHP để thực hiện việc chuyển tải tin nhắn
  2. PHP thực hiện việc cần làm của nó, rồi báo cáo là nó cần đến MySQL để lưu trữ tin nhắn đó, thế là PHP gọi « alo, anh MySQL cho em gửi nhờ tin nhắn này trong cơ sở dữ liệu nhé, để sau này cần thì em còn lấy lại »
  3. MySQL nhận lời gửi thác của PHP, làm chút việc của nó, rồi trả lời lại PHP rằng « mọi việc OK, chú có thể lấy dữ liệu lúc nào cũng được » !
  4. PHP quay lại nói với Server rằng MySQL đã chấp nhận yêu cầu, lệnh đã được gửi ! Server có thể in nội dung tin nhắn ra được rồi !
Đại khái quá trình làm việc song hành của PHP và MySQL là như vậy!
Bây giờ chúng ta cùng ngâm cứu xem CSDL được sắp xếp tổ chức như thế nào nhé!

Cấu trúc của một cơ sở dữ liệu

Chú ý chú ý: cẩn thận ở phần này, những gì sau đây là vô cùng quan trọng để lãnh ngộ được ruột gan của CSDL!
Tôi chưa yêu cầu bạn phải nhớ nằm lòng từ ngữ nào cả phải không? Vậy lần đầu tiên tôi xin các bạn hãy nhớ các thuật ngữ sau đây, bởi vì với CSDL mình cần phải dùng từ chính xác! Để dễ nhớ mình có thể tưởng tượng một cái tủ chứa đồ nhé, và những từ in đậm sau đây là những thuật ngữ mà bạn buộc phải nhớ và dùng chính xác :
  1. CSDL, data base (gọi tắt là base)là một cái tủ mà mấy bà thư kí hay chứa thông tin tài liệu trong đó
  2. Trong tủ có rất nhiều ngăn kéo, một ngăn kéo theo ngôn ngữ MySQL gọi là một table. Mỗi ngăn kéo chứa nhiều loại dữ liệu khác nhau, ví dụ một ngăn kéo chứa nick name, thông tin, bài viết của các thành viên trong forum chẳng hạn!
    Một table cũng tương tự, nó chứa các loại dữ liệu khác nhau, mình có thể tưởng tượng nó như một cái bảng, trong đó các cột gọi là các trường (fields) còn các hàng gọi là row hay record. Ví dụ một table tên là visitors như sau:
Stt nickname email age
1 onggia thanhtra0104@yahoo.com 21
2 khoailang khoailang@hotmail.com 18
3 cuchuoi freedom@gmail.com 20
4 batron khung@yahoo.fr 32
... ... ... ...
Đây là bảng chứa dữ liệu của một table (hay một ngăn kéo)! Bảng gồm 4 trường (4 fields): stt, nickname, email và age! 4 record (4 hàng), thực tế một bảng có thể chứa hàng trăm, hàng nghìn record (row) như vậy! Mỗi record chứa thông tin của một người chẳng hạn!
Khi tạo một bảng như vậy, thường mình nên tạo một cột số thứ tự hay “id”, cái này rất tiện lợi về việc quản lý, chúng ta sẽ thấy sự tiện lợi này sau! Bây giờ hãy tóm tắt lại sơ sơ về CSDL nhé:
Một CSDL chứa nhiều table, ( nhiều bảng), mỗi table chứa dữ liệu được xếp vào các hàng (row, record) và các cột (fields)!
Ví dụ một forum có thể có các table sau đây:
  • Một table chứa tin tức mới (news)
  • Một table chứa bài viết cho sổ lưu bút
  • Một table chứa thông tin thành viên
  • Một table chứa nội dung bài viết
  • Một table news letters chứa email các thành viên đăng kí vào news letters

Help! Tớ có câu hỏi!

MySQL lưu dữ liệu ở đâu?
Lĩnh vực này hơi trừu tượng một chút, cái bảng mà tôi đã trình bày ở trên chỉ là một cách tưởng tượng để mình “nhìn” dữ liệu bên trong. Thực ra MySQL lưu dữ liệu ở một nơi nào đó, trong một file!
Vậy mấy file đó nằm ở đâu?
Ở trong một thư mục mà MySQL được cài đặt, trong bài viết này mình đã cài wamp, trong đó nó cài luôn Mysql, mặc định thì những file đó nằm ở : C:\wamp\mysql\data
Nhưng mà tớ bảo này, mình chả cần đụng đến mấy file đó đâu, mọi thao tác lưu, đọc, truy xuất, sắp xếp này nọ mình đều dùng ngôn ngữ SQL để cho MySQL làm gì thì làm, mình không trực tiếp mò đến nó!

Hết chương 1


Mục Lục next chapter

Copyright© NGUYỄN Thanh Trà