Tampilkan postingan dengan label SQL Server. Tampilkan semua postingan
Tampilkan postingan dengan label SQL Server. Tampilkan semua postingan

Jumat, 21 Oktober 2016

Tugas Mata Kuliah Sistem Manajemen Basis Data Sesi 5 #20161020

Salah satu hal yang membuat kualitas data di database tinggi adalah, sumber datanya paling valid.Selain itu proses pengolahan datanya. Berikut ini adalah cuplikan ERD suatu sistem informasi (klik gambar untuk memperbesar) :


Buatlah sebuah database (nama bebas sesuai aturan) dan buatlah tabel-tabel sesuai dengan gambar. Pemilihan tipe-tipe data harus tepat, penentuan primary key dan foreign key harus benar. Setelah database dan tabel-tabelnya jadi, isilah setiap tabel dengan data kelurahan, kecamatan, kabupaten / kota, dan provinsi di seluruh Indonesia. Carilah data kelurahan, kecamatan, kabupaten / kota, dan provinsi di seluruh Indonesia di situs KEMENDAGRI. Yang dikumpulkan : file skrip SQL untuk membuat database dan tabel, serta penjelasan mengenai proses tahap-tahap dari pencaarian data sampai pemasukkan data ke dalam tabel. Tugas dikumpulkan paling lambat 1 hari sebelum anda hadir ke program studi Sistem Informasi S-1, kampus A perguruan tinggi Universitas Respati Indonesia, Bambu Apus Jakarta Timur di mata kuliah ini. Selamat mengerjakan!

Jumat, 07 Oktober 2016

Tugas Mata Kuliah Sistem Manajemen Basis Data Sesi 3 #20161006

Tugas disimpan di dalam file .sql dan dikirim via e-mail ke : tugasilmubiner@gmail.com dengan menyebutkan nama, NPM, kelas, prodi. Paling lambat hari Rabu minggu depan. Hari kamisnya kuliah di kampus A Universitas Respati Indonesia (URINDO) program studi Sistem Informasi, Bambu Apus, Jakarta Timur. Jamgan sampai terlambat!

  1. Kepanjangan SQL adalah ..........
  2. Sebutkan kelompok-kelompok perintah SQL!
  3. Sebutkan perintah-perintah SQL pada setiap kelompok yang disebutkan pada soal no. 2!
  4. Sebutkan objek-objek pada suatu database yang dibuat menggunakan MySQL!
  5. Jelaskan perbedaan DROP dengan DELETE!
  6. Jelaskan perintah CREATE mengacu pada e-book ini!
  7. Buatlah sebuah database bernama apotek_db menggunakan SQL!
  8. Sebutkan dan jelaskan tipe-tipe data yang ada di MySQL!
  9. Buatlah tabel-tabel di dalam apotek_db berdasarkan ERD ini menggunakan SQL!
  10. Pelajari ERD ini, jelaskan masing-masing tabel (untuk menyimpan data apa, data apa saja yang disimpan, mengapa relationshipnya seperti pada gambar, dsb.)
Selamat mengerjakan! #sisteminformasiURINDO #URINDO #URINDOjakartatimur

Sabtu, 01 Oktober 2016

Tugas Mata Kuliah Sistem Manajemen Basis Data #20160929

Berikut ini tugas mata kuliah Sistem Manajemen Basis Data, program studi Sistem Informasi S-1, tahun akademik 2016-2017 semester ganjil, Fakultas Teknologi Informasi, Universitas Respati Indonesia (URINDO), Jakarta Timur. Tugas dikirim sebelum batas waktu yang telah ditentukan ke alamat e-mail : tugasilmubiner@gmail.com. Referensi dan materi perkuliahan dapat dilihat di menu Bacaan. Selamat mengerjakan. #urindo #urindojakartatimur #sisteminformasiurindo #siurindo

  1. Apa yang dimaksud dengan sistem?
  2. Jelaskan mengenai sistem basis data!
  3. Jelaskan perbedaan sistem basis data dengan sistem manajemen basis data!
  4. Kegiatan apa saja kah yang dapat dilakukan dengan sistem manajemen basis data?
  5. Apa yang dimaksud dengan anomali pada sistem basis data?
  6. Jelaskan bentuk-bentuk anomali yang dimaksud pada pertanyaan no.5!
  7. Apakah normalisasi basis data itu?
  8. Jelaskan proses normalisasi dengan contohnya!
  9. Jelaskan dengan lengkap tetntang primary key dan foreign key!
  10. Rancangan sebuah database menggunakan ERD atau Class diagram UML atau sketsa tabel-tabel untuk suatu Apotek!

Kamis, 30 Juli 2015

Siklus Hidup Pengembangan Database

Gara-gara ada yang menanyakan tentang ERD (Entity Relationship Diagram) dan cara membuat ERD, maka lahirlah artikel ini namun dalam bentuk grafik (klik gambar untuk memperbesar) tentang langkah-langkah pengembangan database alias cara merancang / membuat database... silahkan dikunyah-kunyah.


Sabtu, 05 Juli 2014

Apakah Data Mining itu? : Sebuah Penjelasan Sederhana

Wah saya merasa sangat bersalah... karena pertanyaan dalam kotak komentar dari salah satu pengunjung blog ini tidak segera terjawab... penyebabnya adalah, karena memang saya tidak mendapat notifikasi kalau ada komentar yang masuk! mohon maaf bagi para komentator, bahwasannya saya tidak memantau terus menerus blog ini :(

Gara-gara kesalahan saya itu, kali ini saya ingin menebusnya dengan suatu (percobaan) penjelasan yang sederhana mengenai pengertian data mining buat seseorang di sana yang secara tak sengaja saya cuekin (semoga sudi memaafkan saya juga) dan bagi para pembelajar di Indonesia pada umumnya... yuk tariikkkk maaangggg...!

data mining berasal dari dua kata yaitu data dan mining (ya iya lah..!). data (menurut KBBI online) adalah keterangan yang benar dan nyata. Menurut Merriam-Webster online, data adalah factual information (as measurements or statistics) used as a basis for reasoning, discussion, or calculation (terjemahan menurut Google Translate : informasi faktual (sebagai pengukuran atau statistik) digunakan sebagai dasar untuk penalaran, diskusi, atau perhitungan). mining berasal dari kata dasar mine yang berarti tambang, mendapat akhiran -ing sehingga menjadi kata kerja yaitu menambang atau penambangan. Jadi kalau diartikan asal-asalan bin ngaco bin ngawur oleh bukan pakar bahasa, arti data mining adalah menambang data atau penambangan data (:p)

Nah sekarang kita lihat apa kata pakar IT di bidang data mining :

Data mining is synonymous with knowledge discovery in databases, knowledge extraction, data or pattern analysis, data archeology, data dredging, data snooping, data fishing, information harvesting, and business intelligence (Hand et al., 2001; Giudici, 2003; Han & Kamber, 2006) -Wang, John, Encyclopedia of Data Warehousing and Mining Second Edition, p. lxiv-

Terjemahan : Data mining ini identik dengan penemuan pengetahuan dalam database, ekstraksi pengetahuan, analisis data atau pola, arkeologi data, pengerukan data, menyadap data (seperti menyadap getah pohon karet), memancing data, memanen informasi, dan intelijen bisnis.

Itulah arti kata data ming dan pengertian data mining menurut pakar.... udah jelas kan? pasti beluuummmm... iya kaannnn...??? :)

Sekarang dengerin (maksudna : baca) dongeng saya mengenai data mining ...

Once upon a time (...halah!) ada suatu toko kelontong (eh, masih ada yang tahu arti kata kelontong ga ya? cari ndiri di KBBI online yak! :p ) yang laris manis, yang menjual barang sebanyak 1234 item setiap hari dari pagi sampe malem selama satu tahun cuma libur lebaran dan natal doang ( ...kesian amat pegawainya ya?!), melayani ribuan pembeli tiap harinya, dari sabang sampai merauke... merdeka!!!

Om Joni si empunya toko kelontong ini untungnya sudah melek TI... biar gampang ngitung kes flo (cash flow) dan laba rugi jualannya, om Joni menggunakan sistem terkomputerisasi. Semua data transaksi penjualan dan kulakannya disimpan pada database. Jadi tiap mau tutup toko atau tiap minggu atau tiap bulau atau tiap tahun, om Joni bisa langsung tahu kes flo dan laba ruginya dengan cepat, akurat.

Nah, pada chapter (...halah!) dongeng di atas tuh, yang diceritain adalah sistem informasi akuntansi pada toko kelontong om Joni... trus data miningnya mana??? sabar jooo... makan dulu tuh kacang goreng sama minum black coffee-nya! :p

Namanya bisnis, pasti punya saingan. Dari waktu ke waktu muncul toko-toko kelontong saingan toko om Joni... dan om Joni pun merasa terancam... kekhawatirannya terbukti dengan menurunnya omset penjualannya yang tampil di setiap laporan mingguan. Om Joni cari akal putar otak. Tiiiinnnggg! muncul ide gimana kalau barang-barang yang paling laku yang dibeli bersamaan dipajang bersebelahan sehingga si pembeli bisa langsung comat-comot tanpa keliling toko kelontongnya yang luas, dengan harapan agar bisa menaikkan omset penjualannya.

Untuk dapat mengetahui barang-barang yang paling laku yang dibeli secara bersamaan om Joni mendaulat programmernya untuk membuat query SQL untuk data transaksi satu tahun terakhir guna mengetahui barang-barang yang paling laku yang dibeli secara bersamaan. Dengan jurus sakti dan senjata pamungkas, si programmer secepat kilat mendapatkan data yang diinginkan om Joni ...jebreettt!!!

Om Joni apalagi programmernya bingung... ternyata barang yang laku yang dibeli secara bersamaan dalam kurun waktu satu tahun terakhir banyak bingiits cuyy!!! Melihat bossnya yang melongo bin garuk-garuk kelapa eh kepala... si programmer langsung mengontak bala bantuan kakak seperguruan, seorang jawara ilmu sakti statistika.

Bahu membahu, si programmer dan kakak perguruannya, jungkir balik mengerahkan segala daya dan kemampuannya mengolah data transaksi yang berukuran besar tersebut untuk mendapatkan hasil yang diinginkan. Akhirnya selama dua hari dua malam, dua pedjoeang tersebut berhasil memecahkan masalah yang dihadapi bossnya... kkrraaakkk!!!

Om Joni tidak langsung senang, dengan mimik serius, om Joni langsung mengawasi penataan barang-barang yang dijual di tokonya sesuai dengan hasil dari programmer dan jawara statistika.

Hari demi hari, minggu demi minggu, omset penjualan toko kelontong om Joni mulai merangkak naik. Wajah om Joni yang tadinya mendung kelabu berubah menjadi cerah ceria... programmer dan kakak seperguruannya dianugerahi tanda jasa berupa Bintang Satya Darma Jualan Jaya yang terbuat dari emas murni 24 karat seberat 100 gram... wuiiiihhh lumayan tuh kalo digadein! :p

Esok harinya si programmer dipanggil menghadap. Om Joni menanyakan kepada programmer apakah bisa meramal barang apa yang akan laku dan tidak laku di masa depan sehingga bagian kulakan bisa mudah bekerja. Si programmer menyanggupi, namun ia memberi syarat kepada om Joni, untuk memberinya waktu mendalami jurus AI (Artificial Intelligence : kecerdasan buatan) agar menjadi seorang jawara, soalnyta ilmu AI programmer saat itu masih pemula. Om Joni langsung mengiyakan, ia langsung memberikan pundi-pundi perak agar programmernya mendalami ilmu AI tingkat dewa.

Singkat cerita, dari hasil pendalaman ilmu AI sampai tingkat dewa, programmer dapat meramalkan dan memprediksi barang-barang yang laku dan tidak laku di masa depan. Alhasil toko om Joni mulai mengalahkan toko-toko kelontong pesaing lainnya.

Pesan moral yang disampaikan dongeng ini (...halah!) adalah :

Dari dongeng di atas, programmer dan kakak seperguruannya si jawara statistik melakukan data mining untuk mencari tahu barang-barang yang paling laku yang dibeli secara bersamaan. Selain itu programmer melakukan data mining untuk memprediksi barang-barang yang laku atau tidak laku di masa depan dengan menggunakan AI.

Dalam data mining, ada data dalam jumlah yang sangat-sangat amat besar sekali, disimpan di dalam suatu database. Kemudian data besar yang ada di dalam database itu diolah-olah menggunakan algoritma-algoritma dan kaidah-kaidah statistik yang bertujuan menghasilkan informasi baru (yang nantinya disebut sebagai : knowledge -pengetahuan-).

Jadi data mining itu adalah proses pengolahan data menggunakan algoritma-algoritma dan kaidah-kaidah statistik yang bertujuan menghasilkan informasi baru. Eits!!! ntar dulu seiring perkembangannya, data mining tidak hanya membutuhkan ilmu mengenai database, algoritma, statistika, kecerdasan buatan, namun juga visualisasi, komputasi performa tinggi, IR (information retrieval) dan ilmu-ilmu lainnya.


Senin, 29 Juli 2013

Cara Mengecek atau Memeriksa Versi MDAC

MDAC adalah kependekan dari Microsoft Data Access Components. Pada dasarnya MDAC adalah sekumpulan library yang diperlukan pada saat membuat program aplikasi atau menjalankan program aplikasi yang mengakses database. Biasanya MDAC berisi ActiveX Data Objects (ADO), OLE DB, and Open Database Connectivity (ODBC). Untuk lebih lengkap tentang MDAC silahkan dibaca di Wikipedia.

MDAC ini menjadi penting saat program aplikasi akan didistrbusikan (diinstall) ke komputer klien. Karena jika di komputer klien tidak terdapat MDAC yang tepat versinya, program aplikasi bisa jadi tidak dapat bekerja dengan sempurna.

Langkah-langkah untuk memeriksa MDAC di suatu komputer adalah melalui registry dengan langkah sebagai berikut :

Informasi versi yang ditemukan dalam kunci berikut:
HKEY_LOCAL_MACHINE\Software\Microsoft\DataAccess\FullInstallVer
Untuk memeriksa registri, ikuti langkah berikut:
  1. Pada Mulai menu, klik Menjalankan.
  2. Dalam Terbuka kotak teks, ketik regedit kemudian klik Oke; ini mulai Peninjau Suntingan Registri.
  3. Di panel navigasi, drill-down lintasan berikut:
    HKEY_LOCAL_MACHINE\Software\Microsoft\DataAccess
  4. Di panel rincian, lihat di Nama kolom untuk FullInstallVer dan Versi. Masing-masing kunci ini akan memiliki informasi versi yang sesuai dalam Data kolom.
  5. Setelah selesai, klik Keluar pada Registri menu untuk menutup Registry Editor.
(sumber : http://support.microsoft.com/kb/301202/id-id)

Untuk dapat men-download MDAC silahkan klik link donwload MDAC ini.

 Catatan : Pada saat kita menginstall software database system buatan Ms, biasanya MDAC sudah diikutsertakan dalam instalasi!

Jumat, 14 Desember 2012

Data Definition Language untuk Database JualanDB

create database jualanDB;

use jualandb;

drop table msbarang;

drop table mssatuan;

drop table mskasir;

drop table trheader;

drop table trdetail;

drop table mscarabayar;

drop table mscustomer;

create table msbarang (

  kdbrg varchar(10) primary key,

  nmbrg varchar(50),

  kdsat varchar(3),

  hrgsat int,

  jmlstok int

);

create table mssatuan (

  kdsat varchar(10) primary key,

  nmsat varchar(50)

);

create table mskasir (

  kdksr varchar(10) primary key,

  nmksr varchar(50),

  almksr varchar(50),

  tlpksr varchar(50),

  emlcust varchar(50),

  tgllhrksr date,

  noIDksr varchar(50),

  tglmsk date

);

create table trheader (

  kdtr varchar(10) primary key,

  tgltr datetime,

  kdcust varchar(10),

  kdksr varchar(10),

  kdbyr tinyint

);

create table trdetail (

  kdtr varchar(10),

  kdbrg varchar(10),

  hrgsat int,

  qtybrg int

);

create table mscarabayar (

  kdbyr varchar(10) primary key,

  descbyr varchar(50)

);

create table mscustomer (

  kdcust varchar(10) primary key,

  nmcust varchar(50),

  almcust varchar(50),

  tlpcust varchar(50),

  emlcust varchar(50),

  tgllhrcust date,

  noIDcust varchar(50),

  tglinp date

);

insert into msbarang values

  ('B0001','Semen Padang','S0001',70000,500),

  ('B0002','Pasir Cimangkok','S0002',300000,6),

  ('B0003','Bata Merah','S0003',500,2500),

  ('B0004','Bata Kuning','S0003',1000,600),

  ('B0005','Batako','S0003',1500,3000),

  ('B0006','Bata Putih','S0003',2500,100),

  ('B0007','Semen Tiga Roda','S0001',80000,220),

  ('B0008','Batu Pondasi','S0002',500000,5),

  ('B0009','Genteng Press','S0003',2500,120),

  ('B0010','Batu Split','S0002',400000,7),

  ('B0011','Genteng Beton','S0001',2000,60),

  ('B0012','Tripleks KW 2','S0004',60000,30),

  ('B0013','Martil Cap Bango','S0001',40000,24),

  ('B0014','Semen Kujang','S0001',74500,30),

  ('B0015','Cat Tembok cap Jalak 1 ltr','S0005',75000,13);

insert into mskasir values

  ('K0001','Jennifer Lupis','Pd. Gede',null,null,'1980-11-11','1234','2010-11-11'),

  ('K0002','Tuti Martuti','Jatiwaringin',null,null,'1981-11-11','5323','2010-11-11'),

  ('K0003','Fiona','Klp. Gading',null,null,'1980-12-11','5353','2010-11-11'),

  ('K0004','Lenny Marleni','Pluit',null,null,'1981-11-1','1113','2010-11-11'),

  ('K0005','Usilowati','Kramat Jati',null,null,'1980-1-12','2234','2010-11-11');

 

insert into mscustomer values

  ('C0001','Joni','Pd.Ranggon',null,null,null,null,'2012-12-14'),

  ('C0002','Didi','Jatimakmur',null,null,null,null,'2012-12-14'),

  ('C0003','Harry','Lubang Buaya',null,null,null,null,'2012-12-14');

 

insert into trheader values

  ('TR0001','2012-12-14','C0001','K0002',null),

  ('TR0002','2012-12-14','C0002','K0001',null),

  ('TR0003','2012-12-14','C0003','K0004',null);

insert into trdetail values

  ('TR0001','B0004',1000,2),

  ('TR0001','B0001',70000,1),

  ('TR0002','B0003',500,7),

  ('TR0003','B0010',400000,2),

  ('TR0003','B0006',2500,3),

  ('TR0003','B0003',500,10);

 

insert into mssatuan values

  ('S0001','sak'),

  ('S0002','m kubik'),

  ('S0003','biji'),

  ('S0004','lembar'),

  ('S0005','liter');

Jumat, 23 November 2012

Learn SQL Join with Simple Way

Right now I give super simple SQL queries to learn joins like inner join, right join, left join. These SQL commands are suitable for most RDBMS like MySQL, Oracle, SQL Server, etc. Hope you enjoy it!

Kali ini saya memberikan query-query sederhana SQL untuk belajar join seperti inner join, right join, left join. Perintah-perintah SQL yang ditulis cocok untuk sebagian besar RDBMS seperti MySQL, Oracle, SQL Server, dll. Selamat belajar!

create table pegawai (
  nip varchar(3) primary key,
  nama varchar(50),
  atasan varchar(3)
);

insert into pegawai values
  ('001','ali','001'),
  ('002','budi','001'),
  ('003','buce','001'),
  ('004','cici','002'),
  ('005','dedi','002'),
  ('006','fifi','003');
 
create table gaji (
  nip varchar(3),
  gaji int(50)
);

insert into gaji values
  ('001',6000000),
  ('002',5000000),
  ('003',4000000),
  ('004',3000000),
  ('007',2000000),
  ('008',1000000);

-- inner join 
SELECT
  pegawai.nip,
  pegawai.nama,
  gaji.gaji
FROM pegawai
inner join gaji
  on pegawai.nip = gaji.nip

-- inner join dengan alias 
SELECT
  a.nip,
  a.nama,
  b.gaji
FROM pegawai AS a
inner join gaji as B
  on a.nip = b.nip
 
-- left join
SELECT
  pegawai.nip,
  pegawai.nama,
  gaji.gaji
FROM pegawai LEFT join gaji
  on pegawai.nip = gaji.nip
 
-- right join
SELECT
  pegawai.nip,
  pegawai.nama,
  gaji.gaji
FROM pegawai RIGHT join gaji
  on pegawai.nip = gaji.nip
 
-- contoh lain
-- menampilkan nama pegawai
-- yg gajinya di atas 4 jt
SELECT
  pegawai.nama
FROM pegawai
inner join gaji
  on pegawai.nip = gaji.nip
where gaji.gaji > 4000000 

-- contoh lagi
-- menampilkan nama pegawai
-- yg blm memiliki gaji
SELECT
  pegawai.nama
FROM pegawai
left join gaji
  on pegawai.nip = gaji.nip
where gaji.gaji is null

-- contoh inner join implisit
-- (tidak memakai perintah inner join)
SELECT
  pegawai.nip,
  pegawai.nama,
  gaji.gaji
FROM pegawai, gaji
WHERE pegawai.nip = gaji.nip

create table golongan (
  nip varchar(3),
  gol int default 1,
  tglSK date
);

insert into golongan values
  ('001',6, '2000-02-02'),
  ('002',5, '2000-02-02'),
  ('003',3, '2000-03-03'),
  ('004',3, '2000-03-03'),
  ('005',2, '2002-11-11'),
  ('006',1, '2002-11-11');
 
-- inner join lebih dari dua tabel
select
  pegawai.nip,
  pegawai.nama,
  golongan.gol,
  gaji.gaji
from pegawai
inner join golongan
  on pegawai.nip = golongan.nip
inner join gaji
  on pegawai.nip = gaji.nip

Senin, 30 Juli 2012

Display Image from SQL Server to VB.Net Form

Regarding to previous post about how to store image use SQL command , here is the complete SQL commands and VB.Net source code and commands to display the image from SQL database to a VB.Net PictureBox on a Form.

Posting ini bisa disebut pelengkap dari postingan sebelumnya (http://ilmubiner.blogspot.com/2010/08/menyimpan-file-gambar-pada-database-sql.html) mengenai cara menyimpan image pada SQL server menggunakan perintah SQL. Nah sekarang adalah perintah SQL lengkap untuk menyimpan data image ke database dan source code VB.Net (2005) untuk menampilkan image dari database ke sebuah PictureBox.

SQL Server commands to create database, table, and insert commands to store images files :
create database ujicoba;

use ujicoba

CREATE TABLE pegawai (
 nip int,
 nama varchar(50) not null,
 foto varbinary(max) not null
)

INSERT INTO Pegawai (nip, nama, foto)
SELECT 10, 'Winona Ryder',
 BulkColumn from
 Openrowset( Bulk 'E:\winona.jpg', Single_Blob)
   as EmployeePicture

INSERT INTO Pegawai (nip, nama, foto)
SELECT 20, 'Jessica Alba',
 BulkColumn from
 Openrowset( Bulk 'E:\jess_alba.jpg', Single_Blob)
   as EmployeePicture

VB.Net source code to get image data stored in SQL Server and display to a Form (use PictureBox) :
Imports System.Data.SqlClient

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim con As New SqlConnection("Data Source=10.20.30.176;Initial Catalog=ujicoba; Integrated Security=True; Persist Security Info=FALSE;")
        con.Open()
        Dim cmd As New SqlCommand("select nip, nama, foto From pegawai", con)
        Dim dr As SqlDataReader = cmd.ExecuteReader()
        Dim dt As New DataTable
        dt.Load(dr)
        Dim row As DataRow = dt.Rows(0)
        txtNIP.Text = row("nip")
        txtNama.Text = row("nama")
        'Dim ms As New IO.MemoryStream(CType(row("foto"), Byte()))
        'Dim img As Image = Image.FromStream(New IO.MemoryStream(CType(row("foto"), Byte())))
        picBox.Image = Image.FromStream(New IO.MemoryStream(CType(row("foto"), Byte())))
    End Sub
End Class

Rabu, 23 Mei 2012

Case - When - Then - Else Script Example in SQL Server

This example is use Northwind database in SQL Server.
Contoh perintah SQL berikut menggunakan database Northwind di SQL Server.

This query is to display grand total each order and the description of grand total according to sales target which is $500.
Query ini menampilkan grand total dari setiap order dan keterangan menurut target penjualan yaitu sebesar $500.

The query :
Query-nya :

select a.orderid,
       c.firstname + ' ' + c.lastname as employeename,
       sum(b.unitprice*b.quantity) as subtotal,
       description = 
         case 
           when sum(b.unitprice*b.quantity) > 500 then 'over target'
           when sum(b.unitprice*b.quantity) < 500 then 'under target'
           when sum(b.unitprice*b.quantity) = 500 then 'on target'
           else 'n/a'
         end
from orders a
inner join [order details] b on a.orderid = b.orderid
inner join employees c on a.employeeid = c.employeeid
group by a.orderid, c.firstname + ' ' + c.lastname
order by a.orderid



Modification the query, for example; we want to know grand total each employee on August 1994 :
Modifikasi query untuk mengetahui grand total setiap pegawai pada bulan Agustus 1994 :

select c.firstname + ' ' + c.lastname as employeename,
       sum(b.unitprice*b.quantity) as subtotal,
       description = 
         case 
           when sum(b.unitprice*b.quantity) > 5000 then 'over target'
           when sum(b.unitprice*b.quantity) < 5000 then 'under target'
           when sum(b.unitprice*b.quantity) = 5000 then 'on target'
           else 'n/a'
         end
from orders a
inner join [order details] b on a.orderid = b.orderid
inner join employees c on a.employeeid = c.employeeid
where month(a.orderdate) = 8 and year(a.orderdate) = 1994
group by c.firstname + ' ' + c.lastname
order by c.firstname + ' ' + c.lastname



Happy learning! Selamat belajar!

Selasa, 11 Oktober 2011

SQLite, Lite Ukurannya, Lite Perintahnya

Awal mulainya sih SQLite gue cuekin. Tapi waktu mulai pakai Android... eh kok database-nya pakai SQLite ya? Nah mulai dari situ rada-rada penasaran, tapi masih agak cuek. Dan masih pakai mySQL di PHP. Padahal PHP sudah mendukung SQLite.

Belakangan... lagi mikir lagi (dulu pernah mikir) gimana caranya nempelin data yang lumayan banyak dalam file .exe tapi gampang di-manage. Berhubung belum ada bayangan, iseng-iseng cari database alternatif... nah kebetulan inget lagi SQLite... penasaran sama "lite"-nya. Seberapa "lite" sih? So, nanya mbah Gugel lah akhirnya. Nih sekelumit cerita dari mbah Gugel.

SQLite tuh yang bikin pak de Richard Hipp tahun 2000. Waktu itu pake de Hipp bekerja di General Dynamic (pabrik yang bikin pesawat tempur F-16!) yang lagi ngerjain proyeknya US Navy. Kerjaan pak de Hipp bikin program yang mau dipasang di dalam rudal penghancur kapal yang berbasis sistem operasi HP-UX dan database Informix. Mungkin pak de pikir Informix kebesaran kali ye, jadinya ya dia bikin sendiri database yang imut tapi tidak amit... maka jadilah SQLite. Dan yang paling salut sama pak de Hipp, beliau buka source code-nya untuk umum! Eh source code-nya pakai bahasa C lho (kalo di sini boro-boro dibuka... minta bayarannya selangit!).

Yuk kita kenalan sama SQLite ini :
  • Kalo Oracle, mySQL, SQL Server termasuk RDBMS (Relational DataBase Management System). SQLite termasuk ERDBMS (Embedded RDBMS). Maksudnya embedded; database SQLite sebagai library dan di-compile bersama programnya... dan menjadi bagian terintegrasi dengan program aplikasi.
  • SQLite merujuk pada SQL-92 namun pastinya ada pengurangan fitur-fitur (biar ukurannya kecil).
  • Mendukung multithread untuk baca data. Tapi kalau nulis data, menerapkan locking database (satu database dikunci, sehingga user lain tidak bisa mengubah atau menambah data pada tabel lain).
  • Secara opsional mendukung karakter Unicode.
  • Bahasa pemrograman yang didukung : BASIC, C, C++, Clipper//Harbour, Common Lisp, C#, Curl, D, Delphi, Haskell, Java, Lua, newLisp, Objective-C (Mac OS X dan iOS), OCaml, Perl, PHP, Pike, Python, REBOL, R, REALbasic, Ruby, Scheme, Smalltalk, Tcl, Visual Basic, and JavaScript. Ada juga COM (ActiveX) wrapper sehingga dapat diakses melalui JScript and VBScript. Lezaaattt :p
  • Program yang udah menyertakan SQLite di dalamnya :
  • Mozilla Firefox, Mozilla Thunderbird (bookmarks, cookies, contacts dsb.) .
  • Skype.
  • Adobe Photoshop Lightroom, Adobe AIR, Adobe Reader.
  • Ruby on Rails'.
  • Opera.
  • Service Management Facility pada Solaris dan OpenSolaris.
  • HTML5 menerapkan SQLite sebagai WebSimpleDB API.
  • Apple's iOS (SMS/MMS, Calendar, Call history, Contacts storage).
  • Symbian.
  • Nokia's Maemo.
  • Google's Android.
  • Google's Chrome browser.
  • RIM's BlackBerry.
  • Linux Foundation's MeeGo.
  • Palm's webOS.
Wew, ternyata banyak juga ya yang udah pakai.... bagi yang tertarik silahkan klik http://sqlite.org

Kamis, 21 April 2011

Masalah pada Penamaan VB.Net, Database SQL Server dan Access

*glodagh!*

Berdasakan pengalaman dari dulu, bahwasannya membuat suatu nama (misal nama file, nama prosedur, nama tabel, dan nama-nama lainnya) tidak boleh menggunakan SPASI menjadi aturan baku yang tidak bisa diganggu gugat. Ternyata kemarin mendapatkan problem karena ada nama tabel yang memakai spasi!!!

Gara-garanya adalah tabel tersebut sudah dibuat sangat lama (mungkin waktu masih super bego) kemudian digunakan lagi dalam membuat program VB.Net yang mengakses database... alhasil selama tiga hari mencari-cari penyebab masalah tidak bisanya data disimpan di dalam database tanpa menggunakan perintah SQL "insert" secara eksplisit (melalui dataset). Nah setelah nama tabelnya diganti (spasinya dihilangkan), barulah programmnya berjalan dengan benar.

Kesimpulan :

Jika ingin membuat nama, nama apa saja, nama file kek, nama database kek, nama class kek... jangan menggunakan SPASI walaupun sistem operasi Windows dan aplikasi-aplikasinya mendukung pemakaian spasi untuk penamaan. Gunakanlah garis bawah (underscore) sebagai pengganti spasi, atau dapat juga menggunakan cara penulisan punuk Onta (Camel text) Contoh : Hitung Total() diganti dengan Hitung_Total() atau HitungTotal()

Senin, 16 Agustus 2010

Menyimpan File Gambar pada Database SQL Server Hanya Menggunakan Perintah SQL

Berikut cara menyimpan file gambar pada database SQL Server hanya menggunakan perintah SQL saja tanpa menggunakan front end atau middle ware lagi.

CREATE TABLE Employees(
Id int,
Name varchar(50) not null,
Photo varbinary(max) not null
)


INSERT INTO
Employees (Id, Name, Photo)
SELECT
10, 'John',
BulkColumn from
Openrowset( Bulk 'C:\photo.bmp', Single_Blob)
as EmployeePicture
Oh iya, perintah SQL di atas untuk SQL Server 2005 mudah-mudahkan kompatibel dengan 2008 dan belum dites! (belum sempat, lagi buru-buru pulang buka puasa di rumah hehehe) Sudah dites di SQL Server 2008 dan sukses (confirmed by Wulung)

Kamis, 29 April 2010

SOAL LATIHAN ADMINISTERING SQL SERVER

SOAL LATIHAN ADMINISTERING SQL SERVER

Sebuah panitia kompetisi sepakbola ingin menggunakan teknologi informasi untuk memperlancar manajemen kompetisi yang akan diadakan beberapa bulan mendatang. Untuk itu dirancang sebuah database yang bernama KOMSEBOLA sebagai tempat penyimpanan data yang berkaitan dengan kompetisi. Anda sebagai DBA diberi tugas oleh Analis Sistem untuk memanajemen datbase yang akan dibuat tersebut.

Database KOMSEBOLA dirancang memiliki dua buah file data dan file log. Masing-masing file data memiliki ukuran awal 5 MB, ukuran maksimal tak terbatas, dan pertumbuhannya 25%. Sedangkan untuk file log masing-masing memiliki ukuran awal sebesar 1 MB, dengan ukuran maksimal 5 MB dan pertumbuhan 2%.

Di dalam database KOMSEBOLA memiliki tabel-tabel (dan strukturnya) sebagai berikut :

t_Tim
--------------
NoReg
TglReg
NamaTim
AlamatTim
NoTelpTim
NamaMgr
NamaPlt
NamaAsPlt
JmlPemain

t_Pemain
---------------
NoReg
NoPungg
NamaPmn
TglLahir
Posisi

t_Stadion
---------------
NoStd
NamaStd
AlamatStd
NoTelpStd
ContactPrs

t_PTandingn
---------------
NoUrut
TglPtd
JamPtd
NoStd
NoRegTim1
NoRegTim2
SkorTim1
SkorTim2
Keterangan

Buatlah index pada masing-masing tabel.

Buatlah empat grup user yaitu Admin, Panitia, Tim, Jurnalis. Dimana grup user Admin memiliki level keamanan setara sa. Sedangkan grup Panitia hanya dapat baca-tulis data semua tabel. Untuk grup Tim hanya dapat membaca data saja pada semua tabel, sedangkan grup Jurnalis hanya dapat membaca data tabel t_PTandingan.

Kemudian buatkan login untuk Churchill, McArthur yang nanti dimasukkan dalam grup Admin.
Login lain untuk grup Panitia ; Britney, Christina, Tukul, Sule, Azis.
Login untuk grup tim ; Tim1, Tim2, Tim3
Sedangkan login untuk grup Jurnalis ; J1, J2, ... , J12

Kemudian masukkan 12 data-data stadion ke dalam tabel t_Stadion (buatlah data dummy).

Backuplah database KOMSEBOLA dengan jenis Full Backup yang dijalankan setelah database dan tabel-tabel dibuat.

Setelah itu jadwalkan full backup setiap semua pertandingan berakhir dalam satu hari.

Selain itu buatlah sebuah differential backup yang dijalankan setiap 3 jam setiap hari dimulai dari jam 08:00 sd. 22:00

Transferlah data stadion tersebut ke file Ms-Excel agar dapat dikoreksi pada rapat panitia yang akan datang dan dapat disebarkan ke masing-masing tim yang telah mendaftar.

Seorang tim memberikan data pemainnya dalam bentuk Ms-Excel. Modifikasi format data yang ada di file Excel tersebut agar dapat di-import ke dalam database (buat data dummy)

Perintah-Perintah yang Berkaitan dengan Bab Security

-- menambah login user baru yang bukan user domain
sp_addlogin 'student1','rahasia','northwind'
-- param--> nama pass default database

-- menampilkan informasi login user
sp_helplogins 'student1'

-- mengubah password login
sp_password 'rahasia','kosong','student1'
-- param--> pass-lama pass-baru nama

-- mengubah default database
sp_defaultdb 'student1','pubs'
-- param--> nama def-DB

-- melihat data user
use master
select * from syslogins where name='student1'

-- menghapus login user
sp_droplogin 'student1'

-- menambah hak login user (user domain)
sp_grantlogin 'binus\siswa01'

-- menolak hak login user (user domain)
sp_denylogin 'binus\siswa01'

-- menghapus hak login user (user domain)
sp_revokelogin 'binus\siswa01'

sp_helplogins 'binus\siswa01'

-- memberi hak akses DB
use pubs
sp_grantdbaccess 'student1','std1'
sp_grantdbaccess 'binus\siswa01','siswa01'
-- param--> nama alias

sp_helplogins 'binus\siswa01'
sp_helpuser 'siswa01'

-- mencabut hak akses DB
sp_revokedbaccess 'std1'
sp_revokedbaccess 'siswa01'
-- param--> alias

-- memberi semua hak akses objek
grant all on authors to std1

-- mencabut semua hak akses objek
revoke all on authors from std1

-- mencegah semua hak akses objek
deny all on authors to std1

-- mencabut semua hak akses objek
revoke all on authors to std1

-- contoh
grant select on authors to std1
revoke select on authors from std1

grant insert, update on authors to siswa01
revoke insert, update on authors from siswa01

grant delete on authors to std1, siswa01
revoke delete on authors from std1, siswa01

grant select on authors(au_lname,au_fname) to std1

- menampilkan informasi hak akses user pd objek
sp_helprotect 'authors'
-- param--> tabel
sp_helprotect 'authors','std1'
-- param--> tabel alias

-- menampilkan informasi hak akses user tertentu pd objek
sp_helprotect NULL,'siswa01'

-- menambah DB role baru
sp_addrole 'deptkeuusers'

-- memberikan hak akses objek ke role
grant select, insert on authors to deptkeuusers

-- menampilkan informasi role
sp_helprole 'deptkeuusers'

-- menambah user pd DB role
sp_addrolemember 'deptkeuusers','std1'

-- menghapus user pd DB role
sp_droprolemember 'deptkeuusers','std1'

-- menghapus DB role
sp_droprole 'deptkeuusers'

-- menambah user pd server role
sp_addsrvrolemember 'std1', 'sysadmin'

-- menghapus user pd server role
sp_dropsrvrolemember 'std1', 'sysadmin'

Soal Kuis Database SQL 29Apr10

  1. Buatlah sebuah database bernama Kuis1
  2. Tambahkan sebuah file data yang ukuran awalnya 3 mb, ukuran maksimumnya 5 MB, dan pertumbuhannya 20%
  3. Tambahkan pulah sebuah file log yang spesifikasinya sama dengan file data di soal no. 2
  4. Di dalam database Kuis1, buatlah sebuah tabel bernama Customer yang memiliki kolom-kolom sebagai berikut : kdcust, nmcust, alamatcust, tgl_lahircust, beratcust, tinggicust, goldarahcust,notelpcust, emailcust
  5. Isilah tabel Customer dengan lima data dummy
  6. Tampilkan semua data customer
  7. Tampilkan data customer yang beratnya kurang dari 45 kg
  8. Ada berapa banyak cucstomer yang golongan darahnya O?
  9. Tampilkan kdcusr dan nmcust yang tingginya 150 cm s/d 160 cm
  10. Tampilkan data customer yang diurutkan berdasarkan berat dan tingginya
  11. Hitung berapa banyak customer yang lahir di bulan April
  12. Hitung pula banyaknya customer berdasarkan tahun lahirnya
  13. Tampilkan data customer yang tinggal di Jakarta, Bekasi, Tangerang
  14. Berapakan total berat customer yang dikelompokkan berdasarkan beratnya
  15. Tampilkan kdcust, nama, dan umurnya

Kamis, 18 Februari 2010

BC RS SQL Exam Answers

Maaf atas keterlambatannya.

Semua perintah saya ambil dr pekerjaan pak Yudho, kecuali trigger.

--1--
create database dbMakmur
on
(
name = dbMakmur01,
filename = 'D:\dtmakmur01.mdf',
size = 2mb,
maxsize = 15mb,
filegrowth = 1 MB
),
(
name = dbMakmur02,
filename = 'D:\dtmakmur02.ndf'
),
(
name = dbMakmur03,
filename = 'D:\dtmakmur03.ndf'
)
Log ON
(
name = dbMakmur_Log,
filename = 'D:\dtmakmurlog.ldf'
)

--2--
use dbmakmur
Create table MsStaff (
KdStaff char(5) not null,
NmStaff varchar(25) not null,
Alamat varchar(40) not null,
NoRek varchar(12) not null,
KdBank Char(1) not null,
LevelStaff char(1) default 5,
Komisi money )

Create table KomisiBulanan (
Bulan int not null,
KdStaff char(5) not null,
KomisiBulanan Money not null,
StatusBayar char(1) default 'T')

Create table MsProspek(
KdProspek char(5) not null,
NamaProspek varchar(25) not null,
JenKel char(1) default 'L',
Alamat varchar(40) not null,
Kota varchar(15) default 'Jakarta',
Telp varchar(15),
TglLahir datetime not null)

create table trAsuransi (
TglTransaksi datetime not null,
kdTransaksi char(5) not null,
kdProspek char(5) not null,
kdStaff char(5) not null,
Status char(1) default 'T')


--3--
insert into msStaff values('S0001','Alan Smith', 'Jl. Mawar No 10','751-3526360','1','3',200)
insert into msStaff values('S0002','Bernard Shaw', 'Jl. Anggrek 23' ,'751-3526360','1','3',200)
insert into msStaff values('S0003','Maria Sand', 'Jl. Anggrek 54' ,'751-3569857','2','4',135)
insert into msStaff values('S0004','Karl Max', 'Jl. Asoka 43' ,'654-5965321','3','4',135)
insert into msStaff values('S0005','Lenny Gosh', 'Jl. Kamboja 54' ,'351-7845235','3','5',75)
insert into msStaff values('S0006','Sorl Karl', 'Jl. Mawar 27' ,'567-9535263','1','5',75)
insert into msStaff values('S0007','Penny G.', 'Jl. Sepatu 51' ,'921-9595356','2','5',75)

insert into KomisiBulanan values(01,'S0006', 75,'T')
insert into KomisiBulanan values(01,'S0002', 400,'T')
insert into KomisiBulanan values(01,'S0007', 75,'T')
insert into KomisiBulanan values(01,'S0005', 75,'T')

insert into msProspek values('P0001','Adam Pasaribu', 'L','Jl Layang 10','Jakarta' ,'7451235','1971-12-05')
insert into msProspek values('P0002','Albert Wijaya', 'L','Jl Warna 15','Jakarta' ,'3512623','1968-03-17')
insert into msProspek values('P0003','Fani S' , 'P','Jl Tumbuk 34','Jakarta' ,'4531626','1979-08-15')
insert into msProspek values('P0004','Stefanus W' , 'L','Jl Warna 20','Jakarta' ,'3516267','1970-02-04')
insert into msProspek values('P0005','Lena Putri' , 'P','Jl Nila 45','Jakarta' ,'5623523','1968-10-05')
insert into msProspek values('P0006','Maria S.' , 'P','Jl Mujair 20','Bandung' ,'5468412','1959-01-30')
insert into msProspek values('P0007','Manise R.' , 'P','Jl Komodo 14','Bandung' ,'784562' ,'1973-02-01')
insert into msProspek values('P0008','Diego Ribas' , 'L','Jl Pangeran 30','Jakarta','4568952','1978-08-06')

insert into TrAsuransi values('2004-01-01','T0001','P0001','S0001','T')
insert into TrAsuransi values('2004-01-01','T0002','P0002','S0006','Y')
insert into TrAsuransi values('2004-01-01','T0003','P0003','S0002','Y')
insert into TrAsuransi values('2004-01-01','T0004','P0004','S0005','T')
insert into TrAsuransi values('2004-01-01','T0005','P0005','S0002','T')
insert into TrAsuransi values('2004-01-01','T0006','P0006','S0007','Y')
insert into TrAsuransi values('2004-01-01','T0007','P0007','S0002','Y')
insert into TrAsuransi values('2004-01-01','T0008','P0008','S0005','Y')

--4--
--Alter--
--1--
alter database dbMakmur
add log file (
name = dbMakmur_Log02,
filename = 'D:\dtmakmurlog02.ldf'
)
--2--
alter database dbMakmur
REMOVE file dbmakmur03
--3--
alter table msStaff
alter column NmStaff varchar(30)
--4--
alter table msProspek
alter column TglLahir Smalldatetime
--5--
alter table msStaff
add constraint pk_KdStaff primary key (kdStaff)

alter table KomisiBulanan
add constraint fk_KdStaff
Foreign key (kdStaff) REFERENCES msStaff(kdStaff)

alter table msProspek
add constraint pk_KdProspek primary key (kdProspek)

alter table TrAsuransi
add constraint fk_KdStaff_trAsuransi
Foreign key (kdStaff) REFERENCES msStaff(kdStaff)

alter table TrAsuransi
add constraint fk_kdPorspek_trAsuransi
Foreign key (kdProspek) REFERENCES msProspek(kdProspek)

------
--query--
--1--
select * from trAsuransi where status ='t'
--2--
select * from msProspek where year(tglLahir)>1970
--3--
select a.kdstaff,a.nmstaff from Msstaff as a
left join komisibulanan as b
on a.kdstaff = b.kdstaff
where b.kdstaff is null
--4--
select a.kdstaff,a.nmstaff from Msstaff as a
left join trAsuransi as b
on a.kdstaff = b.kdstaff
where b.kdstaff is null

----
--view--
--1--
CREATE VIEW vw_transaksi AS
SELECT a.tgltransaksi,a.kdprospek, b.NamaProspek, a.kdstaff,c.nmStaff
FROM trAsuransi as a
inner join msprospek as b on a.kdprospek = b.kdprospek
inner join msStaff as c on a.kdstaff = c.kdstaff

--2--
CREATE VIEW vw_transaksi_stj AS
SELECT * FROM trAsuransi where [Status] = 'Y'

--3--
CREATE VIEW vw_transaksi_stj AS
SELECT a.kdstaff,b.nmStaff,count(*) as transaksi
FROM trAsuransi as a
inner join msStaff as b on a.kdStaff = b.kdStaff
group by a.kdstaff,b.nmStaff
-----
--store procedure--

--1--
CREATE PROCEDURE PR_staffTr
(@kdstaff CHAR(5))
AS
select * from trAsuransi
WHERE kdstaff =@kdstaff

exec pr_staffTr 'S0007'

--2--
CREATE PROCEDURE PR_prospekTr
(@kdprospek CHAR(5))
AS
select a.kdprospek,tgltransaksi, NamaProspek,JenKel,Alamat,Kota,Telp,TglLahir,[status]
from trAsuransi as a
inner join msprospek as b on a.kdprospek = b.kdprospek
WHERE a.kdprospek =@kdprospek

exec PR_prospekTr'P0001'

create trigger tr_1 on trasuransi for insert as
declare @status char(1)
set @status = (select status from inserted)
if @status = 'y'
begin
declare @komisi money
set @komisi = (select komisi from msstaff where kdstaff = (select kdstaff from inserted))
declare @bulan int
set @bulan = (select count(bulan) from komisibulanan where kdstaff = (select kdstaff from inserted) and bulan = (select month(tgltransaksi) from inserted))
if @bulan > 0
begin
update komisibulanan set komisibulanan = komisibulanan + @komisi where kdstaff = (select kdstaff from inserted)
print 'Komisi Bulanan terupdate'
end
else
begin
declare @bln int, @kdstaff char(5)
set @bln = (select month(tgltransaksi) from inserted)
set @kdstaff = (select kdstaff from inserted)
insert into komisibulanan values (@bln,@kdstaff,@komisi,'T')
print 'Komisi Bulanan terinsert'
end
end

-- test case tr_1
select * from komisibulanan
insert into TrAsuransi values('2004-01-02','T0009','P0001','S0001','Y')
insert into TrAsuransi values('2004-01-02','T0010','P0001','S0002','Y')
select * from komisibulanan
-- end of test case tr_1

create trigger tr_2 on msprospek for update as
declare @kdprospek_lama char(5), @kdprospek_baru char(5)
set @kdprospek_lama = (select kdprospek from deleted)
set @kdprospek_baru = (select kdprospek from inserted)
if @kdprospek_lama <> @kdprospek_baru
begin
rollback tran
print 'Kode Prospek tidak boleh diubah!!!'
end

-- test case tr_2
insert msprospek values ('p0010','dummy','x','dummy','dummy','dummy','1900-01-01')
select * from msprospek
update msprospek set kdprospek = 'xxx' where kdprospek = 'p0010'
-- end of test case tr_2

create trigger tr_3 on msprospek for delete as
declare @kdprospek char(5), @status char(1)
set @kdprospek = (select kdprospek from deleted)
set @status = (select status from trasuransi where kdprospek = @kdprospek)
if @status = 'T'
begin
rollback tran
print 'Data prospek tidak boleh dihapus!'
end
else
begin
delete from trasuransi where kdprospek = @kdprospek
end

-- test case tr_3
select * from trasuransi
delete from msprospek where kdprospek = 'p0001'
-- end of test case tr_3

Senin, 23 November 2009

Masalah NULL dan Fungsi ISNULL() pada Ms SQL Server

Fungsi IsNull() berguna untuk memeriksa suatu kolom ada datanya atau tidak. dan jika tidak ada datanya atau NULL, maka diberi data pengganti.

tbl_coba
Nama Harga
------ ------
A 12000
B NULL
C 21000
D 20000
E 10000

Perhatikan query-query di bawah ini :

SELECT AVG(harga) FROM  tbl_coba

SELECT AVG(ISNULL(harga, 0)) FROM tbl_coba

Hasil AVG(price) didapat dari perhitungan 6300 dibagi 4. Sedangkan hasil AVG(ISNULL(price,0)) didapat dari 6300 / 5. Pembagi AVG(price) adalah 4 karena NULL tidak diikutsertakan. Hasil mana yang benar tergantung dari konteksnya.

Dari ilustrasi di atas, NULL berpotensi dapat menyebabkan perbedaan penghitungan. NULL juga dapat menyebabkan program aplikasi yang mengakses tabel tersebut akan mendapatkan error (Baca Mengatasi Kolom yang Tidak Memiliki Data (NULL) pada VB.Net). Dalam hal ini fungsi ISNULL() menjadi fungsi yang sangat berguna untuk menghindari kesalahan.

Antisipasi agar pada tabel bebas dari NULL adalah membuat kolom menjadi NOT NULL pada saat tabel dibuat atau menggunakan constraint DEFAULT. Tapi kadang juga NULL tidak dapat dihindari :)