- Chuyên mục khác :
- Git cơ bản và nâng cao
- ·
- MySQL cơ bản và nâng cao
- ·
- MongoDB cơ bản và nâng cao
- ·
- SQL cơ bản và nâng cao
- ·
- Linux cơ bản và nâng cao
- Học MySQL cơ bản và nâng cao
- Học MySQL cơ bản và nâng cao
- MySQL là gì
- Cài đặt MySQL
- Quản lý MySQL
- Cú pháp kết hợp MySQL và PHP
- Kết nối MySQL
- Tạo Database trong MySQL
- Xóa cơ sở dữ liệu trong MySQL
- Chọn cơ sở dữ liệu trong MySQL
- Kiểu dữ liệu trong MySQL
- Tạo bảng trong MySQL
- Xóa bảng trong MySQL
- Truy vấn INSERT trong MySQL
- Truy vấn SELECT trong MySQL
- Mệnh đề WHERE trong MySQL
- Truy vấn UPDATE trong MySQL
- Truy vấn DELETE trong MySQL
- Mệnh đề LIKE trong MySQL
- Mệnh đề ORDER BY trong MySQL
- Sử dụng JOIN trong MySQL
- Xử lý giá trị NULL trong MySQL
- Regexp trong MySQL
- Transaction trong MySQL
- Lệnh ALTER trong MySQL
- Chỉ mục (INDEX) trong MySQL
- Bảng tạm trong MySQL
- Mô phỏng bảng trong MySQL
- Lấy và sử dụng MySQL Metadata
- Sử dụng Sequence trong MySQL
- Xử lý bản sao trong MySQL
- Injection trong MySQL và SQL
- Export và Phương thức Backup trong MySQL
- Import và phương thức Recovery trong MySQL
- Mệnh đề GROUP BY trong MySQL
- Mệnh đề IN trong MySQL
- Mệnh đề BETWEEN trong MySQL
- Từ khóa UNION trong MySQL
- Hàm hữu ích trong MySQL
Trong chương trước chúng ta đã được giới thiệu cách sử dụng của lệnh SELECT trong SQL để lấy dữ liệu từ bảng MySQL. Chúng ta có thể sử dụng một mệnh đề điều kiện gọi là mệnh đề WHERE để lọc các kết quả thu được. Sử dụng mệnh đề WHERE, chúng ta có thể xác định một tiêu chuẩn lựa chọn để chọn các bản ghi cần thiết từ một bảng.
Cú pháp
Cú pháp SQL chung của lệnh SELECT với mệnh đề WHERE để lấy dữ liệu từ bảng MySQL là:
SELECT truong1, truong2,...truongN FROM ten_bang [WHERE dieuKien1 [AND [OR]] dieuKien2.....
Bạn có thể xác định bất kỳ điều kiện nào bởi sử dụng mệnh đề WHERE.
Bạn có thể xác định nhiều hơn một điều kiện bởi sử dụng các toán tử AND và OR.
Một mệnh đề WHERE có thể được sử dụng cùng với lệnh DELETE hoặc UPDATE trong SQL để xác định một điều kiện.
Mệnh đề WHERE làm việc giống như một điều kiện if trong bất kỳ ngôn ngữ lập trình nào. Mệnh đề này được sử dụng để so sánh giá trị đã cho với giá trị trường có sẵn trong bảng MySQL. Nếu giá trị đã cho bên ngoài là bằng với giá trị trường có sẵn trong bảng MySQL, thì nó sẽ trả về hàng đó.
Dưới đây là danh sách các toán tử có thể được sử dụng với mệnh đề WHERE:
Giả sử trường A giữ 10 và trường B giữ 20, thì:
Toán tử | Miêu tả | Ví dụ |
---|---|---|
= | Kiểm tra xem giá trị của hai toán hạng có cân bằng không, nếu có thì điều kiện trở thành true | (A = B) là không true |
!= | Kiểm tra xem giá trị của hai toán hạng là cân bằng hay là không, nếu không cân bằng thì điều kiện trở thành true | (A != B) là true |
> | Kiểm tra xem giá trị của toán hạng trái có lớn hơn giá trị của toán hạng phải không, nếu có thì điều kiện trở thành true | (A > B) là không true |
< | Kiểm tra xem giá trị của toán hạng trái có nhỏ hơn giá trị của toán hạng phải không, nếu có thì điều kiện trở thành true | (A < B) là true |
>= | Kiểm tra xem giá trị của toán hạng trái có lớn hơn hoặc bằng giá trị của toán hạng phải không, nếu có thì điều kiện trở thành true | (A >= B) là không true |
<= | Kiểm tra xem giá trị của toán hạng trái có nhỏ hơn hoặc bằng giá trị của toán hạng phải không, nếu có thì điều kiện trở thành true | (A <= B) là true |
Mệnh đề WHERE là hữu ích khi bạn muốn lấy các hàng đã được lựa chọn từ một bảng, đặc biệt khi bạn sử dụng JOIN trong MySQL. Các JOIN sẽ được trình bày trong chương khác.
Sử dụng Primary Key là thói quen phổ biến để tìm kiếm các bản ghi để giúp việc tìm kiếm này nhanh hơn.
Nếu điều kiện đã cho không so khớp với bất kỳ bản ghi nào trong bảng, thì truy vấn sẽ không trả về bất kỳ hàng nào.
Ví dụ lấy dữ liệu với mệnh đề WHERE trong MySQL
Ví dụ sau sẽ trả về tất cả bản ghi từ bảng sinhvienk60 mà có tên là Thanh:
SELECT * FROM sinhvienk60 WHERE ten="Thanh";
Kết quả là:
+------+------------+------------+---------+ | mssv | ho | ten | diemthi | +------+------------+------------+---------+ | 2 | Nguyen Van | Thanh | 9.00 | +------+------------+------------+---------+
Trừ khi thực hiện một so sánh LIKE trên một chuỗi, việc so sánh là không phân biệt kiểu chữ. Bạn có thể làm cho việc tìm kiếm là phân biệt kiểu chữ bởi sử dụng từ khóa BINARY như sau:
SELECT * FROM sinhvienk60 WHERE BINARY ten="thanh";
Với bảng đã tạo của chúng ta thì không có bản ghi nào có tên là thanh, do đó lệnh trên không cho kết quả nào.
Lấy dữ liệu với mệnh đề WHERE bởi sử dụng PHP Script
Bạn có thể sử dụng cùng lệnh SQL là SELECT với mệnh đề WHERE trong hàm PHP là mysql_query(). Hàm này được sử dụng để thực thi lệnh SQL và sau đó hàm PHP khác là mysql_fetch_array() có thể được sử dụng để lấy toàn bộ dữ liệu đã chọn. Hàm này trả về các hàng dưới dạng một mảng liên hợp, một mảng số hoặc cả hai. Hàm này trả về FALSE nếu không có hàng nào như vậy.
Ví dụ
Ví dụ sau trả về tất cả bản ghi có tên là Thanh từ bảng sinhvienk60:
<?php $dbhost = 'localhost:3306'; $dbuser = 'root'; $dbpass = '123456'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Khong the ket noi: ' . mysql_error()); } $sql = 'SELECT mssv, ho, ten, diemthi FROM sinhvienk60 WHERE ten="Thanh"'; mysql_select_db('sinhvien'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Khong the lay du lieu: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "MSSV :{$row['mssv']} <br> ". "Ho: {$row['ho']} <br> ". "Ten: {$row['ten']} <br> ". "Diem Thi : {$row['diemthi']} <br> ". "--------------------------------<br>"; } echo "Lay du lieu thanh cong\n"; mysql_close($conn); ?>
Sao chép code trên trong một trình soạn thảo chẳng hạn, lưu là where.php, bạn cần xác định các tham số $dbuser và $dbpass thích hợp (tùy theo cách bạn đã thiết lập với MySQL), sau đó, mở trình duyệt, chạy locallhost/where.php sẽ cho kết quả như sau:
Các bài học MySQL phổ biến khác tại s2sontech:
Bình luận (0)