Hướng dẫn select mysql - chọn mysql

Trong bài này chúng ta sẽ tìm hiểu cách lấy dữ liệu trong MySQL với lệnh

SELECT field1, field2, field3, ...
FROM table_name
WHERE 
ORDER BY field_name ASC|DESC 
LIMIT start, limit
3 ở mức căn bản nhất, nghĩa là chỉ
SELECT field1, field2, field3, ...
FROM table_name
WHERE 
ORDER BY field_name ASC|DESC 
LIMIT start, limit
3 data ở một bảng duy nhất chữ không có liên kết giữa nhiều bảng. Bài này khá là quan trọng nên các bạn cần lưu ý các vấn đề mình trình bày nhé.

Hướng dẫn select mysql - chọn mysql

Hướng dẫn select mysql - chọn mysql

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.freetuts.net, không được copy dưới mọi hình thức.

Trước tiên chúng ta cần tạo database

SELECT field1, field2, field3, ...
FROM table_name
WHERE 
ORDER BY field_name ASC|DESC 
LIMIT start, limit
5, tạo bảng
SELECT field1, field2, field3, ...
FROM table_name
WHERE 
ORDER BY field_name ASC|DESC 
LIMIT start, limit
6 và thêm một vài dòng dữ liệu như sau:

CREATE DATABASE IF NOT EXISTS qlsv;
USE qlsv;

CREATE TABLE IF NOT EXISTS sinhvien(
	sv_id INT(11) NOT NULL AUTO_INCREMENT,
	sv_name VARCHAR(255) NOT NULL,
	sv_description  VARCHAR(500),
	CONSTRAINT pk_sinhvien PRIMARY KEY(sv_id)
) ENGINE = INNODB;

INSERT INTO sinhvien(sv_name, sv_description)
VALUES('Mr Cuong', 'Nguyen Van Cuong');

INSERT INTO sinhvien(sv_name, sv_description)
VALUES('Mr Kinh', 'Nguyen Van Kinh');

INSERT INTO sinhvien(sv_name, sv_description)
VALUES('Mr Chinh', 'Nguyen Van Chinh');

INSERT INTO sinhvien(sv_name, sv_description)
VALUES('Mr Quyen', 'Nguyen Van Quyen');

Bài viết này được đăng tại [free tuts .net]

Và đây danh sách sinh viên mà ta đã thêm:

Hướng dẫn select mysql - chọn mysql

Bây giờ ta sẽ sử dụng kết quả này để thực hành trong quá trình học nhé.

1. Lệnh SELECT trong MySQL

Lệnh

SELECT field1, field2, field3, ...
FROM table_name
WHERE 
ORDER BY field_name ASC|DESC 
LIMIT start, limit
3 có nhiệm vụ lấy danh sách dữ liệu của một hoặc nhiều bảng trong database, tuy nhiên phạm vi của bài này chúng ta chỉ đề cập đến
SELECT field1, field2, field3, ...
FROM table_name
WHERE 
ORDER BY field_name ASC|DESC 
LIMIT start, limit
3 một table, trong bài học về JOIN chúng ta sẽ tìm hiểu
SELECT field1, field2, field3, ...
FROM table_name
WHERE 
ORDER BY field_name ASC|DESC 
LIMIT start, limit
3 nhiều table.

Cú pháp của lệnh

SELECT field1, field2, field3, ...
FROM table_name
WHERE 
ORDER BY field_name ASC|DESC 
LIMIT start, limit
3 như sau::

SELECT field1, field2, field3, ...
FROM table_name
WHERE 
ORDER BY field_name ASC|DESC 
LIMIT start, limit

Trong đó::

  • SELECT field1, field2, field3, ...
    FROM table_name
    WHERE 
    ORDER BY field_name ASC|DESC 
    LIMIT start, limit
    3 field1, field2, field3, ... là danh sách các fields cần lấyfield1, field2, field3, ... là danh sách các fields cần lấy
  • SELECT sv_id, sv_name, sv_description
    FROM SINHVIEN
    2 table_name tên table cần lấytable_name tên table cần lấy
  • SELECT sv_id, sv_name, sv_description
    FROM SINHVIEN
    3 là các điều kiện để lấy các dòng dữ liệu là các điều kiện để lấy các dòng dữ liệu
  • SELECT sv_id, sv_name, sv_description
    FROM SINHVIEN
    4 field_name, ASC|DESC: là cách sắp xếp cho field_name theo kiểu ASC (tăng dần) hoặc DESC (giảm dần)field_name, ASC|DESC: là cách sắp xếp cho field_name theo kiểu ASC (tăng dần) hoặc DESC (giảm dần)
  • SELECT sv_id, sv_name, sv_description
    FROM SINHVIEN
    5 start, limit là lấy limit records kể từ record thứ start trong kết quả.start, limit là lấy limit records kể từ record thứ start trong kết quả.

Ví dụ: Lấy danh sách sinh viên gồm các thông tin

SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
6,
SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
7,
SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
8 từ bảng
SELECT field1, field2, field3, ...
FROM table_name
WHERE 
ORDER BY field_name ASC|DESC 
LIMIT start, limit
6.
: Lấy danh sách sinh viên gồm các thông tin
SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
6,
SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
7,
SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
8 từ bảng
SELECT field1, field2, field3, ...
FROM table_name
WHERE 
ORDER BY field_name ASC|DESC 
LIMIT start, limit
6.

SELECT sv_id, sv_name, sv_description
FROM SINHVIEN

Chạy lên kết quả gồm tất cả sinh viên (4 sv) trong bảng SINHVIEN.

Hướng dẫn select mysql - chọn mysql

Để lấy tất cả các fields thì ta sử dụng dấu sao (*)..

Ví dụ::

2. Lệnh SELECT có WHERE

Để lọc danh sách sinh viên theo một tiêu chí nào đó thì ta sử dụng thêm chức năng

SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
3 trong
SELECT field1, field2, field3, ...
FROM table_name
WHERE 
ORDER BY field_name ASC|DESC 
LIMIT start, limit
3. Ví dụ tôi muốn lấy sinh viên có tên là 'Mr Kinh' thì tôi sẽ viết câu truy vấn như sau:Mr Kinh' thì tôi sẽ viết câu truy vấn như sau:

SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_name = 'Mr Kinh'

Chạy lên kết quả là một sinh viên:

Hướng dẫn select mysql - chọn mysql

Tới đây bạn sẽ có câu hỏi là "Có phải ở WHERE chỉ có sử dụng toán tử bằng để lọc?". Câu trả lời là không nhé, có rất nhiều toán tử dùng để lọc như một ngôn ngữ lập trình khác, tuy nhiên về cú pháp thì hơi khác chút xíu (xem các bảng dưới đây).

Bảng các toán tử quan hệ thông dụng

Các toán tử quan hệ chính là các toán tử thể hiện mối quan hệ giữa hai vế (vế phải và vế trái).

Ký hiệuDiễn giải
= So sánh bằng, ví dụ
SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_name = 'Mr Kinh'
2
> Lớn hơn, ví dụ
SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_name = 'Mr Kinh'
3
>= Lớn hơn hoặc bằng, ví dụ
SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_name = 'Mr Kinh'
4
< Bé hơn, ví dụ
SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_name = 'Mr Kinh'
5
<= Bé hơn hoặc bằng, ví dụ
SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_name = 'Mr Kinh'
6
hoặc != Khác, ví dụ sv_id 3
Like So sánh theo biểu thức. Học sauHọc sau
in Trong một tập hợp nào đó. Học sauHọc sau

Trong bảng này toán tử LIKE và IN sẽ tìm hiểu ở một bài khác. bây giờ ta sẽ thực hành vài ví dụ để các bạn làm quen nhé.

Ví dụ 1: Lấy danh sách sinh viên có

SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
6 lớn hơn 2.: Lấy danh sách sinh viên có
SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
6 lớn hơn 2.

SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_id > 2

Ví dụ 2: Lấy danh sách sinh viên có tên không phải là Mr Cuong: Lấy danh sách sinh viên có tên không phải là Mr Cuong

SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_name <> 'Mr Cuong'

Ví dụ 3: Lấy danh sách sinh viên có

SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
6 bé hơn 3: Lấy danh sách sinh viên có
SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
6 bé hơn 3

SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_name < 3

Bảng các toán tư luận lý thông dụng::

Toán tử luận lý dùng để thể hiện suy luận giữa hai mệnh đề (mệnh đề trái, mệnh đề phải) và từ đó trả về kết quả đúng hoặc sai.

Ký hiệuDiễn giải
= So sánh bằng, ví dụ
SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_name = 'Mr Kinh'
2
> Lớn hơn, ví dụ
SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_name = 'Mr Kinh'
3

>=

Lớn hơn hoặc bằng, ví dụ

SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_name = 'Mr Kinh'
4 : Lấy danh sách sinh viên có
SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_name = 'Mr Kinh'
3 và có tên là
SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_id > 2

0

SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_id > 1 AND sv_name = 'Mr Cuong'

< : Lấy danh sách sinh viên có

SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_id > 2

1 hoặc có tên là
SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_id > 2

2

SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_id = 2 OR sv_name = 'Mr Kinh'

Bé hơn, ví dụ SELECT sv_id, sv_name, sv_description FROM SINHVIEN WHERE sv_name = 'Mr Kinh'5

ORDER dùng để sắp xếp kết quả trả về của câu truy vấn, nó có hai tham số là tên field và kiểu sắp xếp. Sau đây là cách dùng của cả hai trường hợp.

Bé hơn hoặc bằng, ví dụ

SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
WHERE sv_name = 'Mr Kinh'
6:

SELECT sv_id, sv_name, sv_description
FROM SINHVIEN
ORDER BY sv_id ASC

hoặc !=

Hướng dẫn select mysql - chọn mysql

Khác, ví dụ sv_id 3 :

SELECT field1, field2, field3, ...
FROM table_name
WHERE 
ORDER BY field_name ASC|DESC 
LIMIT start, limit
0

hoặc !=

Hướng dẫn select mysql - chọn mysql

Khác, ví dụ sv_id 3

Like

So sánh theo biểu thức. Học saustart) và lấy bao nhiêu record (limit).

in : Lấy một sinh viên đầu tiên trong kết quả

SELECT field1, field2, field3, ...
FROM table_name
WHERE 
ORDER BY field_name ASC|DESC 
LIMIT start, limit
1

Trong một tập hợp nào đó. Học sau: Lấy hai sinh viên bắt đầu từ sinh viên thứ 2 trong kết quả

SELECT field1, field2, field3, ...
FROM table_name
WHERE 
ORDER BY field_name ASC|DESC 
LIMIT start, limit
2

Trong bảng này toán tử LIKE và IN sẽ tìm hiểu ở một bài khác. bây giờ ta sẽ thực hành vài ví dụ để các bạn làm quen nhé.start limit.

Ví dụ 1: Lấy danh sách sinh viên có SELECT sv_id, sv_name, sv_description FROM SINHVIEN6 lớn hơn 2.

Ví dụ 2: Lấy danh sách sinh viên có tên không phải là Mr Cuong

# Lời kết

Lệnh SELECT trong MySQL quá đơn giản phải không các bạn. Bạn cần phải nắm vững các kiến thức trên ở bài tiếp theo chúng ta sẽ tìm hiểu về lệnh JOIN sẽ rất là khó đấy, chưa kể nó rất thông dụng khi làm việc lầm trình web nữa. Chúc bạn học tốt nhé!