SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

Apa itu Kolom yang Dihasilkan?

Beberapa sistem manajemen basis data (DBMS) menyertakan fitur yang disebut kolom yang dihasilkan.

Juga dikenal sebagai "kolom yang dihitung", kolom yang dihasilkan mirip dengan kolom normal, kecuali bahwa nilai kolom yang dihasilkan berasal dari ekspresi yang menghitung nilai dari kolom lain.

Dengan kata lain, nilai kolom yang dihasilkan dihitung dari kolom lain.

Contoh

Berikut adalah contoh dasar untuk mendemonstrasikan cara kerja kolom yang dihasilkan.

CREATE TABLE Products( 
    Id INTEGER PRIMARY KEY, 
    Name TEXT,
    Qty INT,
    Price INT,
    TotalValue INT GENERATED ALWAYS AS (Qty * Price)
);

Contoh ini dibuat di SQLite dan menggunakan sintaks SQLite untuk membuat kolom yang dihasilkan. Sintaks ini menggunakan GENERATED ALWAYS kendala kolom.

GENERATED ALWAYS bagian adalah opsional dalam SQLite, jadi Anda bisa menggunakan AS .

Sebenarnya, GENERATED ALWAYS bagian juga opsional di MySQL, dan bahkan tidak didefinisikan dalam TSQL (ekstensi SQL untuk SQL Server), jadi AS hanya kata kunci yang Anda butuhkan (bersama dengan ekspresi sebenarnya).

Ekspresi inilah yang menentukan nilai aktual yang akan dipegang kolom. Dalam contoh saya, bagian yang bertuliskan (Qty * Price) adalah ekspresi yang menentukan nilai tersebut.

Dalam hal ini, cukup mengalikan kuantitas (jumlah setiap produk) dengan harga setiap produk.

Oleh karena itu, kolom yang dihasilkan ini berisi nilai total setiap stok dalam inventaris.

Jika kita memasukkan data dan memilihnya, kita dapat melihat nilai yang dihitung dari kolom yang dihasilkan.

INSERT INTO Products VALUES 
  (1, 'Hammer', 10, 9.99),
  (2, 'Saw', 5, 11.34),
  (3, 'Wrench', 7, 37.00),
  (4, 'Chisel', 9, 23.00),
  (5, 'Bandage', 70, 120.00);

SELECT * FROM Products;

Hasil:

Id     Name        Qty    Price   TotalValue
-----  ----------  -----  ------  ----------
1      Hammer      10     9.99    99.9      
2      Saw         5      11.34   56.7      
3      Wrench      7      37      259       
4      Chisel      9      23      207       
5      Bandage     70     120     8400      

Jika kita melihat baris pertama, kita dapat melihat bahwa ada 10 palu dengan harga masing-masing 9,99. Kolom yang dihasilkan mengalikan dua nilai ini bersama-sama dan kita mendapatkan 99,9.

Jika kita mengurangi jumlah palu, maka kolom yang dihasilkan akan menghasilkan nilai yang berbeda.

Ini contohnya.

UPDATE Products 
SET Qty = 5 WHERE Id = 1;

SELECT * FROM Products;

Hasil:

Id     Name        Qty    Price   TotalValue
-----  ----------  -----  ------  ----------
1      Hammer      5      9.99    49.95     
2      Saw         5      11.34   56.7      
3      Wrench      7      37      259       
4      Chisel      9      23      207       
5      Bandage     70     120     8400      

Dalam hal ini saya mengurangi jumlah palu menjadi 5, dan kolom yang dihasilkan menghitung nilai 49,95.

Jenis Kolom yang Dihasilkan

Ada dua jenis kolom yang dihasilkan; tersimpan dan maya.

Beberapa DBMS mungkin menggunakan terminologi yang sedikit berbeda, misalnya SQL Server menggunakan istilah “persistent” bukan “stored”. Bagaimanapun, itu mengacu pada hal yang sama.

  • VIRTUAL :Nilai kolom tidak disimpan, tetapi dievaluasi saat baris dibaca.
  • STORED :Nilai kolom dievaluasi dan disimpan saat baris disisipkan atau diperbarui.

STORED oleh karena itu kolom membutuhkan ruang penyimpanan, sedangkan VIRTUAL kolom tidak.

Namun, ini juga berarti bahwa VIRTUAL kolom menggunakan lebih banyak siklus CPU saat sedang dibaca.

Manfaat Kolom yang Dihasilkan

Kolom yang dihasilkan dapat menghemat waktu saat menulis kueri, mengurangi kesalahan, dan meningkatkan kinerja.

Kolom yang dihasilkan dapat digunakan sebagai cara untuk menyederhanakan dan menyatukan kueri. Kondisi kompleks dapat didefinisikan sebagai kolom yang dihasilkan dan kemudian dirujuk dari beberapa kueri di tabel. Ini membantu memastikan bahwa mereka semua menggunakan kondisi yang persis sama.

Kolom yang dihasilkan yang disimpan dapat digunakan sebagai cache terwujud untuk kondisi rumit yang mahal untuk dihitung dengan cepat.

Batasan Kolom yang Dihasilkan

Kolom yang dihasilkan umumnya memiliki batasan jika dibandingkan dengan kolom normal, meskipun tingkat batasan dapat ditentukan oleh DBMS.

Misalnya, kolom yang dihasilkan umumnya hanya dapat menghitung nilai dari kolom dalam baris yang sama. Namun, batasan ini dapat diatasi (setidaknya di SQL Server) dengan menggunakan fungsi yang ditentukan pengguna sebagai bagian dari ekspresi kolom yang dihitung.

Lihat tautan di bawah untuk membaca lebih lanjut tentang implementasi kolom yang dihasilkan di berbagai DBMS.

Dokumentasi Resmi

Berikut dokumentasi untuk beberapa DBMS populer yang menyertakan batasan implementasi kolom yang dihasilkan:

  • Kolom yang dihitung di SQL Server
  • Kolom yang dihasilkan di PostgreSQL (Versi 12)
  • Kolom yang dihasilkan di MySQL (Versi 8.0)
  • Kolom yang dihasilkan dalam SQLite


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kembalikan Baris yang Mengandung Karakter Alfanumerik di SQLite

  2. Bagaimana cara melakukan kueri SQLite dalam aplikasi Android?

  3. Tidak dapat membuka database dalam mode baca/tulis

  4. Tingkatkan baris hanya pada peningkatan aplikasi

  5. Mengakses database satu aplikasi dari aplikasi lain