CRUD, HTTP protokolü üzerinden dönen dört temel veri işleyişine verilen kısaltma adıdır. Bu dört temel işlem ise sırasıyla şu şekildedir: Create, Read, Update ve Delete. Günümüzde basit olarak düşündüğümüzde bir web aplikasyonunda herhangi bir veri kullanırken temelde yapılması gereken işlemlerin bütünü aslında.

Örnek olarak basit bir kategori ekleme sistemini baz alalım. Kategoriyi oluşturabilmeli, okuyabilmeli, güncelleyebilmeli ve silebilmeliyiz. Bunun zaten karşılığı CRUD oluyor. Bu işlemleri yaparken ileriye dönük ve temiz anlaşılması için basit bir konsept kullanmamız en doğrusu olur. Eğer kompleks bir sistem kurmuyorsanız işleri karmaşıklık seviyesine getirmeye hiç gerek yok, kodun anlaşılır ve çalışır durumda olması verim açısından daha önemli.Aşağıda verdiğimiz örnek ile alakalı Codeigniter 4 teknolojisine ait bir controller dosyasının içeriğini görebilirsiniz. Detaylı bir örnek değildir, anlaşılması için oluşturulmuştur. Bu yüzden canlı ortamda kullanacağınız kod aşağıdaki gibi olmamalıdır.
<?php
namespace App\Controllers;
use App\Models\CategoryModel;
class CategoryController extends BaseController
{
    //Buradaki örnek sadece basit işlemleri yapmaktadır. Herhangi bir veri kontrol işlemi yapılmamıştır, canlı ortamda mutlaka kontrol işlemleri yapılmalıdır.
    public function create()
    {
        //Form içerisinden gelen name değerini alıyoruz.
        $name = $this->request->getPost('name');
        //Modelimizi oluşturuyoruz.
        $categoryModel = model(CategoryModel::class);
        //Modelimizi kullanarak veritabanına kayıt işlemi yapıyoruz.
        $categoryModel->insert([
            'name' => $name
        ]);
        //Bilgi mesajını burada işleyebilirsiniz.
    }
    public function read($id)
    {
        //Modelimizi oluşturuyoruz.
        $categoryModel = model(CategoryModel::class);
        //Modelimizi kullanarak veritabanından kayıt okuma işlemi yapıyoruz.
        $category = $categoryModel->find($id);
        //Gelen veriyi json formatında döndürüyoruz.
        return $this->response->setJSON($category);
    }
    public function update($id){
        //Form içerisinden gelen name değerini alıyoruz.
        $name = $this->request->getPost('name');
        //Modelimizi oluşturuyoruz.
        $categoryModel = model(CategoryModel::class);
        //Modelimizi kullanarak veritabanında güncelleme işlemi yapıyoruz.
        $categoryModel->update($id,[
            'name' => $name
        ]);
        //Bilgi mesajını burada işleyebilirsiniz.
    }
    public function delete($id){
        //Modelimizi oluşturuyoruz.
        $categoryModel = model(CategoryModel::class);
        //Modelimizi kullanarak veritabanında silme işlemi yapıyoruz.
        $categoryModel->delete($id);
        //Bilgi mesajını burada işleyebilirsiniz.
    }
}


Create (Oluşturma) İşlemi
Bu işlemin amacı kullanıcıdan gelen veriyi veritabanına eklemektir. Burada yapılması gereken gelen verinin doğruluğunu ve istediğimiz formatta olup-olmadığını kontrol ettirmektir. Daha sonrasında veritabanına bu veriyi kayıt edebiliriz.

Read (Okuma) İşlemi
Veritabanında bulunan değerleri filtreleme yapacağınız konulara göre veya filtreleme yapmaksızın okuyup, döndürdüğünüz işlemdir. Örneğin sadece id bazlı tek bir değeri alabilirsiniz. Veya ilgili değeri 2000 olan herhangi bir veri/verileri de çekebilirsiniz. Tamamen ihtiyacınıza ve amacınıza bağlı olarak yapacağınız işlemi şekillendirebilirsiniz.

Update (Güncelleme) İşlemi
İlgili filtre ile eşleşen verilerinizi bu işlemi baz alarak yapmanız mümkün. İster tekli ister çoklu, ihtiyacınız hangi şekildeyse ona göre işlemi şekillendirebilirsiniz. İşlem sonrasında işlemden etkilenen verilerin en güncel halini döndürebilirsiniz. Ya da sadece "işlem başarılı" mesajını döndürün, özgürlük alanınızı kendinize göre düzenleyin

Delete (Silme) İşlemi
Bir veya birden fazla veriyi veritabanından kaldırmak/silmek için bu işlemi yapmalısınız. Bu işlemi yaparken iki farklı konsepti tercih edebilirsiniz. Birincisi bir veriyi ve o veriyle ilişkili verileri tüm veritabanından silerek, o veriyi hiç var olmamış hale getirebilirsiniz. İkincisi ise o veri ve alakalı tüm verileri "silindi" olarak işaretleyip yansıtmamanız.

Tüm bu işlemleri yaparken dikkat edilmesi gereken nokta işlemleri elinizden geldiğince birbirinden ayrı tutmaktır. Çünkü yapılan işlemler ne kadar iç içe olursa o kadar kompleks bir yapı oluşturursunuz. Bunun ileride siz veya başka bir geliştirici tarafından kod okunurken ve yorumlanırken sorun yaratması olası. Kimi zaman ne kadar isteseniz bile bir işlemi yaparken aynı zamanda diğer işlemi yapmanız gerekebiliyor, bu tarz durumlarda anlık olarak basit olan çözümü tercih edip daha verimli olabilirsiniz. Buna örnek olarak bir satın alma işlemi sırasında bir çok işlem türü devreye girer; bakiye tablosuna - değerdeki bakiyenin eklenmesi (bakiye bazlı bir sistemse), sipariş tablosuna veri eklenmesi, ödeme tablosuna veri eklenmesi, kullanıcının verilerinin okunması gibi uzun uzun sıralayabiliriz.