Thứ hai, 29/07/2013 | 00:00 GMT+7

Cách thực hiện các truy vấn cơ bản trong MySQL và MariaDB trên server cloud

MySQL và MariaDB là hệ quản trị database quan hệ. Những công cụ này được dùng trên server VPS của bạn để quản lý dữ liệu từ nhiều chương trình khác nhau. Cả hai đều triển khai các dạng của ngôn ngữ truy vấn SQL và đều được dùng trên server cloud .

Hướng dẫn này sẽ trình bày cách truy vấn thông tin từ database của bạn bằng cách chỉ định các tiêu chí tìm kiếm khác nhau. Điều này sẽ giúp bạn lấy dữ liệu cần thiết theo những cách linh hoạt từ database của bạn .

Đối với hướng dẫn này, ta sẽ sử dụng MySQL trên server cloud Ubuntu 12.04, nhưng các bước liên quan sẽ hoạt động trên MySQL hoặc MariaDB trên bất kỳ bản phân phối Linux hiện đại nào.

Cách truy vấn thông tin từ MySQL và MariaDB

Ta yêu cầu phần mềm database truy xuất thông tin từ database bằng cú pháp sau:

SELECT selection_fields FROM data_source WHERE selection_criteria_is_met;

Chọn nguồn dữ liệu để truy vấn trong MySQL và MariaDB

Ta sẽ sử dụng database "mysql" mặc định để thực hành tạo các truy vấn:

USE mysql;
Database changed

Xem các bảng trong database "mysql" để có ý tưởng về các nguồn dữ liệu mà ta có thể truy vấn:

SHOW TABLES;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
. . .
. . .

Trên cài đặt MySQL mặc định của Ubuntu, lệnh này trả về 24 kết quả.

Hãy chọn bảng " user " để truy vấn kết quả. Để có ý tưởng về những danh mục nào ta có thể chọn, hãy xem tiêu đề cột của bảng:

SHOW COLUMNS FROM user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field                  | Type                              | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host                   | char(60)                          | NO   | PRI |         |       |
| User                   | char(16)                          | NO   | PRI |         |       |
| Password               | char(41)                          | NO   |     |         |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N       |       |
. . .
. . .

Các giá trị trong cột "Trường" là tiêu đề cột cho bảng " user ".

Cách tạo một truy vấn cơ bản trong MySQL và MariaDB

Hãy chọn một số thông tin cơ bản về user :

SELECT user,password,host FROM user;
+------------------+-------------------------------------------+-----------+
| user             | password                                  | host      |
+------------------+-------------------------------------------+-----------+
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | localhost |
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | 127.0.0.1 |
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | ::1       |
| debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost |
+------------------+-------------------------------------------+-----------+
4 rows in set (0.00 sec)

Các trường lựa chọn mà ta đã chọn là ba trong số các cột từ bảng " user ". Lưu ý cách ta đã phân tách các trường khác nhau bằng dấu phẩy.

Mỗi cột mà ta yêu cầu được trả lại, theo thứ tự, từ mọi bản ghi trong bảng.

Cách sử dụng ký tự đại diện trong truy vấn MySQL và MariaDB

Ví dụ trước trả về một tập hợp dữ liệu đẹp. Cú pháp đó hữu ích nếu bạn muốn trả về tất cả dữ liệu liên quan đến các tiêu chí cụ thể, đã biết.

Ngôn ngữ truy vấn SQL cho phép tìm kiếm linh hoạt hơn. Nếu ta muốn trả lại mọi thứ từ bảng " user ", ta có thể sử dụng ký tự đại diện dấu hoa thị (*), trùng với bất kỳ giá trị nào:

SELECT * FROM user;

Các kết quả hơi khó sử dụng, vì vậy chúng sẽ không được đưa vào đây. Lệnh sẽ cung cấp cho bạn mọi giá trị trong mọi cột cho mọi bản ghi (dòng) trong bảng.

Cách lọc kết quả trong MySQL và MariaDB

Nếu ta muốn chỉ trả lại kết quả đáp ứng một tiêu chí nhất định, ta có thể lọc kết quả bằng bộ lọc "ở đâu".

Ví dụ: nếu ta chỉ muốn trả về dữ liệu bảng trong đó user là "debian-sys-Maint", ta có thể lọc truy vấn như sau:

SELECT user,password,host FROM user WHERE user = "debian-sys-maint";
+------------------+-------------------------------------------+-----------+
| user             | password                                  | host      |
+------------------+-------------------------------------------+-----------+
| debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost |
+------------------+-------------------------------------------+-----------+
1 row in set (0.00 sec)

Theo cách tương tự, ta có thể xem user nào được đính kèm với server lưu trữ "localhost":

SELECT user,password,host FROM user WHERE host = "localhost";
+------------------+-------------------------------------------+-----------+
| user             | password                                  | host      |
+------------------+-------------------------------------------+-----------+
| debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost |
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | localhost |
+------------------+-------------------------------------------+-----------+
2 rows in set (0.00 sec)

Nếu ta muốn lọc theo nhiều hơn một thuật ngữ, ta có thể tách các tiêu chí bằng "và".

SELECT user,password,host FROM user WHERE host = "localhost" AND user = "root";
+------+-------------------------------------------+-----------+
| user | password                                  | host      |
+------+-------------------------------------------+-----------+
| root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | localhost |
+------+-------------------------------------------+-----------+
1 row in set (0.00 sec)

Cách sử dụng toán tử so sánh tương tự

Trong bộ lọc "ở đâu", dấu phần trăm (%) được sử dụng làm ký tự đại diện "mọi thứ" thay vì dấu hoa thị. Nó sẽ trùng với không hoặc nhiều ký tự.

Sử dụng kiến thức này, ta có thể sử dụng toán tử so sánh "like", đây là một cách khác để lọc với "where".

Toán tử "like" so sánh các giá trị của một trường nhất định với một biểu thức ở phía bên phải. Ví dụ: để chọn các dòng có user bắt đầu bằng "d", ta có thể thực hiện truy vấn sau:

SELECT user,password,host FROM user WHERE user LIKE "d%";
+------------------+-------------------------------------------+-----------+
| user             | password                                  | host      |
+------------------+-------------------------------------------+-----------+
| debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost |
+------------------+-------------------------------------------+-----------+
1 row in set (0.00 sec)

Bạn có thể chỉ định so sánh "như" bằng cách sử dụng "và" hoặc "hoặc" giống như bạn có thể làm với so sánh bình đẳng:

SELECT user,password,host FROM user WHERE user LIKE "d%" OR user LIKE "r%";
+------------------+-------------------------------------------+-----------+
| user             | password                                  | host      |
+------------------+-------------------------------------------+-----------+
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | localhost |
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | 127.0.0.1 |
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | ::1       |
| debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost |
+------------------+-------------------------------------------+-----------+
4 rows in set (0.00 sec)

Kết luận

Đến đây bạn sẽ có hiểu biết cơ bản về cách lấy dữ liệu từ database của bạn .

Có nhiều truy vấn khác mà ta chưa đề cập đến, nhưng danh sách mà ta đã đề cập là một khởi đầu tốt về cách thực hiện truy xuất thông tin trong MySQL và MariaDB.

Bạn có thể tìm hiểu về cách tạo và quản lý database trong MySQL và MariaDB tại đây và cách tạo bảng trong MySQL và MariaDB bằng cách nhấp vào liên kết này.

Bởi Justin Ellingwood

Tags:

Các tin trước

Cách tạo và quản lý database trong MySQL và MariaDB trên server cloud 2013-07-29
Cách cài đặt Etherpad cho Sản xuất với Node.js và MySQL trên VPS 2013-07-26
Cách bảo mật database MySQL và MariaDB trong VPS Linux 2013-07-23
Chuyển sang MariaDB từ MySQL 2013-07-18
Cách di chuyển database MySQL giữa hai server 2012-08-09
Cách thiết lập Master Slave Replication trong MySQL 2012-07-25
Cách nhập và xuất database và đặt lại mật khẩu gốc trong MySQL 2012-06-12
Hướng dẫn MySQL Cơ bản 2012-06-12
Hướng dẫn MySQL Cơ bản 2012-06-12