Sebuah Pengantar SQL bagi Pemula 1

Oleh: Andri Indrawan

SQL (Structured Query Language) merupakan sebuah bahasa pemograman non-prosedural yang digunakan dalam RDMS (Relation Database Management System).

Untuk apakah kita mempelajarinya ???

Pertama SQL merupakan bahasa de-facto bagi RDMS, termasuk yang populer saat ini seperti Oracle, Access,MySQL, Postgresql, Interbase, Sybase dan sebagainya. Selain itu SQL bersifat Powerfull dan efisien untuk mengakses data, dan yang menjadi lebih penting bahasa yang satu ini sangat mudah untuk dapat dipelajari oleh orang non-IT sekalipun, hal ini wajar karena seperti yang dapat kita buktikan bahwa kedekatannya akan bahasa manusia merupakan kelebihan yang dimiliki oleh SQL.

SQL adalah bahasa yang digunakan untuk membuat, memodifikasi, bahkan sampai menghapus data. SQL awalnya dikembangkan oleh E.F.Codd, dengan nama Structured English Query Langguage (SEQL,baca sequel). Walaupun penelitian tersebut dilakukan oleh orang IBM tidak serta merta mereka mengimplementasikannya. SQL mempunyai standard: ANSI SQL dan bagi setiap RDMS memiliki “dialek” dan extension tersendiri.

SQL merupakan sekumpulan bahasa yang masing-masing didisain untuk keperluan tertentu. Jenisnya antara lain:

  • Data Definition Langguage (DDL), ia digunakan untuk membuat dan memodifikasi objek database. Pernyataan DDL terdiri atas CREATE, ALTER, DROP, RENAME, dan TRUNCATE.
  • Data Manipulation Langguage (DML), ia digunakan untuk mengubah data yang ada didalam database. Pernyataan DML meliputi INSERT, UPDATE, SELECT dan DELETE. Beberapa tambahan untuk DML yang banyak digunakan dalam mengendalikan transaksi data, yaitu COMMIT, ROLLBACK, dan SAVEPOINT.
  • Data Control Langguage (DCL), ia digunakan untuk memberikan hak dalam melakukan pekerjaan yang terkait dengan database dan hak untuk memanipulasi obyek database. Pernyataan yang termasuk dalam golongan antara lain GRANT dan REVOKE.

Untuk tahap awal ini sebaiknya kita membahas SELECT terlebih dahulu, karena yang satu ini merupakan suatu steatment yang sering digunakan. Agar steatment ini dapat kita gunakan maka terlebih dahulu kita membuat sebuah table (asumsi anda sudah memiliki database dan steatment bedialek ORA). Untuk pengolaan database dan table akan dibahas pada sesi selanjutnya secara spesifik lagi.

CREATE TABLE MAHASISWA (

NIM CHAR(9),

NAMA VARCHAR(25),

TMP_LAHIR VARCHAR(25),

TGL_LAHIR DATE,

TINGGI NUMBER(3),

CONSTRAINT PK_MAHASISWA PRIMARY KEY (NIM));

Lalu kita insert-kan beberapa data

INSERT INTO MAHASISWA VALUES (‘000456678’, ‘ANDRI INDRAWAN’, ‘TANGERANG’, TO_DATE(’12-03-1985′,’DD-MM-YYYY’), 165);

Lakukan berulang-ulang hingga beberapa data yang kita inginkan berada pada tabel. Untuk mengecek apakah data tersebut sudah ada dalam tabel dan kita ingin memanipulasinya sedemikian rupa, simak pembahasan dibawah ini.

Select

Merupakan statement SQL yang paling banyak digunakan dalam RDMS dan merupakan ke kategori DML, adapun format umum dari statement ini yaitu SELECT [nama field] FROM [nama tabel] WHERE [kondisi], catatan:

  • Gunakan SELECT *, jika semua field ingin ditampilkan.
  • Jika semua record ingin ditampilkan hilangkan bagian WHERE
  • Contoh: SELECT * FROM MAHASISWA;
  • SELECT nama FROM mahasiswa; (hanya mengambil field nama saja)
  • SELECT nim,nama FROM mahasiswa; (hanya mengambil nim,nama mahasiswa)
  • Gabungan Field
    • Oracle: SELECT nim||nama FROM MAHASISWA;
    • MySQL: SELECT concat(nim,nama) FROM MAHASISWA;
    • Access: SELECT nim+nama FROM MAHASISWA;

Select Distinct & Order By

SELECT DISTINCT TINGGI FROM MAHASISWA; yaitu menampilkan tinggi yang unik / tidak ada duplikasi tinggi

SELECT * FROM MAHASISWA ORDER BY TINGGI; yaitu data permintaan diurutkan berdasarkan tinggi badan

SELECT * FROM MAHASISWA ORDER BY TINGGI ASC, NAMA DESC; yaitu diurutkan berdasarkan tinggi secara ascending (menaik), berikutnya NAMA secara descending (menurun)

WHERE

SELECT nim,nama FROM mahasiswa WHERE nim=’123′;yaitu (hanya mengambil nim,nama mahasiswa dengan kondisi nim-nya adalah ‘123’)?

Operator seleksi yang dapat digunakan:

=, >, <, >=, <=, <>, LIKE, BETWEEN

Operator lojik yang dapat digunakan:

AND, OR, NOT

Contoh:

SELECT * FROM MAHASISWA WHERE TINGGI>=150 AND TINGGI <=160;

Contoh:

SELECT * FROM MAHASISWA WHERE NOT((NIM = ‘123’) OR (NIM = ‘124’));

Untuk kondisi (where), penggunaan fungsi LIKE dalam upaya pengambilan suatu data yang mungkin serupa secara umum berformat

SELECT [nama field] FROM [nama tabel] WHERE [kondisi (nama_field LIKE parameter_isi_field)]

Adapun dalam dialek yang dapat kita ketahui diantaranya:

Oracle, MySQL:

SELECT * FROM MAHASISWA WHERE NAMA LIKE ‘%NDR%’; dimana % artinya: nol, satu atau lebih karater

SELECT * FROM MAHASISWA WHERE NAMA LIKE ?ANDR_’; dimana _ artinya : tepat satu karakter

MS Access:

SELECT * FROM MAHASISWA WHERE NAMA LIKE ?*NDR*’; dimana * artinya : nol, satu atau lebih karater

SELECT * FROM MAHASISWA? WHERE NAMA LIKE ?ANDR?’; dimana ? Artinya : tepat satu karater

Sedangkan untuk kondisi pengambilan data dengan parameter terukur pasti dapat kita gunakan fungsi IN dan BETWEEN

SELECT * FROM MAHASISWA WHERE nim IN (‘123′,’124’); yaitu tampilkan nim 123 dan nim 124

SELECT * FROM MAHASISWA WHERE nim NOT IN (‘123′,’124’); yaitu tampilkan selain nim 123, dan 124

SELECT * FROM MAHASISWA WHERE tinggi BETWEEN 150 AND 160; yaitu tampilkan mahasiswa dengan tinggi antara 150 dan 160

Dalam menggunakan SELECT dan WHERE, terdapat beberapa fungsi khusus yang dapat kita gunakan dalam pengambilan data termanipulasi. Adapun fungsi yang paling umum dan sering digunakan ialah fungsi string dan tanggal.

Fungsi String

UPPER?digunakan untuk mengubah isi field bertipe data char/ varchar jadi huruf besar.

select UPPER(NAMA) from MAHASISWA where UPPER(NAMA) = ‘ANDRI’;

Catatan untuk konstanta string, di dalam ORA penggunaan fungsi ini senantiasa harus menggunakan satu tanda petik ‘ ‘ sedangkan dalam MySQL dapat satu maupun dua tanda petik ” ” dan ”.

select UPPER(NAMA) from MAHASISWA where UPPER(NAMA) = “ANDRI”;

Selain fungsi UPPER masih terdapat fungsi yang lainnya, LOWER, LENGTH, SUBSTR, dan khusus untu ORA ada fungsi INITCAP yaitu fungsi untuk title case (huruf pertama kapital).

Contoh: substr(‘ANDRI INDRAWAN’,2,4) hasilnya adalah ‘NDRI’ (mulai dari karakter dua sebanyak tiga karakter)

Fungsi Tanggal

Secara default fungsi tanggal dalam ORA (TGL_LAHIR dalam type STRING) yaitu

select * from MAHASISWA where TGL_LAHIR = ’30-01-1975′;

Sedangkan dalam dalam MySQL (TGL_LAHIR dalam type STRING) berformat

select * from MAHASISWA where TGL_LAHIR = ‘1975-01-30’;

Dalam ORA, konversi data bertipe data string (char/varchar) ke date (tanggal) menggunakan TO_DATE, begitupun sebaliknya untuk date ke string menggunakan TO_CHAR

select * from MAHASISWA where TGL_LAHIR = TO_DATE(‘1975-01-30′,’YY-MM-DD’);

select TO_CHAR(TGL_LAHIR,’DD-MM-YYYY HH24:MI:SS’) from MAHASISWA;

Dalam MySQL, konversi data string ke date menggunakan STR_TO_DATE

select * from MAHASISWA where TGL_LAHIR = STR_TO_DATE(’30-01-1975′,’%d-%m-%Y’);

Sendangakan untuk tipe data DATETIME dalam MySQL menggunakan DATE_FORMAT

select DATE_FORMAT(TGL_LAHIR, ‘%d-%m-%Y? %H:%m:%s’) from MAHASISWA;

Hasilnya akan berupa : 07-07-2005 19:20:12

Selain hal yang diatas, dibawah ini adalah beberapa point yang penting dalam fungsi tanggal di ORA dan MySQL:

  • Tanggal hari ini:
    • MySQL: CURDATE()
    • ORA: sysdate
  • Mengambil tanggal,bulan atau tahun:
    • contoh: EXTRACT (year from [namafield]);
  • ORA: ADD_MONTHS, LAST_DAY, MONTHS_BETWEEN, NEXT_DAY, ROUND, dst.
  • MySQL: DATE_ADD,DATE_SUB,EXTRACT, dst.

Khusus untuk ORA :

  • Oracle menyimpan tanggal dalam bentuk gabungan tanggal dan waktu (jam menit det) yaitu Tipe DATE

Tanggal menjadi bagian integer, waktu menjadi bagian pecahan.

  • Tanggal dapat digunakan dengan operator =, <, >,<=,>=.
  • Jika tanggal disimpan dalam bentuk tanggal dan waktu.
    • Contoh: 30-12-2005 15:20:20

Maka untuk menghasilkan nilai TRUE pada pencarian, harus juga menggunakan waktu atau menggunakan TRUNC (jika hanya tanggal yang diperlukan)

Contoh:

select * from tamu where trunc(waktu_checkin) = ’30-12-2005′ ;

Perlu diketahui sebelumnya bahwa penggunaan/ penulisan sintaks SQL itu tidak bersifat case sensitive, dimana SELECT itu sama dengan select dalam pengertiannya.

Yah itu lah beberapa keguanaan SELECT, SELECT-WHERE, dan fungsi yang menyertainya, namun perlu diingat bahwa dalam DML masih ada yang lainnya, yaitu INSERT, UPDATE dan DELETE. Apalagi jika kita juga hendak membicarakan DDL dan DCL, pasti akan lebih asyik dan banyak lagi yang perlu kita bahas.

Mungkin dalam tulisan berikutnya saja kita akan coba bahas kembali hal tersebut step-by-step, untuk saat ini sampai disini dulu, silahkan anda mencobanya (TRIAL AND ERROR) di rumah, OK!.

4 Responses

  1. saya merasa puas,,tapi g puas” banget karna belum terlalu detal pembahasanya… tapi bagggggggguuuuuuuuuussss

  2. setelah membaca ini, saya menjadi lebih tahu,tentang sql thanks yao//////

  3. om, mo nanya sbb :

    di tabel :

    payment_date = varchar 8
    physical_Date = varchar 8
    alocation_date = varchar 8

    waktu query dengan fungsi to_date(payment_Date),to_Date(physical_date),to_date(alocation_Date)
    hasilnya keluar tanggal dan waktunya

    dengan
    to_date(payment_Date)-to_Date(physical_date)
    hasilnya 0, 1, 2 dst alias tidak error

    tapi dengan
    (to_date(payment_Date)-to_Date(physical_date))>1
    hasilnya error

    dengan to_date(trunc(payment_date),’YYYYMMDD’)-to_date(trunc(physical_date),’YYYYMMDD’)>1
    hasilnya error

    jadi letak kesalahannya itu dimana yah om?
    tolong infonya yaa… makasih

    • Sudah ketemu belum solusinya… sorry baru ngecek lagi blognya.
      Hmm… sebelumnya mohon maaf udah lama nggak ngoprek database lagi…
      pada umumnya ya hasilnya data yang vharchar menjadi variabel dengan format date diketemukan, cuman perlu diperhatikan juga kayaknya format date yang dimaksud, harus sesuai.

      untuk pencarian coba : to_date(payment_Date,′,’YY-MM-DD’),to_Date(physical_date,′,’YY-MM-DD’),to_date(alocation_Date,′,’YY-MM-DD’)

      dimana ′,’YY-MM-DD’ merupakan format tanggal-bulan-tahun nya.

      jika menggunakan trunc :
      cukup dengan where trunc(payment_Date)

      coba nanti kita liat lagi bersama bagaimana sebenarnya aturan syntaksisnya beserta konversi datanya.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: