Chúng ta bấm nút nguồn trên remote để mở tivi xem phim. Hầu như chúng ta không biết, không quan tâm nó truyền tia hồng ngoại hay sóng gì. Đến khi tivi không lên, hành động đầu tiên của ta là đập đập cái remote vào lòng bàn tay.
Có một sự thật rất thú vị.Nếu bạn đã làm website một thời gian...
Thì khả năng cao bạn đã sử dụng CRUD rồi.
😄
Chỉ là...
Bạn chưa biết nó có tên là CRUD thôi.
Ví dụ.
Bạn tạo tài khoản.
↓
Create
Bạn xem danh sách tài khoản.
↓
Read
Bạn sửa thông tin.
↓
Update
Bạn xóa tài khoản.
↓
Delete
Bốn thao tác.
Hết.
😄
Nhưng gần như toàn bộ website có Database đều xoay quanh bốn việc này.
CRUD là gì?
CRUD là viết tắt của:
- C – Create: Tạo dữ liệu.
- R – Read: Đọc hoặc lấy dữ liệu.
- U – Update: Cập nhật dữ liệu.
- D – Delete: Xóa dữ liệu.
CRUD là nhóm bốn thao tác cơ bản mà ứng dụng thường sử dụng để làm việc với dữ liệu trong Database.
Ví dụ một website bán hàng có thể:
Create: thêm sản phẩm.
Read: xem sản phẩm.
Update: sửa sản phẩm.
Delete: xóa sản phẩm.
Ví dụ đời thường nhất 📒
Hãy tưởng tượng.
Bạn có một cuốn sổ danh bạ.
📖
Trong đó có:
An 0901...
Bình 0902...
Cường 0903...Một ngày đẹp trời.
Bạn làm bốn việc.
1. Thêm người mới
Bạn ghi:
Dũng 0904...Đó là:
Create.
2. Xem thông tin
Bạn mở sổ.
Tìm:
BìnhĐó là:
Read.
3. Sửa thông tin
Bình đổi số điện thoại.
Bạn gạch số cũ.
Ghi số mới.
Đó là:
Update.
4. Xóa người
Cường chuyển sang sống trên sao Hỏa. 🚀
🤣
Bạn xóa Cường khỏi danh bạ.
Đó là:
Delete.
CRUD trong Database
Bây giờ.
Đổi cuốn sổ.
Thành MySQL.
😄
Ta có bảng:
usersVí dụ:
id | name | email
---|--------|----------------
1 | An | an@email.com
2 | Bình | binh@email.com
3 | Cường | cuong@email.comBốn thao tác CRUD sẽ tương ứng với SQL.
C – Create
Muốn thêm dữ liệu.
Chúng ta dùng:
INSERTVí dụ:
INSERT INTO users (name, email)
VALUES ('Dũng', 'dung@email.com');Database sẽ thêm:
4 | Dũng | dung@email.com🎉
Bạn vừa thực hiện:
Create.
R – Read
Muốn đọc dữ liệu.
Chúng ta thường dùng:
SELECTVí dụ:
SELECT * FROM users;Database trả về danh sách.
An
Bình
Cường
DũngĐây là:
Read.
U – Update
Bình đổi email.
Bạn cần sửa dữ liệu.
Dùng:
UPDATEVí dụ:
UPDATE users
SET email = 'binh-new@email.com'
WHERE id = 2;Bình.
Có email mới.
😄
Đó là:
Update.
D – Delete
Cường không còn dùng tài khoản.
Bạn muốn xóa.
Dùng:
DELETEVí dụ:
DELETE FROM users
WHERE id = 3;Cường biến mất khỏi bảng.
😅
Đó là:
Delete.
Chua thêm 😆
CRUD thực ra rất đời thường.
Bạn mua một cái tủ.
🗄️
Create
→ Bỏ đồ mới vào.
Read
→ Mở tủ xem đồ.
Update
→ Đổi vị trí đồ.
Delete
→ Vứt đồ không dùng.
🤣
Database cũng chẳng khác mấy.
Chỉ có điều...
Database không có cái tủ.
Nó có:
INSERT
SELECT
UPDATE
DELETECRUD và một website bán hàng 🛒
Hãy tưởng tượng.
Bạn có trang quản trị sản phẩm.
Thêm sản phẩm
Tên:
iPhone
Giá:
999
[Thêm sản phẩm]↓
Create
Xem sản phẩm
iPhone
Samsung
Laptop
iPad↓
Read
Sửa sản phẩm
iPhone
999 → 899↓
Update
Xóa sản phẩm
iPad
[Xóa]↓
Delete
Bạn vừa xây một hệ thống CRUD.
😄
CRUD và PHP
Bây giờ.
Nếu dùng PHP thuần.
Bạn có thể viết:
<?php
$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);Đây là:
Read.
Thêm dữ liệu:
$sql = "INSERT INTO users (name, email)
VALUES ('An', 'an@email.com')";↓
Create.
Sửa:
$sql = "UPDATE users
SET name = 'An Nguyễn'
WHERE id = 1";↓
Update.
Xóa:
$sql = "DELETE FROM users
WHERE id = 1";↓
Delete.
CRUD và Laravel
Đây là lúc bài 64 và bài 65 bắt đầu kết nối với nhau.
😄
Laravel.
Framework.
↓
MVC.
↓
CRUD.
Ví dụ.
Một trang quản lý sản phẩm.
ProductControllercó thể xử lý:
index()
create()
store()
edit()
update()
destroy()Bạn sẽ thấy những cái tên này rất nhiều khi học Laravel.
Và bây giờ.
Bạn đã biết chúng đang làm gì.
CRUD có phải chỉ dành cho website?
Không.
😄
CRUD xuất hiện ở rất nhiều nơi.
Ví dụ:
Ứng dụng quản lý nhân viên
Create → Thêm nhân viên.
Read → Xem nhân viên.
Update → Sửa thông tin.
Delete → Xóa nhân viên.
Blog
Create → Viết bài.
Read → Đọc bài.
Update → Sửa bài.
Delete → Xóa bài.
Website bán hàng
Create → Thêm sản phẩm.
Read → Xem sản phẩm.
Update → Sửa sản phẩm.
Delete → Xóa sản phẩm.
Quản lý bệnh nhân
Create → Thêm hồ sơ.
Read → Xem hồ sơ.
Update → Cập nhật hồ sơ.
Delete → Xóa hồ sơ.
Một hiểu lầm rất phổ biến 🤡
Nhiều người nghĩ:
"CRUD là một ngôn ngữ lập trình."
Không.
😄
CRUD chỉ là:
Bốn loại thao tác cơ bản với dữ liệu.
Nó không phải:
PHP.
Không phải:
MySQL.
Không phải:
Laravel.
Không phải:
Framework.
Nó chỉ là một cách gọi rất tiện.
CRUD có giống SQL không?
Không hoàn toàn.
SQL là:
Ngôn ngữ truy vấn Database.
CRUD là:
Khái niệm về bốn thao tác dữ liệu.
SQL có thể thực hiện CRUD.
Ví dụ:
Create → INSERT
Read → SELECT
Update → UPDATE
Delete → DELETEĐây là cách nhớ cực kỳ dễ.
CRUD và REST API 🌐
Đến đây.
Chúng ta có thể nối tiếp bài API.
😄
Một REST API thường có các HTTP method như:
POST
GET
PUT/PATCH
DELETEChúng thường được ánh xạ tương ứng với CRUD:
POST → Create
GET → Read
PUT/PATCH → Update
DELETE → DeleteVí dụ.
Bạn gửi:
GET /api/products↓
Lấy danh sách sản phẩm.
Read.
Bạn gửi:
POST /api/products↓
Tạo sản phẩm mới.
Create.
Bạn gửi:
PUT /api/products/10↓
Cập nhật sản phẩm số 10.
Update.
Bạn gửi:
DELETE /api/products/10↓
Xóa sản phẩm số 10.
Delete.
😎
Bây giờ CRUD bắt đầu nối được:
Database → Backend → API → Frontend.
Đó chính là tư duy rất quan trọng.
Một lỗi cực nguy hiểm 😱
Trong CRUD.
Đặc biệt cẩn thận với:
DELETEVí dụ.
Bạn viết:
DELETE FROM users;😨
Không có:
WHEREĐiều gì xảy ra?
...
Xóa toàn bộ users.
💀
Không phải một người.
Không phải mười người.
Mà...
Tất cả.
Và UPDATE cũng vậy 😭
Bạn viết:
UPDATE users
SET email = 'test@email.com';Không có:
WHEREKết quả?
Tất cả user.
Có cùng email.
🤣
Đây chính là lý do.
Khi làm CRUD thật.
Bạn phải cực kỳ cẩn thận với:
UPDATE
và
DELETE.
InfinityFree Case 😅
Bạn đang test.
Website quản lý sản phẩm.
Bạn muốn xóa:
id = 15Bạn viết:
DELETE FROM products
WHERE id = 15;👍
An toàn hơn.
Nhưng nếu bạn vô tình viết:
DELETE FROM products;...
Xin chia buồn.
🤣
Đó là lý do:
Backup Database trước khi "toang"
không phải bài viết cho vui.
Debug CRUD kiểu dev thật 😎
Khi CRUD không hoạt động.
Đừng chỉ nhìn giao diện.
Hãy đi từng bước.
1. Form có gửi dữ liệu không?
Nếu không.
Kiểm tra:
HTML.
Method.
Input name.
2. PHP có nhận dữ liệu không?
Kiểm tra:
$_POSThoặc:
$_GET3. SQL có đúng không?
Kiểm tra câu:
INSERT
SELECT
UPDATE
DELETE4. Database có nhận dữ liệu không?
Mở phpMyAdmin.
Kiểm tra bảng.
5. Có lỗi SQL không?
Đừng chỉ nhìn:
"Không chạy."
Hãy lấy chính xác:
Error message.
6. UPDATE/DELETE có WHERE không?
Đây là bước:
CỰC KỲ QUAN TRỌNG.
😅
Một mẹo cực hay 😎
Khi học CRUD.
Đừng chỉ đọc lý thuyết.
Hãy tự xây một mini project.
Ví dụ:
Quản lý danh sách sách.
Bạn cần:
[Thêm sách]
[Danh sách sách]
[Sửa]
[Xóa]Nếu làm được bốn chức năng này.
Bạn đã thực hành:
CRUD.
Và đồng thời.
Bạn sẽ đụng phải:
PHP.
MySQL.
Form.
Validation.
SQL.
Session.
Frontend.
Backend.
...
Một bài tập nhỏ.
Nhưng học được rất nhiều.
Checklist chuẩn không cần chỉnh 😎
CRUD = Create, Read, Update, Delete
Create thường dùng INSERT
Read thường dùng SELECT
Update dùng UPDATE
Delete dùng DELETE
CRUD không phải ngôn ngữ lập trình
CRUD không phải Framework
REST API thường ánh xạ HTTP methods với CRUD
Cẩn thận UPDATE/DELETE không có WHERE
Luôn backup dữ liệu quan trọng trước thao tác nguy hiểm
FAQ nhanh
CRUD có phải là Database không?
→ Không. CRUD là bốn thao tác cơ bản với dữ liệu.
CRUD có phải chỉ dành cho MySQL không?
→ Không. Ý tưởng CRUD có thể áp dụng với nhiều loại Database và hệ thống lưu trữ dữ liệu khác nhau.
CRUD có liên quan đến API không?
→ Có. REST API thường dùng GET, POST, PUT/PATCH và DELETE để thực hiện các thao tác tương ứng với Read, Create, Update và Delete.
Laravel có hỗ trợ CRUD không?
→ Có. Laravel cung cấp rất nhiều công cụ giúp xây dựng các ứng dụng CRUD nhanh và có cấu trúc.
CRUD có khó không?
→ Bản thân CRUD không khó. Cái khó nằm ở việc xây dựng một hệ thống CRUD an toàn, có validation, phân quyền, xử lý lỗi và bảo vệ Database.
Bạn có thể cũng đang gặp 😭
👉 API là gì? (Giải thích như gọi đồ ăn.)
👉 Backup Database đúng cách trước khi "toang"
👉 Session vs Cookie - Hai anh em dễ nhầm nhất của PHP
Tổng kết
Nếu Database là một cái tủ hồ sơ.
📚
Thì CRUD chính là bốn việc bạn làm với cái tủ đó:
C – Create
→ Bỏ hồ sơ mới vào.
R – Read
→ Lấy hồ sơ ra xem.
U – Update
→ Sửa hồ sơ.
D – Delete
→ Bỏ hồ sơ không cần nữa.
😄
Nghe đơn giản.
Nhưng hãy nhìn xung quanh.
Facebook.
Shopee.
Website bán hàng.
Blog.
Trang quản trị.
Hệ thống nhân viên.
Ứng dụng quản lý.
...
Gần như ở đâu có dữ liệu.
Ở đó có CRUD.
Và đây là một trong những lý do CRUD rất quan trọng với người mới học Backend.
Bạn không cần nhớ một đống thuật ngữ.
Chỉ cần nhớ:
Create → tạo
Read → đọc
Update → sửa
Delete → xóa
Bốn chữ.
CRUD.
🛠️
Nhưng hãy nhớ thêm một câu nữa:
UPDATE và DELETE mà quên WHERE thì đừng hỏi tại sao Database "khóc". 😭🤣