Storage Engine - MyISAM : Ưu điểm: - Tốc độ truy xuất cao - Insert dữ liệu với tốc độ cao - Lưu trữ làm nhiều file trên hệ thống, ít tốn dung lượng đĩa - Hỗ trợ full text search Nhược đi
Trang 11 Storage Engine
- MyISAM :
Ưu điểm:
- Tốc độ truy xuất cao
- Insert dữ liệu với tốc độ cao
- Lưu trữ làm nhiều file trên hệ thống, ít tốn dung lượng đĩa
- Hỗ trợ full text search
Nhược điểm:
- Table lock level
- Không hỗ trợ transation
- InnoDB:
Ưu điểm:
- Hỗ trợ transaction
- Row level lock
- Crash recovery
- Hỗ trợ Foregin Key
Nhược điểm:
- Truy xuất chậm
- Insert dữ liệu tốc độ chậm
- Tốn nhiều bộ nhớ cho buffer pool
- Tốn nhiều dung lượng đĩa cứng
Trang 22 Các kiểu dữ liệu
Varchar
Text : 65k byte 2^16
Medium Text : 16 triệu byte
LongText : 2tỷ byte
Các kiểu về chữ sử dụng Charset UTF-8, Latin
Và các Collation, _genaral_ci, _bin
Kiểu _bin (uft8_bin) : Tốc độ tìm kiếm nhanh do khi so sánh sẽ sử dụng kiểu so sánh bằng tuyệt đối (phân biệt hoa thường)
Kiểu _genaral_ci (utf8_genaral_ci): Không phân biệt hoa thường, không dấu
và có dấu được coi như nhau
BLOB: dạng binary dùng để lưu trữ ảnh, file nhị phân…
MediumBLOB
LongBLOB
Trang 33 Index
Cải thiện tốc độ truy xuất, tốc độ sort, join v v khi thao tác đến column có
sử dụng index
Do tác dụng của index nên những trường để Join, sort, where nên sử dụng Index
Nhược điểm: Nếu sử dụng quá nhiều Index trong 1 bảng sẽ dẫn đến tốc độ insert bị sụt giảm
Hình thức index phổ biến của MySQL là B-tree
Create Index Diemtoan
Hoten Diem Toan (index), DiemVan(Index) …
http://people.ksp.sk/~kuko/bak/big/
Trang 44 Quy tắc đặt tên
Tên table: Đặt tên table sử dụng dấu _ để ngăn cách các từ
Ví dụ : user_logs,
Tên các colum lấy tiền tố của table theo quy tắc:
Nếu table là từ đơn thì lấy 3 ký tự đầu
Ví dụ:
Table users
Các column sẽ có dạng : use_id, use_name…
Table products
Các column sẽ có dạng : pro_id, pro_name…
Nếu table là từ ghép thì lấy chữ cái đầu của các từ ghép
Ví dụ: user_logs
Các column sẽ có dạng : ul_id, ul_user_id…
Sử dụng quy tắc này sẽ tránh bị lỗi mờ hồ khi join nhiều bảng SELECT * FROM users, user_logs WHERE use_id = ul_user_id
Trang 55 Query
- Câu lệnh select đơn giản : Select * from table_A;
- Trong khi lập trình lưu ý thật hạn chế việc sử dụng select * mà phải select
đủ cột cần dùng: Select user_id, user_name FROM table_A
- Join 2 bảng:
SELECT * FROM users, user_logs WHERE use_id = ul_user_id
Hoặc
SELECT * FROM users INNER JOIN user_logs ON use_id = ul_user_id Ngoài ra có thể sử dụng LEFT JOIN, RIGHT JOIN, FULL JOIN
- Sắp xếp sửa dụng cú pháp ORDER BY
- Giới hạn record trả về sử dụng LIMIT 1000, 10
- Nhóm kết quả sử dụng GROUP BY … HAVING …
- Kết hợp 2 query dùng UNION (UNION ALL)
SELECT * FROM table_A
UNION
SELECT * FROM table_B
- Insert dữ liệu:
INSERT INTO table_A(…) VALUES(…)
Insert batch INSERT INTO table_A(…) VALUES (….), (.…),(….)
- UPDATE, DELETE
Trang 66 Một số function cơ bản
Count
Sum
Avg
If
v…v
Một số function về string
Trang 7Bài tập:
Làm 1 site tin tức bao gồm 2 phần:
Danh mục tin (category)
Tin tức
Admin
Category bao gồm:
1 id
2 tên category
3 thứ tự sắp xếp
Tin tức bao gồm
1 id
2 Tiêu đề tin
3 Danh mục tin
4 Ảnh đại diện
5 Ngày post tin
6 Kích hoạt
7 Mô tả ngắn
8 Mô tả chi tiết
Bên ngoài show như vnexpress hoặc tin247.com
Gồm menu category theo thứ tự đã định, bên phải hoặc ở dưới là tin tức Tin ở phần category bao gồm Tiêu đề, ảnh, teaser (mô tả ngắn), ngày nhập