Fungsi-fungsi dalam SQL (bukan User Defined Function) lebih dikhususkan pada masing-masing penyedia layanan basis data. Secara umum, fungsi-fungsi dalam SQL Server dapat dibagi menjadi:
1. Aggregation
Mengembalikan nilai tunggal yang merepresentasikan sebuah agregasi dari sejumlah nilai.
Macam: AVG(), MAX(), COUNT(), MIN(), SUM() 2. Conversion
Mengubah nilai dari satu tipe data ke tipe data lain. Selain itu konversi digunakan juga untuk mengaplikasikan karakteristik pada format date, time, dan numeric.
Macam: CAST(), CONVERT() 3. String Manipulation
Digunakan untuk mengubah, mengganti, dan memanipulasi karakter.
Macam: LEN(), SUBSTRING(), UPPER(), LOWER(), LEFT(), RIGHT(), REPLACE()
4. Mathematical
Digunakan untuk operasi matematis, mulai dari algebra, trigonometri, statistik, peramalan, dan bahkan operasi finansial.
Macam: CEILING(), FLOOR(), ROUND(), POWER(), SQRT() 5. Date and Time
Mengubah porsi date dan time, komparasi dan manipulasi nilai-nilai date/time.
Macam: GETDATE(), DATEPART(), DATEADD(), DATEDIFF() Beberapa contoh penggunaan SQL Function dapat dilihat pada Kode 1.26 . CONVERT digunakan untuk mengubah nilai 1000 dari bentuk numeric ke bentuk varchar agar bisa digabungkan dengan kata Rupiah. CEILING, FLOOR, dan ROUND digunakan masing-masing untuk pembulatan keatas, pembulatan kebawah, pembulatan berdasarkan nilai dibelakang koma (sesuai dengan tingkat presisi yg dipakai). GETDATE digunakan untuk mengambil
tanggal sistem. DATEPART digunakan untuk mengambil nilai bagian tertentu dalam tanggal seperti tahun, bulan, hari, jam, menit. DATEADD digunakan untuk menambahkan nilai tertentu pada bagian tertentu dalam tanggal. Sesuai contoh, DATEADD menambahkan nilai 2 pada tahun sekarang, sehingga nilai yang dihasilkan adalah 2016.
Kode 1.26
SELECT CONVERT(VARCHAR, 1000) + ' Rupiah.';
SELECT LEN(nama),
SUBSTRING(nama, 5, 2), UPPER(nama), LOWER(nama), LEFT(nama, 5), RIGHT(nama, 5) FROM mahasiswa;
SELECT CEILING(5.25), FLOOR(5.25),
ROUND(5.25, 0), POWER(5,2), SQRT(25);
SELECT GETDATE(),
DATEPART('yyyy', GETDATE()),
DATEADD('yyyy', 2, GETDATE());
Satu lagi fungsi yang bisa dipakai untuk melakukan conditional
expression (untuk menggantikan peran IF..ELSE dalam
programming), yaitu CASE. Sintak CASE dapat dilihat pada kode berikut:
Kode 1.27
CASE
WHEN <kondisi> THEN <statement> [WHEN <kondisi> THEN <statement>] [WHEN <kondisi> THEN <statement>] ...
ELSE <statement> END
Pada Kode 1.27, kondisi dituliskan dalam kata kunci WHEN dan apa yang dilakukan (jika kondisi bernilai TRUE) dituliskan dalam kata kunci THEN. Jika ada kondisi lain, dituliskan dalam kata kunci ELSE.
Masih banyak fungsi-fungsi lain yang diberikan oleh SQL Server untuk membantu dalam pengolahan data.
Transaction
Mungkin lebih umum jika disebut sebagai DML atau Data
Manipulation Language. Lebih umum lagi jika disebut dalam
bentuk insert, update, delete. Bersama dengan SELECT, transaction secara ilmiah dikenal sebagai CRUD (Create – Read –
Update – Delete).
Sederhananya, transaksi adalah sebuah mekanisme untuk memastikan bahwa data masuk sesuai dengan tempatnya. Tentunya dengan beberapa aturan. Aturan-aturan ini didefinisikan secara khusus melalui constraint, relationship, dan tipe data. Dari aturan ini, sistem yang menentukan apakah transaksi sukses atau tidak (dengan mengembalikan nilai kesalahan).
Penambahan data
Sebelum melakukan penambahan data, perlu diperhatikan hal-hal sebagai berikut:
Kolom mana yang membutuhkan nilai. Kolom mana yang mempunyai constraint.
Kolom mana yang diatur oleh basis data melalui fungsi. Kolom mana yang mempunyai nilai default atau yang
memperbolehkan nilai NULL. Apa tipe data kolom tujuan.
Untuk menambahkan data, diperlukan insert. Sintak insert dapat dilihat pada Kode 1.28.
Kode 1.28
INSERT INTO <tabel>[(<column_list>)] VALUES (<value_list>);
Pada Kode 1.29, <column_list> tidak diberikan dengan asumsi bahwa data dimasukkan kedalam seluruh kolom. Untuk menambahkan data dengan mengabaikan beberapa kolom tabel tujuan, bisa mengikuti contoh pada Kode 1.30.
Kode 1.29
INSERT INTO mahasiswa
VALUES ('08410104003', 'Jenny',
'Jl. Krembangan 50', 'Surabaya',
'W', 'B');
Kode 1.30
INSERT INTO mahasiswa
(nim, nama)
VALUES ('08410104003', 'Jenny');
Bagaimana jika data yang dimasukkan adalah data dari tabel lain? Untuk menjawab pertanyaan ini, SQL Server menggunakan perintah INSERT INTO..SELECT.
Modifikasi data
Modifikasi data diperlukan ketika terjadi perubahan pada data orisinilnya. Untuk memodifikasi data, dibutuhkan perintah
update. Perintah ini dapat memodifikasi satu, banyak, atau
semua baris data dalam sebuah tabel. Jumlah data yang dimodifikasi bergantung pada kondisi (kriteria) yang diberikan dalam query update. Sintak update dapat dilihat pada kode berikut:
Kode 1.31
UPDATE <tabel>
SET <kolom1> = <nilai1> [,<kolom2> = <nilai2>] WHERE <kondisi1>;
Perhatikan contoh berikut:
Kode 1.32
UPDATE mahasiswa
SET sts_nikah = 'M'
WHERE nim = '08410104003';
Kode 1.32 mencoba memodifikasi data mahasiswa. Modifikasi dilakukan untuk mengubah status nikah mahasiswa, dengan nim 08410104003, dari yang awalnya B menjadi M. Jadi bisa dilihat bahwa nilai yang diberikan pada kata kunci SET merupakan nilai baru.
Penghapusan data
Ada kalanya data yang sudah ada tidak diperlukan lagi, sehingga data tersebut harus dihapus dari tabel. Untuk menghapus data, digunakan perintah delete. Perintah ini mempunyai perlakuan yang sama seperti update. Yang perlu diperhatikan disini adalah adanya referential constraint. Dalam arti kata lain, data tidak dapat dihapus ketika data tersebut dipakai sebagai data acuan dalam tabel lain (melalui fitur foreign key). Sintak delete dapat dilihat pada kode berikut:
Kode 1.33
DELETE <tabel> WHERE <kondisi1>;
Contoh sederhananya adalah sebagai berikut:
Kode 1.34
DELETE mahasiswa
WHERE nim = '08410104003';
Kode 1.34 mencoba untuk menghapus data mahasiswa dengan nim 08410104003. Penghapusan bisa sukses jika data mahasiswa tersebut tidak dipakai di tabel Nilai.
Latihan
1. Tampilkan seluruh data mahasiswa.
2. Tampilkan data mahasiswa yang tinggal di kota Surabaya. 3. Tampilkan nama mahasiswa yang mempunyai huruf a atau
huruf A.
4. Tampilkan nama mahasiswa yang huruf kedua terakhir dari namanya mempunyai huruf n.
5. Tampilkan nim, nama dan nilai tugas mahasiswa. 6. Tampilkan 3 karakter terakhir dari nama mahasiswa.
7. Buat email berdasarkan nama mahasiswa dan gabungkan dengan @gmail.com.
8. Hitung jumlah mahasiswa masing-masing dosen. Ambil datanya dari tabel nilai.
9. Tampilkan nama mahasiswa dan nama dosen untuk dosen dengan nid 010306.
10. Tampilkan mahasiswa yang mempunyai dosen yang sama dengan Entin.
11. Tampilkan mahasiswa yang tidak memiliki nilai. 12. Masukkan data mahasiswa berikut ini:
NIM: nim Anda
Nama: nama lengkap Anda Alamat: alamat rumah/kos Anda Kota: sesuai alamat
Jns_kelamin: jenis kelamin Anda Sts_nikah: M
13. Ubah status nikah Anda dari M menjadi B. 14. Hapus data Anda.