PostgreSQL Query List All Tables & Get Total Record / Row

Jika kalian mempunyai suatu database PostgreSQL dengan banyak tabel di dalam schema databasenya, dan ingin mengetahui berapa total record / row dari masing-masing tabel tersebut, cukup pakai query postgre yang sangat simple namun sarat makna 😀 dibawah :

List All Tables

Continue reading

Advertisements

Solution for MySQL (XAMPP) Can’t Start in OS X Yosemite

Beberapa hari yang lalu saya baru saja upgrade OS X dari Mavericks menjadi Yosemite (10.10), namun barusan saja saya mengoperasikan MySQL server di Mac saya yang sudah pakai baju barunya :D. Saya memakai XAMPP versi 1.8.3-1 yang sudah terpasang sejak lama, sejak masih pakai OS X Mountain Lion. Sampai akhirnya saya upgrade dari Mavericks ke Yosemite, tetap pakai XAMPP versi 1.8.3-1, namun di XAMPP yang versi 1.8.3-1 mengalami masalah yaitu tidak bisa start service MySQL. Saya sudah coba beberapa kali start lagi dan lagi service MySQL nya dari Application Manager kepunyaan XAMPP, tapi tetap tidak menunjukkan hasil yang baik, atau masih tetap tidak bisa run service MySQL-nya.

Setelah browsing solusi paling banyak adalah upgrade versi XAMPP ke yang terbaru, tapi saya tidak berkeinginan untuk upgrade XAMPP. Karena pasti harus download lagi, tau sendiri lah kapasitas file installer XAMPP kan besar, jadi males banget buat download lagi :P. Tapi akhirnya ketemu juga solusi yang simple dan sangat mudah diterapkan untuk mengatasi masalah tidak bisa start/run service MySQL XAMPP 1.8.3-1 di Yosemite ini, adalah dengan cara berikut : Continue reading

Contoh Function Di Oracle Menghitung Jumlah Huruf Konsonan Dan Vokal Dari Inputan

Soal ini didapat dari Praktikum Basis Data Lanjut mengenai pembahasan Function dan Procedure di Database Oracle. Okey, berikut ini merupakan sintaks function untuk menghitung karakter selain angka serta membedakan mana yang termasuk huruf vokal dan konsonan berdasarkan inputan user :

CREATE OR REPLACE FUNCTION VOKAL_KONSONAN (KATA IN VARCHAR2)
RETURN VARCHAR2 IS HASIL VARCHAR2(255);
KONSONAN NUMBER;
VOKAL NUMBER;
BEGIN
	IF LENGTH(TRIM(TRANSLATE(KATA, '+-.0123456789', ' '))) IS NULL THEN
		HASIL := 'Teks yang kamu masukkan mengandung karakter angka';
	ELSE
		KONSONAN := LENGTH(REPLACE(TRANSLATE(KATA, 'aAeEiIoOuU', ' '), ' ', NULL));
		VOKAL := LENGTH(REPLACE(KATA, ' ', NULL)) - KONSONAN;
	END IF;
	RETURN HASIL;
END;
/

Untuk menjalankan atau mencoba sintaks diatas setelah dieksekusi dan berhasil membuat function, bisa memakai sintaks atau query berikut ini :

SELECT VOKAL_KONSONAN('Rendra Kurniawan') FROM DUAL;

Semoga bermanfaat 🙂

Praktikum Basis Data (Oracle) – Part 3

Ini merupakan lanjutan dari postingan sebelumnya yaitu Praktikum Basis Data Oracle Part 2. Mohon maaf kepada teman-teman jika upload-nya telat, maklum karena banyak kegiatan di luar :). Oke langsung saja, berikut ini yang bisa aku sharing untuk Part 3 :

  1. Insert record baru dalam jumlah banyak menggunakan 1 query
  2. Merubah date format pada saat eksekusi query
  3. Melihat constraint yang ada pada suatu tabel
  4. Menampilkan seluruh tabel yang ada pada schema tertentu
  5. Menampilkan semua user dan schema yang ada
  6. Menggabungkan data antara 2 tabel menggunakan “Merge” dilengkapi berbagai kondisi (When Matched, Delete When Not Matched, dll)

Pertama (Insert Banyak Record Dengan 1 Query)

Maksudnya adalah jika ingin memasukkan data ke dalam suatu tabel lebih dari 1 record menggunakan 1 query yang bisa dieksekusi dalam 1 waktu. Berikut ini adalah source code nya :

INSERT ALL
INTO MATKUL_04900 VALUES (7, 1, ‘Alpro’, 3, ‘Dosen’)
INTO MATKUL_04900 VALUES (8, 1, ‘English’, 3, ‘Dosen’)
INTO MATKUL_04900 VALUES (9, 1, ‘Agama’, 3, ‘Dosen’)
INTO MATKUL_04900 VALUES (10, 1, ‘PBO’, 3, ‘Dosen’)
INTO MATKUL_04900 VALUES (11, 1, ‘KP’, 3, ‘Ibu Dosen’)
INTO MATKUL_04900 VALUES (12, 1, ‘KKN’, 3, ‘Dosen’)
SELECT * FROM DUAL;

Kedua (Merubah Date Format Query)

Penjelasan singkat dari judul kedua ini adalah, jika pada waktu eksekusi sebuah query entah itu untuk insert record atau select query, jika salah satu field merupakan parameter yang dibutuhkan untuk suatu kondisi, pastinya format tanggal perlu diatur sesuai value parameter yang diinginkan. Misalkan begini, di dalam record mempunyai value seperti “10/31/2012” namun kita ingin merubah formatnya menjadi “31/10/2012” tanpa harus merubah value (semoga bisa paham yang sebenarnya aku maksudkan, :mrgreen:), berikut ini adalah source-nya (Contoh untuk insert record) :

-- Inilah poin pentingnya --
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD';
-- Poin penting --

INSERT ALL
INTO TAB_MOD3_02 VALUES ('1001','Rendra','1990/01/23','P','Surabaya','SMPN 2 Mojosari',100)
INTO TAB_MOD3_02 VALUES ('1002','Kurniawan','1990/02/23','P','Mojokerto','SMPN 2 Mojosari',100)
INTO TAB_MOD3_02 VALUES ('1003','Rain','1990/03/23','P','Sidoarjo','SMPN 2 Mojosari',100)
SELECT * FROM DUAL;

Ketiga (Menampilkan Constraint)

Berikut ini adalah contoh query untuk menampilkan constraint yang ada pada tabel :

SELECT CONSTRAINT_NAME, R_CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME FROM USER_CONSTRAINTS ORDER BY CONSTRAINT_TYPE ASC;

Keempat (Menampilkan Seluruh Tabel Pada Schema)

SELECT TABLE_NAME, COLUMN_NAME FROM USER_TAB_COLUMNS ORDER BY TABLE_NAME ASC;

Kelima (Menampilkan User & Schema)

Berikut adalah contoh query untuk menampilkan daftar user dan schema yang ada pada Oracle :

SELECT SYS_CONTEXT('userenv','db_name') AS NAMA_DB, SYS_CONTEXT('userenv','session_user') AS NAMA_SCHEMA FROM DUAL;

Keenam (Merge Data)

Dibawah ini merupakan contoh query untuk menggabungkan data dari beberapa tabel menggunakan fungsi Merge.

MERGE INTO TAB_MOD3_02 b USING(
SELECT nopes, nmsis, ttl, jk, almtsis,
asalsek, bindo, bing, mat, ipa, poin
FROM TAB_MOD3_01
WHERE nopes = '1001') a ON (b.nopes = a.nopes)
WHEN MATCHED THEN UPDATE SET b.danem = ((a.bindo + a.bing + a.mat + a.ipa + a.poin)/5)
DELETE WHERE (a.nmsis = '') WHEN NOT MATCHED THEN
INSERT (b.nopes, b.nmsis, b.ttl, b.jk, b.almtsis, b.asalsek, b.danem)
VALUES (a.nopes, a.nmsis, a.ttl, a.jk, a.almtsis, a.asalsek,
((a.bindo + a.bing + a.mat + a.ipa + a.poin)/5))
WHERE (a.nopes <> '');

Yap, sekian untuk Part 3 ini, semoga bisa bermanfaat… sampai ketemu di Part 4 selanjutnya 🙂

Praktikum Basis Data (Oracle) – Part 2

Well well,,, kali ini aku mau share lanjutan dari post sebelumnya yaitu Praktikum Basis Data Oracle Part 1 dimana sebelumnya membahas mengenai pembuatan user, tablespace dan syart-syarat awal yang diperlukan untuk memulai pembahasan/pembelajaran pada umumnya mengenai Oracle Database.

Di Part 2 ini aku ingin share mengenai beberapa hal, diantaranya adalah :

  1. Membuat sebuah tabel dilengkapi dengan constraint
  2. Mengubah nama tabel (rename table)
  3. Merubah nama field/kolom dari sebuah tabel
  4. Menghapus tabel
  5. Menambahkan index, menambah constraint pada tabel
  6. Membuat tabel dengan meng-copy / berdasarkan struktur dari tabel lain
  7. Melihat constraint yang ada pada suatu tabel

Yah,,, lumayan poin yang akan dibahas kali ini, semoga bisa bermanfaat bagi semua 🙂

Pertama (Membuat Tabel Dilengkapi Constraint)

Berikut ini contoh untuk membuat suatu tabel dengan nama TaMod2 dengan 5 field/kolom, lihat script query berikut :

CREATE TABLE TaMod2 (
kode_user INT,
nama_user VARCHAR(30) NOT_NULL,
telepon VARCHAR(12),
email VARCHAR(25),
alamat VARCHAR(100),
CONSTRAINT pk_user PRIMARY KEY(kode_user));

Kedua (Merubah Nama Tabel)

Misalkan dari tabel diatas, kita akan merubah namanya dari TaMod2 menjadi TabMod2, maka bisa menggunakan query seperti berikut ini :

RENAME TaMod2 TO TabMod2;

Ketiga (Merubah Nama Kolom & Merubah Tipe Data Field/Kolom)

-- Query untuk merubah nama field / kolom
-- Contohnya untuk merubah kolom nama_user menjadi nama_pengguna
ALTER TABLE TabMod2 RENAME COLUMN nama_user TO nama_pengguna;

-- Query untuk merubah tipe data dari field tertentu pada tabel
-- Contoh berikut adalah merubah tipe data dari field kode_user
-- yang mana awalnya bertipe data INT, dirubah menjadi VARCHAR
ALTER TABLE TabMod2 MODIFY (kode_user VARCHAR(10));

Keempat (Menghapus Tabel)

Untuk menghapus tabel di Oracle, ada 2 metode yang perlu diketahui, yaitu dihapus secara biasa tapi masih tersisa di Recycle Bin-nya Oracle, atau benar-benar dihapus tanpa bekas. Berikut ini adalah query yang bisa kalian pakai, pertama adalah menghapus secara biasa dan query yang kedua untuk benar-benar menghapus tabel tanpa sisa di BIN (Recycle Bin Oracle).

DROP TABLE TabMod2;

Dengan query diatas (Drop), kita masih bisa mengembalikan atau meng-undo agar tabel bisa kembali lagi, gag jadi terhapus, bisa pakai query ini :

FLASHBACK TABLE TabMod2 TO BEFORE DROP;

Dan berikut ini query untuk melihat isi RECYCLE BIN-nya Oracle, jika ada tabel yang dihapus dengan query DROP pasti masuk disini.

SELECT * FROM RECYCLEBIN;

Dan ini adalah query untuk menghapus Tabel tanpa masuk di RECYCLE BIN, hampir sama dengan fungsi Shift+Del, querynya adalah :

PURGE TABLE TabMod2;
-- Contoh untuk menghapus tabel di RECYCLE BIN
PURGE TABLE "BIN$KIkRl/BNTzmEdg9BW4Z3Pg==$0";
-- Dan beberapa pengetahuan lain yang hampir sama dengan PURGE ALL
PURGE RECYCLEBIN;
PURGE DBA_RECYCLEBIN;
PURGE USER_RECYCLEBIN;

Kelima (Menambahkan Index / Constraint di Suatu Tabel)

CREATE INDEX FK_EMAIL ON TabMod2 (email ASC);

ALTER TABLE TabMod2
	ADD CONSTRAINT FK_EMAIL FOREIGN KEY (KD_EMAIL)
		REFERENCES TB_EMAIL (ID_EMAIL);

Keenam (Membuat Tabel Dengan Copy Struktur Tabel Lain)

Sebelumnya, misalkan kita buat tabel baru dengan nama Tab_Nama_01 dengan query berikut ini :

CREATE TABLE Tab_Nama_01 (
nomor_peserta varchar(12) PRIMARY KEY NOT NULL,
CONSTRAINT nopes CHECK(LENGTH(nomor_peserta)=12),
nama_siswa varchar(50) NOT NULL,
t_lahir varchar(20) NOT NULL, ttl DATE NOT NULL,
gender char(1) NOT NULL, nama_ayah varchar(50) NOT NULL,
nama_ibu varchar(50) NOT NULL,
nama_wali varchar(50) NOT NULL,
telepon varchar(15) NOT NULL,
almt_sis varchar(150) NOT NULL, kota varchar(50) NOT NULL,
kab varchar(50) NOT NULL, n_b_indo NUMBER NOT NULL,
n_b_ingg NUMBER NOT NULL, n_mat NUMBER NOT NULL,
n_ipa NUMBER NOT NULL, asal_sek varchar(70) NOT NULL,
tahun NUMBER(4) NOT NULL,
CONSTRAINT th CHECK(LENGTH(tahun)=4));

Kemudian, kita akan membuat tabel baru dengan nama Tab_Nama_02 dengan beberapa field yang meniru struktur dari tabel pertama yaitu Tab_Nama_01, berikut ini contoh querynya :

CREATE TABLE Tab_Nama_02 AS SELECT
a.*,
((a.n_b_indo + a.n_b_ingg + a.n_mat + a.n_ipa)/4) danem,
TO_DATE(a.TTL, 'MONTH') bulan,
TO_DATE(a.TTL, 'DD') tanggal,
TO_DATE(a.TTL, 'YYYY') tahun_lahir,
SUBSTR(nama_siswa,1, INSTR(nama_siswa,',')-1) nama_depan,
SUBSTR(nama_siswa,(INSTR(nama_siswa,',')+1),LENGTH(nama_siswa)) nama_belakang
FROM TAB_NAMA_01 a;

Ketujuh (Melihat Constraint Dari Tabel)

Beriku ini adalah contoh query untuk melihat atau menampilkan constarint apa aja pada table yang udah pernah kita buat sebelumnya. Ada beberapa cara :

-- 1
SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'Tab_Nama_02';
-- 2
SELECT * FROM ALL_CONSTRAINTS WHERE TABLE_NAME = 'Tab_Nama_02';
-- 3
SELECT CONSTRAINT_NAME, COLUMN_NAME FROM USER_CONS_COLOM WHERE TABLE_NAME = 'Tab_Nama_01';

Yap… akhirnya sampai ujung juga. Capek juga ya, haha.. oke deh semoga bermanfaat bagi teman-teman. Sampai jumpa lagi ya di PART 3.