Tipe data merupakan bagian dari variabel yang mempengaruhi perilaku variabel. Dengan tipe data ini, bisa ditentukan nilai apa
yang bisa disimpan didalam variabel tersebut. Dan satu variabel hanya bisa diberi satu tipe data.
Ada lima jenis tipe data sesuai dengan SQL-ANSI 1993 yaitu
character string, numeric, temporal, binary, dan boolean. Tidak
semua provider basis data memiliki seluruh jenis tipe data. SQL Server sendiri mempunyai beberapa tipe data khusus untuk memudahkan dalam administrasi basis datanya.
Character String
Atribut seperti nama dan alamat direpresentasikan oleh
character string. Ada 2 macam tipe data untuk merepresentasikan character string, yaitu:
1. CHARACTER(<panjang>)
Atau CHAR(<panjang>) menspesifikasikan karakter dengan panjang yang tetap. Sisa karakter yang tidak terpakai umumnya digantikan oleh padding characters (spasi). 2. CHARACTER VARYING(<panjang>)
Atau VARCHAR(<panjang>) menspesifikasikan karakter dengan panjang yang fleksibel dan maksimum sesuai dengan <panjang>.
String diapit oleh single-quotes (cont.: ‘Tegar’). Single-quote didalam string dibentuk menggunakan dua single-quote (cont.: ‘Jum’’at’).
SQL Server juga memiliki tipe data khusus untuk menyimpan karakter UNICODE UCS-2. Tipe data ini antara lain nchar dan nvarchar.
Numeric
Data-data seperti usia dan gaji disimpan dalam bentuk angka. Penyimpanan dalam bentuk angka menggunakan tipe data
numeric. Ada empat macam tipe data numeric, yaitu:
1. INT, BIGINT, SMALLINT. SMALLINT mempunyai range ±2^15. INT mempunyai range ±2^31. BIGINT mempunyai
2. NUMERIC(<panjang>, [<presisi>]), DECIMAL(<panjang>, [<presisi>])
Mempunyai panjang karakter dan presisi (angka belakang koma) dengan range ±10^38.
Sebagai contoh: NUMERIC (5,2) mempunyai panjang karakter 5 dengan tingkat presisi 2. Jadi nilai 100,52 bisa disimpan tetapi tidak untuk 1000,1. Nilai 0,00001 disimpan menjadi 0,00.
3. REAL. Tingkat presisi tinggi dengan range 3,40E+38 s.d -1,18E-38 dan +-1,18E-38 s.d +3,40E+38.
4. FLOAT. Tingkat presisi tinggi dengan range 1,79E+308 s.d -2,23E-308; 0; +2,23E+308 s.d +1,79E+308.
Temporal
Temporal merupakan tipe data yang menyimpan tanggal dan waktu yang disesuikan dengan system-timezone (komputer). Sebagai contoh data temporal adalah data tentang tanggal lahir. Ada dua macam tipe data temporal, yaitu:
1. DATETIME. Tipe data ini menyimpan informasi tanggal, waktu atau bahkan keduanya. Dalam SQL Server, tipe data ini menyimpan dengan tingkat akurasi sampai 3,33 milidetik. Sedangkan untuk SMALLDATETIME hanya sampai 1 menit. Dalam tipe data ini, juga terdapat tipe data TIMESTAMP dengan tingkat akurasi sampai dengan 9 digit. 2. INTERVAL. Umumnya digunakan untuk menyimpan periode
seperti garansi. Ada 2 macam yaitu (1) YEAR-MONTH dan (2) DAY-TIME. SQL Server tidak mempunyai tipe data ini.
Binary
Sebenarnya semua data dalam komputer disimpan dalam bentuk biner, tipe data ini didesain untuk menyimpan dijit biner secara sekuensial. Ada tiga macam tipe data biner, yaitu:
1. BIT(<panjang>)
Dikenal sebagai BINARY dalam SQL Server. Panjang maksimum yang bisa diatasi oleh tipe data ini adalah 8.000 bytes.
2. BIT VARYING(<panjang>)
Dikenal sebagai VARBINARY dalam SQL Server. Panjang maksimum yang bisa diatasi oleh tipe data ini adalah 8.000 bytes.
3. BINARY LARGE OBJECT(<panjang>)
Dikenal sebagai VARBINARY (MAX) dalam SQL Server. Panjang maksimum yang bisa diatas oleh tipe data ini adalah 2^31 bytes, sekitar 2 GB (gigabytes).
Biasanya tipe data ini digunakan untuk menyimpan file, mulai dari file dokumen sampai dengan file multimedia. SQL Server mempunyai satu lagi tipe data khusus untuk menyimpan file multimedia yaitu tipe data IMAGE yang dapat menyimpan hingga 2.147.483.647 bytes.
Boolean
Nilai kebenaran dalam SQL direpresentasikan oleh tipe data
boolean. Ada tiga macam nilai dalam boolean yaitu: true, false,
dan unknown. SQL Server tidak mempunyai tipe data semacam ini. Untuk menggantikan tipe data ini, umumnya para software
developer mengganti nilai true dengan angka 1, dan false/unknown dengan angka 0. Sehingga bisa menggunakan tipe
data numeric.
Other
Beberapa tipe data lainnya adalah cursor, table, dan xml. Cursor merupakan obyek basis data yang dipakai untuk memanipulasi data dalam basis row-by-row (cursor dibahas lebih detil pada bab lain). Table merupakan obyek basis data untuk menyimpan data dalam bentuk tabular yang umumnya dipakai untuk return value dari table-valued function. Xml digunakan untuk menyimpan dokumen berformat xml.
Variabel
Fungsi utamanya adalah sebagai penyimpan data untuk sementara. Dalam dunia programming, variabel digunakan untuk menyimpan nilai dan sebagai referensi dalam proses.
Deklarasi Variabel
Cara membuat variabel adalah dengan melakukan deklarasi variabel. Setiap bahasa pemrograman mempunyai cara yang berbeda. Dalam SQL cara pembuatan variabel adalah dengan menuliskan kata kunci DECLARE diikuti dengan nama variabel (sebagai identitas) lalu tipe data (sebagai bentuk nilai yang dapat disimpan oleh variabel tersebut). Sebagai pemisah antar variabel, haurs menggunakan koma. Sintak pembuatan variabel dapat dilihat pada kode berikut: DECLARE
Kode 2.3
DECLARE @<nama_variabel> <tipe_data>[, @<nama_variabel> <tipe_data>[, @<nama_variabel> <tipe_data>]]; Dengan melakukan deklarasi seperti pada DECLARE
Kode 2.3, nilai variabel adalah NULL, apapun tipe datanya, sampai variabel tersebut diberi nilai. Penggunaan DECLARE dapat juga diulang untuk setiap variabel. Sehingga DECLARE Kode 2.3 bisa diubah menjadi:
Kode 2.4
DECLARE @<nama_variabel> <tipe_data>; DECLARE @<nama_variabel> <tipe_data>; DECLARE @<nama_variabel> <tipe_data>; Contoh:
Kode 2.5
DECLARE @jumlah NUMERIC (18, 0);
DECLARE @nama VARCHAR (50);
DECLARE @tgl DATETIME;
DECLARE @gambar IMAGE;
1. Variabel @jumlah bertipe data NUMERIK dengan panjang 18 dan tingkat presisi 0.
2. Variabel @nama bertipe data VARCHAR dengan panjang 50. 3. Variabel @tgl bertipe data DATETIME. Tanpa panjang
karena memang tidak diperlukan.
4. Variabel @gambar bertipe data IMAGE. Tanpa panjang karena sudah memiliki standar panjang maksimum.
Variabel yang dideklarasikan sendiri merupakan user-defined
variable. Sebaliknya, variabel yang dibuat oleh sistem dinamakan system variable. Yang perlu diperhatikan disini adalah penulisan
nama variabel yang mempunyai aturan yang berbeda dimasing-masing provider basis data. Untuk SQL Server, menggunakan @<nama_variabel>. Sedangkan untuk system variable menggunakan @@ sebelum nama variabelnya. Lebih lengkap mengenai system variables akan dijelaskan pada sub-bab System Variable.
Memberi Nilai pada Variabel
Ada dua cara dalam memberikan nilai pada variabel, yaitu: 1. SET
2. SELECT
Tidak menutup kemungkinan jika pemberian nilai variabel dilakukan ketika deklarasi, namun penggunaan ini hanya bisa dilakukan dalam prosedur. Sehingga untuk pemakaian dalam
script pada umumnya, pemberian nilai ini harus dilakukan
setelah deklarasi variabel.
Dari contoh pada Kode 2.6, beberapa hal bisa dijelaskan sebagai berikut:
1. Penggunaan kata kunci SET hanya untuk pemberian nilai pada variabel, secara sederhana. Dalam artian, nilai yang diberikan telah diketahui sebelumnya.
2. Kata kunci SELECT hanya digunakan ketika pengisian variabel menggunakan nilai hasil dari query. Dengan
demikian, dalam satu query dapat dilakukan pemberian nilai pada beberapa variabel sekaligus.
3. Berbeda dengan SELECT pada baris ke-8. Untuk mengetahui fungsi SELECT disini, lihat kembali pembahasan pada Bab I. Dapat dikatakan bahwa penggunaan kata kunci SELECT pada baris ini adalah untuk menampilkan data (dari
literal_value).
4. PRINT digunakan untuk mencetak tulisan.
5. Beberapa provider basis data memberikan fitur berupa
variable scope. Dalam fitur ini, variabel dapat menjadi
variabel lokal atau global dalam ruang lingkup script block. Dalam contoh tersebut, variabel @HARGATERTINGGI merupakan variabel lokal dalam sub-script block (baris 15 s.d baris 21). Sedangkan @VAR bisa dipakai di lokasi manapun dalam script tersebut.
Kode 2.6
BEGIN
DECLARE @var VARCHAR(50);
SET @var = 'STIKOM SURABAYA';
DECLARE @jumlahbaris NUMERIC;
SET @jumlahbaris = (SELECT COUNT(*) FROM mahasiswa);
SELECT 'Jumlah baris = ' + CONVERT (VARCHAR, @jumlahbaris);
SET @jumlahbaris = @jumlahbaris + 1;
PRINT 'Data selanjutnya = ' + CONVERT
(VARCHAR, @jumlahbaris);
BEGIN
DECLARE @maxuas NUMERIC;
SELECT @maxuas = MAX(uas) FROM nilai; PRINT 'UAS tertinggi = ' + CONVERT
(VARCHAR, @maxuas);
END;
END; System Variable
Variabel ini menyimpan informasi proses yang sedang berjalan dan obyek-obyeknya. Namun, tidak semua provider basis data
menyebutnya demikian. Misalnya SQL Server sekarang lebih menyebutnya sebagai system function daripada predesesornya. Variabel jenis ini bersifat global, artinya dapat dipanggil kapanpun dan oleh siapapun.
Dalam SQL Server, system variable ditandai dengan @@<nama_variabel>, sedangkan untuk Oracle ditandai dengan %<nama_variabel>. Dan pemakaian variabel ini hanya terjadi pada saat-saat spesifik saja.
Beberapa system variables yang sering dipakai, antara lain: 1. @@ROWCOUNT
Digunakan untuk menghitung jumlah baris yang dikembalikan oleh query.
2. @@IDENTITY
Digunakan untuk mengambil nilai identity dari kolom (field) dengan properti isIdentity = TRUE. Umumnya hal ini dipakai untuk auto increment.
3. @@ERROR
Digunakan untuk mengambil nilai error. Jika tidak terdapat
error, nilainya adalah 0.
4. @@VERSION
Digunakan untuk mengambil versi dari SQL Server beserta tanggal, prosesor, dan arsitektur OS-nya.
Dalam contoh Kode 2.6, ada variabel @JUMLAHBARIS yang digunakan untuk menghitung jumlah baris data yang dikembalikan oleh query. Kode panjang dan kompleks tersebut dapat disederhanakan menggunakan bantuan system variables. Sehingga kode program akan tampak sebagai berikut:
Kode 2.7
SELECT *
FROM mahasiswa;
PRINT 'Jumlah baris = ' + CONVERT (VARCHAR, @@ROWCOUNT);
@@ROWCOUNT menampung jumlah data hasil dari perintah SELECT * FROM mahasiswa. Yang perlu diperhatikan disini
adalah @@ROWCOUNT hanya menampung sintak query satu
statement sebelum pemakaiannya.
Operasi pada Variabel
Secara umum, operasi-operasi ini bisa dilakukan pada variabel, antara lain:
1. Operasi aritmatika.
Operasi ini berupa penambahan, pengurangan, perkalian, dan pembagian. Operator aritmatika dan contoh penggunaannya dapat dilihat pada Bab 1.
2. Operasi konkatenasi.
Operasi ini berupa penggabungan karakter. Untuk menggabungkan karakter, bisa dibaca kembali Bab 1.
3. Operasi logika.
Operasi ini berupa pemakaian variabel untuk kondisi dalam percabangan. Secara query sederhana, materi ini pernah dibahas di Bab 1. Namun untuk percabangan dalam T-SQL akan dibahas pada Bab 3.
Latihan
1. Buat script untuk melakukan masing-masing aritmatika berikut ini:
a. Penjumlahan b. Pengurangan
2. Buat variabel untuk menampung alamat dan kota. Lalu tampilkan kedua nilai variabel tersebut dalam sebuah kalimat.
Contoh:
Alamat: Jl. A. Yani 56 A Kota: Surabaya
PRINT: Jl. A. Yani 56 A Surabaya
3. Buat variabel untuk menampung seluruh field dari tabel mahasiswa.
4. Isi variabel yang dibentuk di no.3 dengan data mahasiswa dengan nim 06390102666. Lalu tampilkan seluruh datanya. Cara menampilkan:
NIM: 06390102666 Nama: Entin
Alamat: Jl. Yos Sudarso 1 Kota: Sidoarjo
Jns_kelamin: Wanita (W) Sts_nikah: Belum Menikah (B)
5. Buat variabel untuk menampung data-data berikut lalu masukkan datanya kedalam tabel karyawan.
NIM: nim Anda
Nama: nama lengkap Anda Alamat: alamat rumah/kos Anda Kota: sesuai alamat
Jns_kelamin: jenis kelamin Anda Sts_nikah: M