1. Mệnh đề WHERE trong MySQL với Python
Mệnh đề WHERE là một mệnh đề được dùng kiểm tra một điều kiện trong câu lệnh truy vấn, WHERE có thể đi kèm với các câu lệnh như SELECT, INSERT, UPDATE, DELETE….mệnh đề này chỉ được sử dụng để lấy ra các bản ghi có điều kiện đáp ứng cụ thể nào đó.
Khi mệnh đề WHERE xuất hiện trong câu lệnh SELECT chính là việc chỉ định ra những bản ghi có một điều kiện thỏa mãn cụ thể sẽ được lấy ra.
Ví dụ dưới đây, chúng tôi sẽ chỉ lấy ra các bản ghi có điều kiện Tuoi = 20 và GioiTinh = ‘nam’ thuộc bảng “tbl_user” trong cơ sở dữ liệu “laptrinhtudau” như sau:
import mysql.connector try: # Ket noi toi MySQL mydb = mysql.connector.connect( host="localhost", user="root", password="", database="laptrinhtudau" ) # Tao doi tuong con tro trong MySQL mycursor = mydb.cursor() # Tao cau truy van lay ra cac ban ghi co Tuoi = 20 va GioiTinh = 'nam' trong bang "tbl_user" sql = "SELECT * FROM tbl_user WHERE Tuoi = 20 AND GioiTinh = 'nam'" # Thuc thi cau truy van mycursor.execute(sql) # Chuyen doi cac ban ghi vua lay ra thanh mot LIST myresult = mycursor.fetchall() # Duyet LIST ket qua for x in myresult: print(x) except:# Truong hop co loi khi lay ra ban ghi trong bang print("Khong the lay ra ban ghi trong bang!")
Kết quả:
(1, ‘Chu Minh Nam’, 20, ‘nam’) (3, ‘Phung Thai Son’, 20, ‘nam’) |
2. Ký tự đại diện trong mệnh đề WHERE
Một ký tự đại diện được sử dụng để thay thế một hoặc nhiều ký tự trong một chuỗi. Các ký tự đại diện được sử dụng với toán tử LIKE. Toán tử LIKE được sử dụng trong mệnh đề WHERE để tìm kiếm một mẫu được chỉ định trong một cột.
Bảng dưới đây liệt kê ra một số ký tự đại diện Wildcards trong SQL Server
Ký tự | Mô tả | Ví dụ |
---|---|---|
% | Đại diện cho không hoặc nhiều ký tự | Ha% sẽ có thể là: Ha Noi, Ha Nam, Hai Duong… |
_ | Đại diện cho một ký tự duy nhất | N_m sẽ có thể là: Nam, Năm, Nấm… |
[] | Đại diện cho bất kỳ ký tự đơn nào trong dấu ngoặc [] | h[oa]t sẽ có thể là: hot và hat |
^ | Đại diện cho bất kỳ ký tự nào không có trong dấu ngoặc | h[^oa]t sẽ có thể là hit, hut, nhưng không thể là hot và hat |
– | Đại diện cho bất kỳ ký tự đơn lẻ nào trong phạm vi được chỉ định | c[a-d]t sẽ có thể là cat, cbt, cct và cdt |
Ví dụ dưới đây, sử dụng ký tự đại diện “%anh%” để chọn ra các bản ghi có chứa từ “anh” nằm ở trường HoTen thuộc bảng “tbl_user” trong cơ sở dữ liệu “laptrinhtudau” như sau:
import mysql.connector try: # Ket noi toi MySQL mydb = mysql.connector.connect( host="localhost", user="root", password="", database="laptrinhtudau" ) # Tao doi tuong con tro trong MySQL mycursor = mydb.cursor() # Tao cau truy van lay ra cac ban ghi co tu "anh" trong HoTen trong bang "tbl_user" sql = "SELECT * FROM tbl_user WHERE HoTen LIKE '%anh%'" # Thuc thi cau truy van mycursor.execute(sql) # Chuyen doi cac ban ghi vua lay ra thanh mot LIST myresult = mycursor.fetchall() # Duyet LIST ket qua for x in myresult: print(x) except:# Truong hop co loi khi lay ra ban ghi trong bang print("Khong the lay ra ban ghi trong bang!")
Kết quả:
(4, ‘Nguyen Tri Thanh’, 19, ‘nam’) (6, ‘Chu Thi Minh Anh’, 21, ‘nu’) |