vietnamese Tiếng Việt english English
Hôm nay:
Tin mới đăng:

Ngôn ngữ truy vấn dữ liệu SQL và MySQL cơ bản

Tuần này mình sẽ viết vài bài về ngôn ngữ truy vấn dữ liệu SQL và PHP. Ít bài viết này chắc chắn sẽ hữu ích cho các bạn newbie đang học PHP. Bài viết này hơi thiên về MySQL tuy nhiên bạn chỉ muốn học SQL thì bài viết chắc vẫn có ích cho bạn để tìm hiểu. Để bắt đầu đọc bài viết này, bạn hãy chuẩn bị cho mình:
mysql
  • Một phần mềm tạo localhost có MySQL: Xampp (khuyến khích) hoặc UsbWebServer mà mình từng đề cập (cái này thì tiện hơn)
  • Một chương trình quản trị MySQL: phpMyAdmin (khuyến khích) – thường đi kèm với phần mêm tạo localhost ở trên, bạn tìm trong bảng điểu khiền của chương trình tạo localhost.
Sau khi đủ 2 công cụ trên. Chúng ta hãy bắt đầu với một số định nghĩa.

Các định nghĩa cơ bản

Mình sẽ giới thiệu cả tên tiếng anh để các bạn có thể dễ search tài liệu.
  • Cơ sở dữ liệu (Database): là tên của cơ sở dữ liệu chúng ta muốn sử dụng
  • Bảng (Table): Là 1 bảng giá trị gồm cột và các dòng nằm trong cơ sở dữ liệu.
  • Cột (Column): là 1 một trường dữ liệu trong bảng. Nếu bạn không quen với từ “trường”, bạn có thể hiểu nó đơn giản là cột ở trong bảng.
  • Thuộc tính: là giá trị của một cột tại một dòng trong bảng.
  • Dòng (Row): là một tập hợp các thuộc tính tương ứng với các cột, tạo thành một dòng trong bảng.

Ví dụ:

Một cơ sở dữ liệu mới và một bảng user mẫu mình vừa tạo xong để làm ví dụ.
samplerow
Từ hình bên ta có ở đây là một bảng , với các côt lần lượt: id, username, password, … .
Trong bảng trên ta có một dòng với các thuộc tính lần lượt là: 1, nhut, 123456, Tran Minh Nhut và http://minhnhut.info <- đây là thuộc tính mà mình đã đề cập.
Vậy chắc bạn cũng đã hình dung cách tổ chức dữ liệu trong MySQL hay bất kỳ hệ cơ sở dữ liệu quan hệ nào khác.

Một số từ khóa đặc biệt và ý nghĩa

Một số từ khóa đặc biệt được sử dụng khi tạo bảng mà bạn cần biết.
  • NULL : Giá trị cho phép rỗng.
  • AUTO_INCREMENT : Cho phép giá trị tăng dần (tự động) – tăng thêm một mỗi khi chèn dòng mới.
  • UNSIGNED : Chỉ là số dương
  • PRIMARY KEY : đặt khóa chính trong bảng. Khóa chính nôm na là một cột, mà các dòng khác nhau thì sẽ có giá trị không trùng nhau (phân biệt nhau hoàn toàn thông qua khóa chính).

Loại dữ liệu

Để lưu dữ liệu hiệu quả và tiêu tốn tài nguyên hợp lý. Dữ liệu được mô tả thành những kiểu chuẩn, nếu bạn từng lập trình phần mềm máy tính, thì chắc các cái tên dưới đây khá là quen thuộc.
Ở đây là một số loại dữ liệu thông dụng nhất trong MySQL. Do không có time kẻ bảng nên mình dùng tạm một hình trên mạng.
bảng các loại dữ liệu trong MySQL
bảng các loại dữ liệu trong MySQL
Nguồn hình: qhonline.info
Ok, vậy giờ ta sẽ làm gì với bảng các loại dữ liệu ở trên này đây? Vâng, chúng ta sẽ cần đến bảng trên khi tiên hành tạo một bảng mới trong Database.

Create Table – Tạo bảng

Mình không đề cập đến tạo cơ sở dữ liệu, vì nếu bạn dùng các công cụ như phpMyAdmin thường thì nó có chức năng tạo cơ sở dữ liệu cho bạn, nhanh chóng. Ta tập trung vào phần chính.
Cú pháp tạo bảng:
Ví dụ:
Tạo bảng user giống như ở trên đầu bài viết.
Ta tạo một bảng user, với id là số dương tự tăng và là khóa chính ( mô tả cuối ). username là kiểu varchar kích thước là 255 ký tự. Tương tự password kiểu char kích thước 255 ký tự. Cuối cùng là website với kiểu varchar và kích thước 255 ký tự. Khóa chính được khai báo ở cuối thông qua từ khóa Primary Key như ví dụ.
Chú ý là SQL không phân biệt chữ hoa chữ thường, những chữ mình viết hoa là để nhấn mạnh cho bạn thấy từ khóa quan trọng.

Một số thao tác trên dữ liệu cơ bản bằng SQL

Chúng ta cùng đi nhanh qua một số câu truy vấn thao tác trên dữ liệu cơ bản nhất.

SELECT – Truy xuất dữ liệu

Câu truy vấn này được sử dụng rất phổ biến.
Cú pháp

Ví dụ

trả về tất cả thuộc tính id và username của các dòng trong bảng user. Hay ta có thể.

Ký tự * ý ám chỉ là lấy tất cả các cột.

SELECT … WHERE … – Truy xuất dữ liệu có điều kiện

như select … ở trên, nhưng mở rộng ra một tí với mệnh đề WHERE ở cuối.
Cú pháp

Ví dụ

truy vấn username và password trong bảng user, chọn ra những dòng phù hợp điều kiện id = 1. Và mình tin chắc chỉ có một dòng như vậy, do ta đã đặt id là PRIMARY KEY hay khóa chính của bảng (xem lại định nghĩa để hiểu vì sao).

ORDER BY – Truy vấn và sắp xếp theo thứ tự

Bạn có thể thêm mệnh đề WHERE vừa mới học ở trên vào sau mệnh đề FROM, và sau đó là đến ORDER BY. Chú ý, ORDER BY phải nằm sau WHERE trong cùng một câu truy vấn hiện tại. Sỡ dĩ mình nói vậy, vì ta có thể đặt một truy vấn khác lòng vào một truy vấn chính của chúng ta.
Cú pháp

Trong đó tên_cột_2 là cột mà bạn muốn sắp xếp theo. Cách sắp xếp bao gồm hai thông số là ASC (tăng dần), DESC (giảm dần).
Ví dụ

Truy vấn id và username, sắp xếp dữ liệu theo username, sắp theo kiểu từ A-Z (tăng dần).

LIMIT – Giới hạn dòng muốn lấy

Cú pháp

Ví dụ

Lấy 10 dòng từ vị trí bắt đầu, các thông tin lấy là id và username, sắp xếp theo username từ A-Z.

INSERT INTO – Thêm giá trị vào bảng

Cú pháp
Ví dụ

Vẫn dùng lại bảng user ở trên. Do chúng ta đã khai báo id là AUTO INCREMENT, nên MySQL sẽ tự đánh số tự động cho thuộc tính id. Cụ thể là dòng đầu tiên chúng ta insert vào sẽ có id là 1, và các dòng ta insert thêm sau đó sẽ được đánh số 2, 3, 4, … .

UPDATE – Cập nhật dữ liệu trong bảng

Cú pháp

Chú ý phần điều kiện. Nếu không có ràng buộc điều kiện, MySQL cập nhật toàn bộ thuộc tính tương ứng của tất cả các dòng trong bảng. Nguy hiểm, bất cẩn là hổng dữ liệu của các dòng khác. Vì mình cũng hay quên viết mệnh đề WHERE, gây ra cập nhật toàn bộ các dòng.
Ví dụ

Cập nhật bảng user, đặt website thành http://minhnhut.info cho các dòng thỏa điều kiện id = 1.

DELETE – Xóa dữ liệu trong bảng

Cú pháp

Nếu không có ràng buộc điều kiện, hệ thống sẽ xóa toàn bộ các dòng trong bảng. Một lần nữa, nếu không có ý định xóa sạch dữ liệu, bạn nên viết mệnh đề WHERE để ràng buộc những dòng bị xóa.
Ví dụ