tugas 5

20 December 2012 18:24:16 Dibaca : 254

Syntax Relasi Dalam SQL

1. “INNER JOIN”

INNER JOIN adalah tipe join yang akan kita bahas pertama. Tipe join ini akan mengambil semua row dari table asal dan table tujuan dengan kondisi nilai key yang terkait saja - jika ada, dan jika tidak maka row tersebut tidak akan muncul.

Kalau tidak terdapat kondisi key terkait antar table, maka semua row dari kedua table dikombinasikan.

Syntax dari INNER JOIN adalah sebagai berikut :

table_reference [INNER] JOIN table_factor [join_condition]

Terlihat bahwa keyword INNER boleh digunakan secara eksplisit atau tidak. Jika tidak digunakan maka konstruksi JOIN tanpa keyword lain dianggap sebagai INNER JOIN.

INNER JOIN Antar Table dengan Kondisi ("ms_cabang" dan "ms_kota" dengan key "kode_kota")

SELECT * FROM ms_cabang INNER JOIN ms_kota ON ms_cabang.kode_kota = ms_kota.kode_kota

Hasil terlihat seperti gambar berikut ini. Disini table sumber adalah ms_cabang (left) mencari referensi row lain dari table ms_kota (right) dengan kondisi nilai kode_kota diantara kedua table tersebut sama. Kondisi ini menggunakan keyword ON.

Dengan panduan gambar, kita lihat bahwa tiap row dari ms_cabang akan dicari padanan row-nya di ms_kota :

untuk row pertama kita memiliki kode_kota dengan nilai "KOTA-003", ini akan dicari referensinya ke table ms_kota untuk nilai yang sama dan kita dapatkan row dengan nilai nama_kota "Lhokseumawe" adalah padanannya.untuk row kedua kita memiliki kode_kota dengan nilai "KOTA-083", ini akan dicari referensinya ke table ms_kota untuk nilai yang sama dan kita dapatkan row dengan nilai nama_kota "Bau-bau" adalah padanannya.demikian seterusnya.

INNER JOIN Antar Table Tanpa Kondisi ("ms_cabang" dengan "ms_kota")

SELECT * FROM ms_cabang INNER JOIN ms_kota

Hasilnya adalah untuk tiap row dari ms_cabang akan dikombinasikan dengan semua row dari ms_kota - contoh hasilnya terlihat seperti pada gambar di bawah ini.

INNER JOIN antar table "ms_cabang", "ms_kota" dan "ms_propinsi"

SELECT ms_cabang.nama_cabang,

ms_kota.nama_kota,

ms_propinsi.nama_propinsi

FROM ms_cabang

INNER JOIN ms_kota ON ms_cabang.kode_kota = ms_kota.kode_kota

INNER JOIN ms_propinsi ON ms_kota.kode_propinsi = ms_propinsi.kode_propinsi

Hasil eksekusi terlihat seperti gambar berikut. Dengan penggabungan ketiga table ini sekarang kita dapatkan setiap cabang memiliki informasi nama kota dan nama propinsi dimana cabang tersebut berada.

Implisit INNER JOIN dengan Koma

INNER JOIN antar table secara implisit dapat menggunakan daftar table yang dipisah dengan tanda koma (,). Pengkondisian menggunakan klausa where.

SELECT ms_cabang.nama_cabang,

ms_kota.nama_kota ,

ms_propinsi.nama_propinsi

FROM ms_cabang

, ms_kota

, ms_propinsi

WHERE

ms_cabang.kode_kota = ms_kota.kode_kota

AND

ms_kota.kode_propinsi = ms_propinsi.kode_propinsi

INNER JOIN

Syntax:

SELECT column_list

FROM table_reference

[INNER] JOIN table_reference ON predicate

[[INNER] JOIN table_reference ON predicate...]

Fungsinya sama dengan operator Equi-Join hanya saja kolom untuk setiap tabel dibandingkan dalam klausa ON untuk nilai-nilai yang sama. Contoh pernyataan pertama dan kedua dalam operator Equi-Join, jika dideklarasikan dengan operator INNER JOIN menjadi :

SELECT *

FROM Customer C

INNER JOIN Orders O ON (C.CustNo = O.CustNo)

SELECT *

FROM Source S

INNER JOIN Joining J ON (S.ID = J.ID1 || J.ID2)

Untuk database Ms Access, pernyataan INNER JOIN harus menyertakan tanda kurung jika menggabungkan lebih dari dua tabel, seperti berikut ini

SELECT *

FROM (Customer C

INNER JOIN Orders O ON (C.CustNo = O.CustNo))

INNER JOIN AddCusPrice A ON (C.CustNo = A.CustNo)

 

2. “CROSS JOIN”

CROSS JOIN identik dengan INNER JOIN pada MySQL 5.0. Pembahasannya sama dengan INNER JOIN sehingga tidak diulangi lagi disini.

Contoh Penggunaan :

SELECT ms_cabang.nama_cabang,ms_kota.nama_kota,ms_propinsi.nama_propinsiFROM

ms_cabangCROSS JOIN

ms_kota ON ms_cabang.kode_kota = ms_kota.kode_kotaCROSS JOIN

ms_propinsi ON ms_kota.kode_propinsi = ms_propinsi.kode_propinsi

 

3. “OUTER JOIN”

OUTER JOIN merupakan tipe join yang mencari referensi data dari suatu table sumber ke table lain dengan tidak menghilangkan data sumber apabila referensi tidak diketemukan.

Untuk menggunakan tipe OUTER JOIN maka perlu memperhatikan beberapa hal berikut :

perlu dibedakan antara table sumber dan table referensi, ini ditentukan dengan cara menspesifikasikan kedudukan table sumber apakah di kiri (LEFT) atau di kanan (RIGHT).jika tidak ada data dari table referensi yang cocok dengan kondisi join maka hanya data dari table sumber yang ditampilkan tetapi kolom-kolom table referensi akan berisi null.

Contoh Penggunaan :

Hapus data master "Lhokseumawe" dari table ms_kota

DELETE FROM ms_kota WHERE nama_kota = 'Lhokseumawe'

Lakukan join seperti perintah berikut ini, dan perhatikan hasilnya seperti pada gambar.

SELECT ms_cabang.*,ms_kota.nama_kotaFROM ms_cabangLEFT OUTER JOIN ms_kotaON ms_cabang.kode_kota = ms_kota.kode_kota

Tambahkan kembali data "Lhokseumawe" ke table ms_kota

INSERT INTO ms_kota(kode_kota, nama_kota, kode_propinsi)VALUES ('KOTA-003', 'Lhokseumawe', 'P33');

Sekarang coba ganti syntax pada query di atas dari "LEFT" menjadi "RIGHT" dan lihat hasil eksekusinya. Tentunya dari hasil tersebut Anda sudah dapat mengambil kesimpulan perbedaan dari kedua konstruksi tersebut.

OUTER JOIN

Syntax:

SELECT column_list

FROM table_reference

LEFT | RIGHT | FULL [OUTER] JOIN table_reference ON predicate

[LEFT | RIGHT | FULL [OUTER] JOIN table_reference ON predicate...]

Fungsinya sama dengan operator Equi-Join dan INNER JOIN yaitu menggabungkan dua macam tabel. Perbedaannya, pada operator OUTER JOIN, record dari tabel sumber yang tidak cocok dengan tabel anggota akan dimunculkan dalam hasil. Kolom tabel anggota untuk record dalam tabel sumber yang tidak cocok mempunyai nilai kosong (bukan nol). Pernyataan berikut ini menggabungkan tabel Customer dan Orders berdasarkan nilai-nilai dalam kolom CustNo. Untuk record tabel Customer yang tidak mempunyai kecocokan nilai di antara Customer.CustNo dan Orders.CustNo, kolom dari tabel Orders berisi nilai kosong (bukan nol).

SELECT *

FROM Customer C

LEFT OUTER JOIN Orders O ON (C.CustNo = O.CustNo)

Peubah LEFT menyebabkan semua record tabel pada sisi kiri operator OUTER JOIN dimasukkan dalam hasil, dengan atau tanpa kecocokan dalam tabel sebelah kanan. Jika tidak ada kecocokan record dari tabel sebelah kanan, maka kolom tersebut berisi nilai kosong. Gunakan peubah RIGHT jika menginginkan kondisi sebaliknya. Dan peubah FULL menyebabkan semua record dari seluruh tabel yang ditetapkan dalam klausa FROM dimasukkan dalam hasil, dengan atau tanpa kecocokan nilai. Tabel juga dapat digabung dengan mengunakan ekpresi yang menghasilkan suatu nilai tunggal sebagai predikat perbandingan. Di sini, kolom ID1 dan ID2 dari tabel Joining dibandingan secara terpisah dengan dua nilai yang dihasilkan oleh fungsi SUBSTRING dengan menggunakan kolom tunggal ID tabel Source.

SELECT *

FROM Source S

RIGHT OUTER JOIN Joining J ON (SUBSTRING(S.ID FROM 1 FOR 2) = J.ID1)

AND (SUBSTRING(S.ID FROM 3 FOR 1) = J.ID2)

 

4. “STRAIGHT_JOIN”

STRAIGHT_JOIN merupakan pengganti keyword JOIN pada MySQL yang digunakan untuk "memaksa" proses join table dari kiri (LEFT) ke kanan (RIGHT).

Contoh Penggunaan :

SELECT ms_cabang.*,

ms_kota.nama_kota

FROM ms_cabang

STRAIGHT_JOIN ms_kota

ON ms_cabang.kode_kota = ms_kota.kode_kota

 

5. “EQUI-JOIN”

Syntax:

SELECT column_list

FROM table_reference, table_reference [, table_reference...]

WHERE predicate [AND predicate...]

Operator Equi-Join digunakan untuk menggabungkan dua tabel, suatu tabel sumber dan anggota, yang mempunyai nilai dari satu kolom atau lebih. Untuk record tabel sumber yang sesuai dengan tabel anggota, akan dimasukkan dalam hasil. Jika tidak ada kecocokan, data tersebut tidak dimunculkan dalam hasil. Contoh pernyataan berikut ini menggabungkan tabel Customer dan Orders berdasarkan nilai-nilai dalam kolom CustNo, dimana keduanya mempunyai kolom tersebut.

SELECT *

FROM Customer C, Orders O

WHERE (C.CustNo = O.CustNo)

Tabel juga dapat digabungkan dengan menggunakan hasil penggabungan beberapa nilai kolom. Di sini, kolom ID1 dan ID2 dari tabel Joining digabungkan dan dibandingkan dengan nilai-nilai kolom tunggal ID tabel Source.

SELECT *

FROM Source S, Joining J

WHERE (S.ID = J.ID1 || J.ID2)

 

6. “ CARTESIAN”

Syntax:

SELECT *

FROM table_reference, table_reference [,table_reference...]

Menggabungkan kolom dua buah tabel dalam satu hasil, tetapi tidak ada korelasi di antara record tabel. Operator Cartesian Join mencocokkan setiap record tabel sumber dengan setiap record tabel anggota. Jika tabel sumber mempunyai 10 record dan tabel anggota juga mempunyai 10 record maka hasilnya berisi 100 record.

SELECT *

FROM "Employee.dbf", "Items.db"

 

7. “UNION”

Syntax:

SELECT col_1 [, col_2, ... col_n]

FROM table_reference

UNION [ALL]

SELECT col_1 [, col_2, ... col_n]

FROM table_reference

Menyusun record satu tabel pada akhir tabel yang lain. Pernyataan SELECT untuk tabel sumber dan anggota harus berisi kolom dengan jumlah yang sama.

SELECT

CustNo,

Company

FROM Customers

UNION

SELECT

CustNo,

Company

FROM Old_Customers

Jika ada perbedaan tipe data kolom tertentu di antara dua tabel, suatu pesan kesalahan akan terjadi jika kolom yang sama dari tabel kedua (atau selanjutnya) kehilangan data. Sebagai contoh, kolom tabel pertama bertipe Date dan kolom tabel kedua bertipe TimeStamp, sebagian nilai bertipe TimeStamp akan hilang jika memasukkan kolom bertipe Date. Pesan kesalahan akan dibangkitkan untuk situasi ini. Gunakan fungsi CAST untuk mengubah tipe kolom tersebut.

SELECT

S.ID,

CAST(S.Date_Field AS TIMESTAMP)

FROM Source S

UNION ALL

SELECT

J.ID,

J.Timestamp_Field

FROM Joiner J

Secara default, operator UNION akan mengumpulkan record non-distinct dalam record tunggal. Gunakan ALL untuk mempertahankan record non-distinct. Untuk menggabungkan dua buah tabel dimana satu tabel tidak mempunyai suatu kolom tabel lain, gunakan suatu ekpresi atau literal yang sesuai. Sebagai contoh, tabel Joining tidak mempunyai kolom yang sesuai dengan kolom Name dari tabel Source, buat ekpresi untuk menampung nilai kolom bayangan Joining.Name. Kolom Source.Name diasumsikan bertipe CHAR(10).

SELECT

S.ID,

S.Name

FROM Source S

UNION ALL

SELECT

J.ID,

CAST("" AS CHAR(10))

FROM Joiner J

 

8. “HETEROGENEOUS”

Syntax:

SELECT column_list

FROM ":database_reference:table_reference", ":database_reference:table_reference"

[,":database_reference:table_reference"...]

WHERE predicate [AND predicate...]

Menggabungkan dua buah tabel dari database yang berbeda. Tabel yang digabung dapat bertipe dBASE ke Paradox atau Paradox ke InterBase, selama dapat diakses oleh BDE (local, ODBC, or SQL Links).

SELECT *

FROM ":DBDEMOS:Customer.db" C, ":BCDEMOS:Orders.db" O

WHERE (C.CustNo = O.CustNo)

Sumber :

http://mysql.phi-integration.com/sql/tipe-tipe-join-pada-mysql-5

http://www.havetogether.com/relasi-tabel-dalam-pernyataan-sql.html

Tugas Kelompok

13 December 2012 20:12:30 Dibaca : 145

Tugas 4

08 November 2012 17:31:03 Dibaca : 126

“ NORMALISASI DATABASE RELASI “

Ketika kita merancang suatu basis data untuk suatu sistem relational, prioritas utama dalam mengembangkan model data logical adalah dengan merancang suatu representasi data yang tepat bagi relationship dan constrainnya (batasannya). Kita harus mengidentifikasi suatu set relasi yang cocok, demi mencapai tujuan di atas. Tehnik yang dapat kita gunakan untuk membantu mengidetifikasi relasi-relasi tersebut dianamakan Normalisasi.

Proses normalisasi pertama kali diperkenalkan oleh E.F.Codd pada tahun 1972. normalisasi sering dilakukan sebagai suatu uji coba pada suatu relasi secara berkelanjutan untuk menentukan apakah relasi tersebut sudah baik atau masih melanggar aturan-aturan standar yang diperlakukan pada suatu relasi yang normal (sudah dapat dilakukan proses insert, update, delete, dan modify pada satu atau beberapa atribut tanpa mempengaruhi integritas data dalam relasi tersebut).

Proses normalisasi merupakan metode yang formal/standar dalam mengidentifikasi dasar relasi bagi primary keynya (atau candidate key dalam kasus BCNF), dan dependensi fungsional diantara atribut-atribut dari relasi tersebut. Normalisasi akan membantu perancang basis data dengan menyediakan suatu uji coba yang berurut yang dapat diimplementasikan pada hubungnan individualshingga skema relasi dapat di normalisasi ke dalam bentuk yang lebih spesifik untuk menghindari terjadinya error atau inkonsistansi data, bila dilakuan update tehadap relasi tersebut dengan Anomaly.

·         BEBERAPA DEFINISI NORMALISASI

Normalisasi adalah suatu proses memperbaiki / membangun dengan model data relasional, dan secara umum lebih tepat dikoneksikan dengan model data logika

Normalisasi adalah proses pengelompokan data ke dalam bentuk tabel atau relasi atau file untuk menyatakan entitas dan hubungan mereka sehingga terwujud satu bentuk database yang mudah untuk dimodifikasi.

Normalisasi dapat berguna dalam menjawab 2 pertanyaan mendasar yaitu: “apa yang dimaksud dengan desain database logical?” dan “apa yang dimaksud dengan desain database fisikal yang baik? What is phisical good logical database design?”.

Normalisasi adalah suatu proses untuk mengidentifikasi “tabel” kelompok atribut yang memiliki ketergantungan yang sangat tinggi antara satu atribut dengan atrubut lainnya.

Normalisasi bisa disebut jga sebagai proses pengelompokan atribut-atribut dari suatu relasi sehingga membentuk WELL STRUCTURED RELATION.

WELL STRUCTURED RELATIONadalah sebuah relasi yang jumlah kerangkapan datanya sedikit (Minimum Amount Of Redundancy), serta memberikan kemungkinan bagi used untuk melakukan INSERT, DELETE, MODIFY, terhadap baris-baris data pada relasi tersebut, yang tidak berakibat terjadinya ERROR atau INKONSISTENSI DATA, yang disebabkan oleh operasi-operasi tersebut.

Contoh:

Terdapat sebuah relasi Mahasiswa, dengan ketentuan sebagai berikut.

  • Setiap Mahasiswa hanya boleh mengambil satu mata kuliah saja.
  • Setiap matakuliah mempunyai uang kuliah yang standar (tidak tergantung pada mahasiswa yang mengambil matakuliah tersebut).

(berhubung pada blog ini tidak dapat ditampilkan tabel yang telah saya unduh dari internet, maka disini saya hanya mengilustrasikan tabel tersebut lewat kata-kata saja)

Misalnya, terdapat 3 kolom yang masing-masingnya terdiri atas kolom NIM, kolom KODE-MTK, dan kolom BIAYA. Pada kolom pertama atau pada kolom NIM kita bisa menuliskan NIM dari si mahasiswa (mis: 921411026), kemudian pada kolom kedua atau pada kolom KODE-MTK kita bisa menuliskan kode mata kuliah yang diambil si mahasiswa (mis: CS-200), dan selanjutnya pada kolom terakhir atau pada kolom BIAYA kita bisa menuliskan jumlah biaya yang harus dibayarkan untuk setiap kode matakuliah tersebut (mis: 75.000)

       Relasi Kuliah di atas merupakan sebuah relasi yang sederhana dan terdiri dari 3 kolom / atribut. Bila diteliti secara seksama, maka akan ditemukan redundancy pada datanya, dimana biaya kuliah selalu berulang pada setiap mahasiswa. Akibatnya besar kemungkinan terjadi error atau inkonsistensi data, bila dilakukan update terhadap relasi tersebut dengan Anomaly.

       Anomaly merupakan penyimpangan-penyimpangan atau error atau inkonsistensi data yang terjadi pada saat dilakukan proses delete, insert ataupun modify dalam suatu basis data. 

 

Dikutip dari :

http://bajay-x.blogspot.com/2010/05/normalisasi-database.html

Tugas 3

05 October 2012 12:14:38 Dibaca : 180

1.    DDL atau Data Definition Language

 

DDL ( Data Definition Language ) adalah sebuah perintah SQL yang berhubungan dengan pendefinisian suatu database dan tabel. Beberapa perintah dasar yang termasuk dalam DDL antara lain :

 

1. CREATE

 

Fungsi : Command CREATE ini berfungsi untuk membuat sebuah database ataupun membuat sebuah table yang berada di dalam database.

 

Syntax : CREATE database nama_database;

 

Parameter   : -

 

Contoh : CREATE database apotik;

 

Penjelasan : perintah CREATE diatas akan membuat sebuah database dengan nama apotik.

 

2. SHOW

 

Fungsi : Command SHOW ini berfungsi untuk menampilkan database ataupun table yang telah kita buat sebelumnya.

 

Syntax : SHOW databases;

 

Parameter : -

 

Contoh : SHOW databases;

 

Penjelasan : perintah SHOW diatas akan memperlihatkan semua database yang ada.

 

3. USE

 

Fungsi : Command  USE ini berfungsi untuk membuka/mengaktifkan/memasuki database yang telah kita buat. Setelah kita masuk kedalam database yang telah kita buat, barulah kita bisa memanipulasi data yang ada, termasuk untuk membuat table didalam database tersebut.

 

Syntax : USE nama_database;

 

Parameter : -

 

Contoh : USE apotik;

 

Penjelasan : perintah diatas akan mengaktifkan database dengan nama apotik sehingga kita dapat memanipulasi data yang ada.

 

 

 

4. ALTER

 

Fungsi : Command ALTER ini berfungsi untuk mengubah struktur dari suatu table. Mengubah disini tidak hanya memperbaharui struktur table yang ada, tetapi juga mengubah nama field, menambahkan primary key, mengubah tipe field, maupun menghapus field yang telah dibuat sebelumnya.

 

Syntax : ALTER TABLE nama_tabel parameter_option;

 

Parameter : add, modify, drop

 

Contoh : ALTER TABLE obat ADD harga int (6);

 

Penjelasan : perintah diatas akan menambahkan field harga kedalam tabel obat.

 

5. DROP

 

Fungsi: Command DROP ini berfungsi untuk menghapus, baik database, table, maupun field yang telah diinputkan ke dalam table.

 

Syntax : DROP TABLE nama_tabel;

 

Parameter : -

 

Contoh : DROP TABLE supplier;

 

Penjelasan : perintah diatas akan menghapus tabel supplier pada database apotik.

 

http://joelians.wordpress.com/2010/06/04/5-command-ddl-data-definition-language/

 

 

 

 

 

2.    DML atau Data Manipulation Language

 

Data Manipulation Language (DML) digunakan dalam memanipulasi dan pengambilan data pada database.

 

Manipulasi data, dapat mencakup:

 

Pemanggilan data yang tersimpan dalam database (query).

 

Penyisipan/penambahan data baru ke database.

 

Penghapusan data dari database.

 

Pengubahan data pada database.

 

Beberapa perintah dasar yang termasuk dalam DDL antara lain :

 

1. SELECT

 

Fungsi : Command SELECT ini berfungsi untuk menampilkan sesuatu. Menampilkan disini tidak hanya menampilkan data dari sebuah table saja, tetapi juga untuk menampilkan suatu ekspresi. Seperti menampilkan hanya field yang memiliki kategori Suplement saja.

 

Syntax : SELECT * FROM nama_tabel;

 

Parameter : from, order by, where, dll

 

Contoh : SELECT * FROM obat;

 

Penjelasan : perintah diatas akan menampilkan semua isi pada tabel obat.

 

2. DESC

 

Fungsi : Command DESC ini berfungsi untuk menampilkan struktur tabel yang telah dibuat. Apa saja field yang telah dibuat, type data dari field tersebut, dan primary key akan terlihat disini.

 

Syntax  : DESC nama_table;

 

Parameter : -

 

Contoh : DESC obat;

 

Penjelasan : perintah diatas akan memperlihatkan stuktur dari tabel obat yang telah dibuat.

 

3. INSERT INTO

 

Fungsi : Command INSERT INTO ini berfungsi untuk menambahkan data/record dalam suatu tabel yang telah dibuat.

 

Syntax : INSERT INTO nama_tabel VALUES (‘isi_field1’ , ‘isi_field2’,……);

 

Parameter : values, set

 

Contoh : INSERT INTO obat VALUES (’CO012’,’Corsel’,’Suplement’,’13’,’183500’);

 

Penjelasan : perintah diatas akan membuat sebuah record baru dalam tabel obat dengan id_obat = CO012, nama_obat = Corsel, kategori = Suplement, jumlah = 13, dan harga = 183500.

 

4. UPDATE

 

Fungsi : Command UPDATE ini berfungsi untuk merubah/memperbaharui data yang telah ada di dalam tebel.

 

Syntax : UPDATE nama_tabel SET nama_field = ’nilai_baru’ WHERE nama_field = ’kondisi’ ;

 

Parameter : set, where

 

Contoh : UPDATE obat SET id_obat = ‘CE008’ WHERE nama_obat = ‘Cetoros’;

 

Penjelasan : perintah diatas akan mengubah id_obat BD019 menjadi CE008 pada tabel obat yang memiliki nama_obat Cetoros.

 

5. DELETE FROM

 

Fungsi  : Command DELETE FROM ini berfungsi untuk menghapus record yang ada pada sebuah tabel.

 

Syntax : DELETE FROM nama_tabel WHERE nama_field =’option’;

 

Parameter : where

 

Contoh : DELETE FROM obat WHERE id_obat =’CO012’;

 

Penjelasan : perintah diatas akan menghapus record dari tabel obat yang memiliki id_obat CO012.

 

6. EXPLAIN

 

Fungsi : Command EXPLAIN ini memiliki fungsi yang sama seperti Desc yaitu berfungsi untuk menampilkan struktur tabel yang telah dibuat, seperti nama_field, type data dari field tersebut, dan primary key.

 

Syntax : EXPLAIN nama_table;

 

Parameter : -

 

Contoh : EXPLAIN obat;

 

Penjelasan : perintah diatas akan memperlihatkan stuktur dari tabel obat yang telah dibuat.

 

7. SELECT DESCENDING

 

Fungsi : Command SELECT DESCENDING ini berfungsi menampilkan semua data dari bawah ke atas berdasarkan field yang telah ditentukan.

 

Syntax : SELECT field1, field2, dan seterusnya FROM nama_tabel ORDER BY field yang jadi acuan DESC;

 

Parameter : from, order by, desc

 

Contoh : SELECT id_obat, nama_obat, jumlah FROM BY obat ORDER BY id_obat DESC;

 

Penjelasan : Perintah diatas akan menampilkan data pada id_obat, nama_obat dan jumlah pada tabel obat dan yang menjadi acuan pengurutan data dari bawah ke atas adalah id_obat.

 

8. SELECT COUNT

 

Fungsi : Command SELECT COUNT ini berfungsi menampilkan jumlah record yang ada dalam suatu tabel.

 

Syntax : SELECT COUNT(*)FROM nama_tabel;

 

Parameter : count, from

 

Contoh : SELECT COUNT(*)FROM obat;

 

Penjelasan : Perintah diatas menampilkan jumlah record yang ada pada tabel obat.

 

9. SELECT MAX

 

Fungsi : Command SELECT MAX ini berfungsi untuk mencari nilai tertinggi pada sebuah field di tabel.

 

Syntax : SELECT MAX(nama_field) FROM nama_tabel;

 

Parameter : max, from

 

Contoh : SELECT MAX(jumlah) FROM obat;

 

Penjelasan : Perintah diatas akan menampilkan nilai tertinggi dari field jumlah pada tabel obat.

 

10. SELECT MIN

 

Fungsi : Command SELECT MIN ini berfungsi untuk mencari nilai terendah pada sebuah field di tabel.

 

Syntax : SELECT MIN(nama_field) FROM nama_tabel;

 

Parameter : min, from

 

Contoh : SELECT MIN(jumlah) FROM obat;

 

Penjelasan : Perintah diatas akan menampilkan nilai terendah dari field jumlah pada tabel obat.

 

 

 

http://joelians.wordpress.com/2010/06/04/command-dml-data-manipulation-language/

 

 

 

3.   DCL atau Data Control Language

 


DCL merupakan perintah SQL yang berhubungan dengan pengaturan hak akses user MySQL, baik terhadap server, database, tabel maupun field. Perintah SQL yang termasuk dalam DCL antara lain :

1. GRANT : Perintah ini digunakan untuk memberikan hak / izin akses oleh administrator (pemilik utama) server kepada user (pengguna biasa). Hak akses tersebut berupa hak membuat (CREATE), mengambil (SELECT), menghapsu (DELETE), mengubah (UPDATE) dan hak khusus berkenaan dengan sistem databasenya.

SINTAKS : GRANT privileges ON tbname TO user

CONTOH : grant select, update, insert, delete on perpustakaan.buku to 'ali'@'localhost';


2. REVOKE : perintah ini memiliki kegunaan terbalik dengan GRAND, yaitu untuk menghilangkan atau mencabut hak akses yang telah diberikan kepada user oleh administrator.

SINTAKS : REVOKE privileges ON tbname FROM user

CONTOH : revoke select, update, insert, delete.

 


JENIS JENIS JOIN SQL :

 


1. INNER JOIN : hanya akan menampilkan baris untuk data yang memiliki nilai yang sama pada field kunci dengan tabel yang berelasi

 



2. LEFT JOIN : hanya menampilkan data dengan mengacu pada tabel yang ada disebelah kiri.

 



3. RIGHT JOIN : hanya menampilkan data dengan mengacu pada tabel yang ada disebelah kanan.

 

 

 

http://butuhbelajar.blogspot.com/2010/11/dcl-dan-join-pada-sql.html

 

 

 

4.   DQL atau Data Query Language

 

Sama seperti SQL, DQL tidak lah rumit. Operasi dasar nya mirip dengan SQL yang select, update, insert, dan delete.

 

Berikuti ini contoh Query dalam SQL untuk select sederhana :

 

data_user = "SELECT * FROM  user";

 

artinya untuk mengambil semua field data pada table user. Dalam Query Doctrine kita bisa menuliskan seperti berikut ini,

 

this->data_user = Doctrine::getTable('User')->findAll();

 

Perhatikan susunan penulisannya. Ada getTable dan element yang mau dicari adalah semua, findAll. Perubahan mendasar dalam penulisan script SQL adalah menggunakan method dengan penamaan yang lebih “manusiawi”. Kalau di SQL biasa dengan tanda “*“, kalau di Doctrine menggunakan method findAll(). Kalau di SQL memanggil nama table nya (misal. user), kalau di Doctrine memanggil nama Model nya (misal. User). Dalam Doctrine (symfony), penulisan nama Model selalu di awali huruf besar, jadi agak sedikit berbeda dengan nama table di database nya.

 

Percobaan selanjutnya kita akan menggunakan Query select sederhana untuk mengambil data dengan Primary Key tertentu. Misal Table user memiliki primary key pada field id, dan kita akan menampilkan data yang id nya ’1′. maka SQL nya adalah seperti berikut ini,

 

$data_user = "SELECT * FROM user WHERE (id = '1')";

 

Maka dalam Query Doctrine kita dapat menuliskan seperti ini,

 

$this->data_user = Doctrine::getTable('User')->find(1);

 

Method find() dalam Doctrine digunakan untuk menemukan record berdasarkan primary key nya. Dalam kasus ini, kita tidak perlu memberi tahu Doctrine “siapa yang menjadi primary key“. Pokok nya kalau kita gunakan method find(), maka pasti akan mencari untuk primary key nya saja, yaitu field id.

 

Dan ini yang lebih menarik lagi. Yaitu jika kita ingin mencari data dengan syarat field tertentu. Misal, saya ingin mencari record yang field ‘name’ pada table tersebut berisi ‘sule’. Dalam SQL kita biasa menuliskan seperti ini,

 

$data_user = "SELECT * FROM user u WHERE (u.name = 'sule')";

 

pada contoh diatas kita menggunakan alias ‘u‘ untuk table user, dan kemudian menambahkan syarat bahwa field name harus terisi oleh ‘sule‘. Dalam Doctrine, penulisannya semakin mudah.

 

$this->data_user = Doctrine::getTable('User')->findByName('sule');

 

Gunakan method findBy… yg penulisannya ditambahkan dengan nama field yang akan kita cari. Dalam contoh diatas field yang akan dicari ada lah field ‘name‘, maka method yang digunakan findByName(). Perhatikan penulisan huruf besar kecil, sebagai penanda kata.

 

Tingkatan lebih lanjut, kita akan mencoba melakukan Query untuk beragam syarat. Seperti yang telah Anda ketahui, syarat dalam Query dapat kita gunakanan dengan menambahkan “WHERE“. 

 

Berikut ini contoh pengunaan syarat yang lumayan kompleks,

 

$this->data_user = Doctrine_Query::create()

 

                  ->from('User u')

 

                  ->where('u.name = "sule" ')

 

                  ->execute();

 

atau bisa dengan cara ini,

 

$this->data_user = Doctrine_Core::getTable('User')

 

                  ->createQuery('u')

 

                  ->where('u.name = "sule" ')

 

                  ->execute();

 

atau dengan cara ini juga bisa,

 

$this->data_user = Doctrine::getTable('User')

 

                  ->createQuery('u')

 

          ->where('u.name = "sule" ')

 

                  ->execute();

 

Ketiga cara diatas adalah sama, akan menghasilkan Query seperti ini,

 

$data_user = "SELECT * FROM user u WHERE (u.name = "sule")";

 

Jadi jangan bingung dengan penggunaan syntax Doctrine, karena akan ada banyak cara menggunakannya, tergantung kebutuhan.

 

 

 

http://blog.politekniktelkom.ac.id/tfn/2011/12/16/belajar-doctrine-query-language/

 

 

 

Tugas 2

21 September 2012 19:50:54 Dibaca : 173

Tipe Data pada DBMS :

1. MySQL

A. TIPE DATA INTEGER
Tipe data memiliki sub tipe, dimana masing masing sub tipe tersebut memilikk jangkauan nilai yang berbeda dan ukuran yang berbeda pula. Selain integer juga memiliki tipe data floating point dan double precision numbers. M
asing-masing integer bisa memiliki tanda (SIGNED) yaitu positif atau negatif serta tidak memiliki tanda (UNSIGNED) dan bisa me nggunakan atribut AUTO_INCREMENT untuk menaikan nilai data secara otomatis ketika terjadi penambahan record.

TINYINT
Ukuran tipe data yang sangat kecil
, cocok untuk menyimpan data usia, jumlah anak, nilai. Sebenarnya, kita harus menggunakan tipe data ini untuk usia karyawan dan jumlah anak. jangkauan angka yangdapat diterima adalah antara 0 sampai 255 jika menggunakan klausa unsigned (tak bertanda), atau lain kisaran antara -128 sampai 127 jika menggunakan klausa signed
(bertanda)
.

SMALLINT
cocok untuk data dengan angka antara 0 to 65535 (UNSIGNED) atau antara -32768 dampai 32767 (SIGNED)
.

MEDIUMINT
Cocok untuk menampung data angkat antara 0 to 16.777.215 dengan klausa UNSIGNED atau antara -8.388.608 sampai 8.388.607 dengan klausa SIGNED
.

INT
Cocok untuk menampung data antara 0 sampai 4.294.967.295 dengan atribut UNSIGNED atau antara -2147683648 sampai dengan 2147683647 dengan atribut SIGNED.

BIGINT
Huge numbers. (-9223372036854775808 to 9223372036854775807)
.

FLOAT
nilai desimal dengan tingkat akurasi 1 digit dibelakang koma
.

DOUBLE
nilai desimal dengan tingkat akurasi 2 digit dibelakang koma
.

DECIMAL
nilai desimal dengan beberapa digit dibelakang koma sessuai dengan apa yang telah ditetapkan.

B. TIPE DATA TEKS

Panjang text dapat tetap atau bervariasi juga bisa bersifat case sensitif atau tidak tergantung yang anda tentukan. tipe-tipe data text terdiri dari :

CHAR(x)
dimana x bernilai antara 1 sampai 244 tetapi panjang data tetap

VARCHAR(x)
dimana x bernilai antara 1 sampai 244 tetapi panjang data bersifat variabel

TINYTEXT
menampung data text yang sedikit, bersifat case insensitive
.

TEXT
menampung data text lebih banyak yaitu sebanyak 65535 character bersifat case insensitif
.

MEDIUMTEXT
medium size text, case insensitive mampu menampung sebanyak 16.777.215 karakter
.

LONGTEXT
really long text, case insensitive mampu menampung sebanyak 4.294.967.295 karakter
.

TINYBLOB
Blob kepanjangan dari Binary Large OBject. berifat case sensitif biasanya untuk menyimpan file-file digital seperti photo/video dalam ukuran kecil.

BLOB
Berifat case sensitif biasanya untuk menyimpan file-file digital seperti photo/video dalam ukuran besa
r.

MEDIUMBLOB
Berifat case sensitif biasanya untuk menyimpan file-file digital seperti photo/video dalam ukuran sedang
.

LONGBLOB
Berifat case sensitif biasanya untuk menyimpan file-file digital seperti photo/video dalam ukuran sangat besa
r.

ENUM
Enum merupakan kependekan dari enumerasi merupakan tipe data yang telah ditentukan isinya dan bersifat pilihan misal untuk field jenis kelamin isinya ditentukan L atau P sehingga apabila user mengisi selain L atau P maka tidak akan disimpan kedalam tabel
.

 

C. TIPE DATA DATE/TIME
Tipe Data dan atau Time memiliki beberapa sub tipe yaitu :

DATE
Untuk menampung data tanggal misal tanggal lahir, tanggal daftar, dll dengan format standar yaitu YYYY-MM-DD (4 digit tahun 2 digit bulan dan 2 digit tanggal) batas jangkauannya anatara tangal 1000-01-01
sampai tanggal 9999-12-31.

 

TIME
Untuk menyimpan data waktu / jam dengan format hh:mm:ss (Jam:Menit:detik), misal menyimpan jam masuk kerja, jam istirahat atau jam pulang atau juga jam terjadinya kegiatan transaksi.


DATETIME
Date time merupakan tipe data gabungan antara tanggal dan jam dengan format YYYY-MM-DD hh:mm:ss (Tangga
l dan waktu dipisahkan oleh spasi).

 
TIMESTAMP
Tipe data time stamp hamir sama dengan date time namun tidak memilki tanda pemisah sama sekali diantaranya dengan format : YYYYMMDD
hhmmss jangkauan data timestamp yaitu dari 1970-01-01 00:00:00 sampai 2037-12-31 23:59:59.


YEAR
Tipe data ini untuk menyimpan data tahun dengan format YYYY (4 digit tahun) jangakaun data antara tahun 1970 sampai tahun 2069, cocok untuk menyimpan tahun masuk sekolah, tahun lahir dan lain-lain.

 

2. ORACLE

VARCHAR2(size)

String yang memiliki panjang karakter vaiable dengan panjang maxial sebesar size. Tipe data ini memperbolehkan penyimpanan semua karakter yang dapat dimasukkan melalui keyboad. Maksimum size yang dapat disimpan sebesar 4000 bytes (karakter). Tipe data ini juga memungkinkan untuk mneyimpan data numerik. Biasanya space akan langsung dieliminasi jika menggunakan tipe ini.

 

CHAR (size)

String dengan panjan gkarakter tetap sebesar ukuran size. Tipe data ini mempunyai kemampuan yang hampir sama yakni menyimpan karakter, hanya saja maksimum size yang disimpan hanya sebesar 2000 bytes.

 

NUMBER (p,s)

Tipe data number memiliki presisi p dan s digit dibelakan koma jika kita abaikan p dan s berarti dianggap sebagai tipe number floating point. Tipe data ini menyimpan bilangan interger sampai maksimum dari digit integer tersebut. misal untuk spesifikasi (5,2) berarti 3 digit sebelum koma dan 2 digit dibelakang koma.

 

LONG

Data karakter dengan ukuran panjang bervariasi, hingga mencapai 2 GB.(tipe data seperti ini tidak dapat digunakan sebagai primary key).

 

LONG RAW

Tipe data berupa binary data dengan ukuran maksimal 2 GigaBytes tidak dikonversi oleh oracle (data mentah apa adanya, spasi dihitung 1 karakter).

 

3. POSTGRESQL

 

NUMERIK

Jenis numerik dapat menyimpan nomor dengan sampai 1000 digit resisi dan melakukan perhitungan dengan tepat. hal ini terutama dianjurkan untuk menyimpan sejumlah uang dan jumlah lain dimana ketepatan diperlukan. namun, aritmatika pada nilai-nilai numerik yang sangat lambat dibandingkan dengan tipe integer, atau ke tipe floating-point yang dijelaskan dibagian selanjutnya.

 

KARAKTER

SQL mendefinisikan 2 jenis karakter utama : karakter yang bervariasi (n) dan karakter (n), dimana n adalah bilangan bulat pisitif. kedua jenis dapat menyimpan string hingga karakter n (tidak bytes) panjangnya.

 

BINER

Sebuah string biner adalah urutan oktet (atau byte). string biner dibedakan dari string karakter dalam dua cara : pertama, string biner khususnya memungkinkan oktet menyimpan nilai 0 dan lainnya  "non printable" octets (biasanya, oktet luar kisaran 32-126). kedua, operasi pada string biner memproses byte yang sebenarnya, sedangkan pengelolahan string karakter tergantung pada pengaturan lokal.

 

WAKTU (Date/Time)

Tanggal dan waktu input diterima di hampir semua format yang wajar,termasuk ISO 8601, SQL-kompatibel, POSTGRES tradisional, dll.

 

BOOLEAN TYPE

POSTGRESQL menyediakan boolean SQL tipe standar, boolean dapat memiliki salah satu dari hanya 2 negara : "true" atau "palsu" sebuah negara ke tiga, "tidak diketahui", diwakili oleh nilai null SQL.

 

4. DB2

 

DB2 Everyplace 

Versi ini merupakan versi DB2 yang terkecil, berukuran hanya sekitar 350kb, versi ini dibuat untuk para pengguna handheld seperti PDA, SMARTPHONE.

 

DB2 Express

Versi ini merupakan entry level data server yang didesign untuk komputer yang memiliki hingga 2 CPU dan memory hingga 4GB dan memiliki sistem operasi linux, solaris atau windows.

 

DB2 Express-C

Versi ini merupakan entry level data server yang didesign untuk komputer yang memiliki 2 CPU dan memiliki 4GB dan memiliki sistem operasi linux atau windows. versi ini dapat digunakan untuk tujuan evaluasi dan dapat digunakan secara gratis.

 

DB2 Personal Edition

merupakan DBMS Untuk Single User yang ideal untuk desktop ataupun laptop. dapat digunakan untuk create, modifikasi, dan mengatur banyak data base lokal.

 

WORKGROUP Server Edition

Versi ini merupakan DBMS untuk multi User, client/server yang didesign untuk komputer yang memiliki hingga 4 CPU dan memory hingga 16GB dan memiliki sistem operasi linux, windows, solaris, linux, AIX dll. memiliki fitur yang sama dengan DB2 Express namun dengan skala yang lebih besar.