III. Các Thao tác tên bảng 1 Lựa chọn các hàng
6. Sự phù hợp về kiểu
• Mysql cung câp các mẫu chuẩn cho phép thay thế một kiểu nào đó:ví dụ nh− sử dụng‘_’để chỉ một ký tự đơn lẻ nào đó ‘%’để chỉ một số ký tự nào đó có thể là không có ký tự nào.Chú ý rằng trong mysql không sử dụng dấu=hay!= mà sử dụng LIKE hoặc NOT LIKE.
• Vi dụ tìm một tên bắt đầu bằng ký tự ‘b’
mysql> SELECT * FROM pet WHERE name LIKE "b%";
Name Owner species sex birth
Buffy Bowser Harold Diane dog dog F M 1989-05-13 1989-08-31 • Để tìm tên kết thúc bằng ‘fy’:
mysql> SELECT * FROM pet WHERE name LIKE "%fy";
• Để tìm tên có chứa một ký tự bằng ‘w’:
mysql> SELECT * FROM pet WHERE name LIKE "%w%";
• Dùng LIKE:
mysql> SELECT * FROM pet WHERE name LIKE "_____";
• Một số các quy tắc khác:’
.Một lớp ký tự:đ−ợc bao bởi ‘[...]’,ví dụ’ [abc]’’[1-9]’ .Ký hiệu ‘*’để chỉ ký hiệu trống
.Sử dụng ký hiệu ‘^’’$’để chỉ bắt đầu hoặc kết thúc để sử dụng thi ta phảI viết từ khoá REGEXP phía tr−ớc
• Tìm tên bắt đầu với ký tự ‘b’
mysql> SELECT * FROM pet WHERE name REGEXP "^[bB]";
• Tìm tên kết thúc bằng “fy”,sử dụng ‘$’ :
mysql> SELECT * FROM pet WHERE name REGEXP "fy$";
• Tìm tên có chứa ký tự’w’sử dụng ‘[wW]’để tìm cả ký tự th−ờng và ký tự hoa:
mysql> SELECT * FROM pet WHERE name REGEXP "[wW]";
• Tìm tên có chứa đúng 5 ký tự sử dụng’^’và ‘$’để tìm kiếm: mysql> SELECT * FROM pet WHERE name REGEXP "^...$";
Bạn cũng có thể thực hiện nh− sau:
mysql> SELECT * FROM pet WHERE name REGEXP "^.{5}$";
7. Đếm hàng
• Các cơ sở dữ liệu th−ờng đ−ợc sử dụng để trả lời câu hỏi “mức độ th−ờng xuyên của một số kiểu dữ liệu xuất hiện trong bảng nh− thế nào”Ví dụ ,bạn có thể muốn biết bạn có bao nhiêu con vẹt ,hoặc mỗi ng−ời chủ có bao nhiêu con vẹt ,hoặc bạn có thể thực hiện rất nhiều kiểu điều tra dân số các con vật của mình
• Đếm tổng số con vật mà bạn có thì t−ơng tự nh− câu hỏi là “có bao nhiêu hàng trong bảng về con vẹt” khi đó một bản ghi trên một con vẹt ,chức năng COUNT() đếm số kết quả non- NULL,do đó câu lệnh đếm con vật của bạn nh− sau:
mysql> SELECT COUNT(*) FROM pet;
• Dễ dàng hơn ,bạn có thể gọi tên của những ng−ời chủ sở hữu các con vẹt.Bạn có thể sử dụng COUNT() nếu bạn muốn tìm ra mỗi ng−ời chủ có bao con vẹt
mysql> SELECT owner, COUNT(*) FROM pet GROUP BY owner;
• Chú ý rằng ,sử dụng GROUP BY để tập hợp lại tất cả các bản ghi của mỗi ng−ời chủ.Nếu không có nó,tất cả những cái mà thu d−ợc chỉ là 1 bức điện báo lỗi
mysql> SELECT owner, COUNT(owner) FROM pet; ERROR 1140 at line 1: Mixing of GROUP columns (MIN(),MAX(),COUNT()...)
with no GROUP columns is illegal if there is no GROUP BY clause
• COUNT() và GROUP BY rất có ích cho việc mô tả dữ liệu của bạn theo những cách khác nhau.
• Ví dụ sau đây sẽ chỉ ra những cách khác nhau để thực hiện các điều tra dân số con vật
Số con vật theo loài:
mysql> SELECT species, COUNT(*) FROM pet GROUP BY species; Species COUNT(*) Bird cat dog hamster snake 2 2 3 1 1 Số con vật theo giới tính:
mysql> SELECT sex, COUNT(*) FROM pet GROUP BY sex;
(trong phần này ,NULL ám chỉ không biết giới tính)
Sex COUNT(*) NULL F M 4 1 1 Số con vật theo cả loài và giới tính:
mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
• Bạn không cần thao tác trên toàn bộ một bảng khi sử dụng
COUNT().Ví dụ câu lệnh tr−ớc khi đ−ợc thực hiện chỉ trên chó và mèo ,nh− sau:
mysql> SELECT species, sex, COUNT(*) FROM pet -> WHERE species = "dog" OR species = "cat"
-> GROUP BY species, sex;
• Hoặc nếu bạn muốn biết số con vật theo giới tính và chỉ với những con đẫ biết giới tính:
mysql> SELECT species, sex, COUNT(*) FROM pet -> WHERE sex IS NOT NULL
-> GROUP BY species, sex;