tugas 5

03 January 2013 21:38:00 Dibaca : 230

Entitas Relation pada Organisasi Forum Studi Ekonomi Islam (FoSEI)Oleh Kelompok :

1.Sandi Wahyudi

2.Inang Badu

1. ENTITAS

a. MPO

b. Ketua

c. Sekretaris

d. Bendahara

e. Bidang

f. Anggota

g. Program Kerja

2. RELASI

a. Berkordinasi

b. Mengawasi

c. Memperkerjakan

d. Bekerja

3. ATRIBUT

a. MPO : NIP,Nama,alamat,jabatan

b. Ketua : NIM,Nama,Alamat,Jabatan,

c. Sekretaris : NIM,Nama,Alamat,Jabatan,Arsip

d. Bendahara : NIM,Nama,Alamat,Jabatan,Pelaporan

e. Bidang : Nama Bidang, id Bidang

f. Anggota : NIM,Nama,Alamat,Jabatan,Anggota Bidang, Program Kerja

g. Program Kerja : No. PROKER, Nama PROKER, Waktu Pelaksanaan, Biaya PROKER

4. PEMETAAN KARDINALITY

tugas 6

20 December 2012 16:20:10 Dibaca : 131

SYNTAX UNTUK MERELASIKAN TABEL MYSQL

DEFINISI JOIN

Join adalah penggabungan table yang dilakukan melalui kolom / key tertentu yang memiliki nilai terkait untuk mendapatkan satu set data dengan informasi lengkap. Lengkap disini artinya kolom data didapatkan dari kolom-kolom hasil join antar table tersebut.

Join diperlukan karena perancangan table pada sistem transaksional kebanyakan di-normalisasi, salah satu alasannya untuk menghindari redundansi.

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 : ?

1 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.

Secara pengerjaan relasi hampir sama dengan klusa WHERE ?

WHERE table1.referensiID = table2.referensiID

2. CROSS JOIN

Operasi cross join akan menampilkan semua isi tabel sisi sebelah kiri akan memiliki pasangan semua data sisi sebelah kanan. Banyaknya record cross join = jumlah record tabel pertama X jumlah record tabel kedua.

CROSS JOIN identik dengan INNER JOIN pada MySQL 5.0. Pembahasannya sama dengan INNER JOIN, dan karena klausa ini jarang dipakai maka tidak diulangi lagi disini.

SQL CROSS JOIN syntax:

SELECT * FROM [TABLE 1] CROSS JOIN [TABLE 2] OR SELECT * FROM [TABLE 1], [TABLE 2]

3. 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

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...]

.

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.

LEFT JOIN

Operasi left join akan menampilkan semua isi tabel sisi kiri, walaupun data di pasangan joinnya yang disisi kanan nilainya tidak sama ataupun berisi null.

RIGHT JOIN

Operasi right join akan menampilkan semua isi tabel sisi kanan, walaupun data di pasangan joinnya yang di sisi kiri nilainya tidak sama ataupun berisi null.

STRAIGHT_JOIN

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

4. FULL JOIN

Operasi full join akan menampilkan semua isi tabel sisi kiri, walaupun data di pasangan joinnya yang disisi kanan nilainya null dan sebaliknya.

SYNTAX :

SELECT table1.column1, table2.column2...

FROM table1

FULL JOIN table2

ON table1.common_filed = table2.common_field;

Contoh script Full join

select d.area_id, d.nama_area, d.luas_area, p.penduduk_id, p.nama_pendudukfrom cpenduduk p full join carea d on p.area_id = d.area_id

Sumber Berita: www.muhammadcahya.com

http://www.muhammadcahya.com/post-12-pengertian-join-pada-sql.html#ixzz2Evi4kuWG

tugas 4

09 November 2012 09:21:03 Dibaca : 143

Normalisasi merupakan teknik untuk mengelompokkan atribut dari suatu relasi sehingga membentuk struktur relasi yang baik(tanpa adanya redudansi). Normalisasi dalam suatu database biasanya hanya mencapai N3(Normalisasi Ketiga), dibawah ini merupakan urutan Normalisasi :

1. N1(Normalisasi Pertama) Mempunyai aturan
-  Mendefinisikan primary key
- Tidak ada grup yang berulang
- Semua non-primary key bergantung pada primary key

2. N2(Normalisasi Kedua) Mempunyai aturan
- Memenuhi aturan N1
- Tidak ada ketergantungan parsial
3. N3(Normalisasi Ketiga) Mempunyai aturan
- Memenuhi aturan N2
- Tidak ada ketergantungan transitif

Sebagai tambahan normal dalam suatu database sejatinya mencapai bentuk normal tertinggi dan bergerak dari bentuk normal 1 dan seterusnya untuk setiap kali membatasi hanya satu jenis redudansi. Jumlah normalisasi seluruhnya ada 5(Lima) dimana 3 bentuk normal pertama menekankan redudansi yang muncul dari Function Dependencies sedangkan N4 dan N5 menekankan redudansi yang muncul dari kasus Multi Valued Dependencies.

Berikut adalah cara singkat melakukan normalisasi
1. Normalisasi Pertama a.k.a N1, Hilangkan duplikasi dengan mencari ketergantungan parsial
2. Normalisasi Kedua a.k.a N2, Field-field yang tergantung pada satu field harus dipisah dengan tepat
3. Normalisasi Ketiga a.k.a N3, Cari hubungan transitif(transitive relation) dimana field non key tergantung pada field non key lainnya

Tabel yang sudah mencapai N3 sudah siap untuk diimplementasikan dalam sebuah proyek, sebenarnya masih ada bentuk normalisasi yang lain yaitu Normalisasi  Boyce-Codd dan N4. Jadi sebelum membuat suatu project normalisasikanlah database anda.

Pengertian Normalisasi pada Database Management System

 

<td style="width: 75pt; padding: 5pt 0in 0in;" width=%2

   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 11:05:10 Dibaca : 532

1 .DDL (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.

a. 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.

b. 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.

c. 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.

d. 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.

e. 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;

 

 2.  DML (DATA MANIPULATION LANGUAGE)

 

10 Command DML ( Data Manipulation Language )

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

Manipulasi data, dapat mencakup:

   1. Pemanggilan data yang tersimpan dalam database (query)

   2. Penyisipan/penambahan data baru ke database

   3. Penghapusan data dari database.

   4. Pengubahan data pada database.

Beberapa perintah dasar yang termasuk dalam DDL antara lain.

a. 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

b. 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.

c. 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.

d. 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.

f. 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.

 g. 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.

  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.

h. 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.

 i. 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.

 j. 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.

 

3.DQL (Data Query Language)

Berikuti ini saya akan berikan 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 bintang asterik “*“, 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.

·         Perhatikan susunan penulisannya, karena kita akan sering menemui hal-hal seperti itu nantinya..

 

4.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.

 

   

tugas 2

21 September 2012 15:24:03 Dibaca : 607

1.MySQL

1. Numeric Data Types:

MySQL menggunakan semua standar ANSI SQL tipe data numerik, jadi jika Anda datang ke MySQL dari sistem database yang berbeda, definisi tersebut akan tampak akrab bagi Anda. Daftar berikut menunjukkan jenis umum numerik data dan deskripsi mereka.

    * INT - Sebuah bilangan bulat berukuran normal yang dapat ditandatangani atau unsigned. Jika ditandatangani, rentang yang diijinkan adalah dari -2147483648 sampai 2147483647. Jika unsigned, rentang yang diijinkan adalah 0-4294967295. Anda dapat menentukan lebar sampai dengan 11 digit.
   

    *TINYINT - Sebuah bilangan bulat yang sangat kecil yang dapat ditandatangani atau unsigned. Jika ditandatangani, rentang yang diijinkan adalah dari -128 sampai 127. Jika unsigned, rentang yang diijinkan adalah dari 0 sampai 255. Anda dapat menentukan lebar sampai dengan 4 digit.
   

    * SMALLINT - Sebuah bilangan bulat kecil yang dapat ditandatangani atau unsigned. Jika ditandatangani, rentang yang diijinkan adalah dari -32.768 ke 32767. Jika unsigned, rentang yang diijinkan adalah dari 0 sampai 65535. Anda dapat menentukan lebar sampai dengan 5 digit.


    * MEDIUMINT - Sebuah bilangan bulat berukuran sedang yang dapat ditandatangani atau unsigned. Jika ditandatangani, rentang yang diijinkan adalah dari -8388608 ke 8.388.607. Jika unsigned, rentang yang diijinkan adalah 0-16777215. Anda dapat menentukan lebar sampai dengan 9 digit.


    * BIGINT - Sebuah bilangan bulat besar yang dapat ditandatangani atau unsigned. Jika ditandatangani, rentang yang diijinkan adalah dari -9223372036854775808 sampai 9223372036854775807. Jika unsigned, rentang yang diijinkan adalah 0-18446744073709551615. Anda dapat menentukan lebar sampai dengan 11 digit.
   

   *Float (M, D) - Sebuah angka floating-point yang tidak dapat unsigned. Anda dapat menentukan panjang display (M) dan jumlah desimal (D). Hal ini tidak diperlukan dan akan default ke 10,2, di mana 2 adalah jumlah desimal dan 10 adalah jumlah total digit (termasuk desimal). Presisi desimal dapat pergi ke 24 tempat untuk sebuah Float.


    * DOUBLE (M, D) - Sebuah presisi angka floating-point ganda yang tidak dapat unsigned. Anda dapat menentukan panjang display (M) dan jumlah desimal (D). Hal ini tidak diperlukan dan akan default ke 16,4, di mana 4 adalah jumlah desimal. Presisi desimal dapat pergi ke 53 tempat untuk sebuah DOUBLE. REAL adalah sinonim untuk DOUBLE.


    * DECIMAL (M, D) - Sebuah angka floating-point membongkar yang tidak dapat unsigned. Dalam desimal membongkar, desimal masing-masing sesuai dengan satu byte. Mendefinisikan panjang display (M) dan jumlah desimal (D) diperlukan. NUMERIC adalah sinonim untuk DECIMAL.

Tanggal dan Waktu Jenis:

2. MySQL tanggal dan waktu datatypes

    * TANGGAL - Sebuah tanggal di YYYY-MM-DD, antara 1000/01/01 dan 9999-12-31. Sebagai contoh, 30 Desember 1973 akan disimpan sebagai 1973/12/30.


    *  DATETIME - Kombinasi tanggal dan waktu di YYYY-MM-DD HH: MM: SS format, antara 1000/01/01 00:00:00 dan 9999-12-31 23:59:59. Misalnya, pukul 3.30 sore pada 30 Desember 1973 akan disimpan sebagai 1973/12/30 15:30:00.
    *

      TIMESTAMP - Sebuah timestamp antara tengah malam, 1 Januari 1970 dan sekitar tahun 2037. Ini terlihat seperti format DateTime sebelumnya, hanya tanpa tanda hubung antara angka; 3.30 sore pada 30 Desember 1973 akan disimpan sebagai 19731230153000 (YYYYMMDDHHMMSS).


    * WAKTU - Menyimpan waktu di HH: MM: SS Format.


    *   TAHUN (M) - Menyimpan tahun dalam format 2-digit atau 4 digit. Jika panjang ditentukan sebagai 2 (untuk TAHUN misalnya (2)), dapat TAHUN 1970-2069 (70 69). Jika panjang ditentukan sebagai 4, TAHUN dapat 1.901-2.155. Panjang default adalah 4.

3. String Tipe

Meskipun tipe numerik dan tanggal yang menyenangkan, sebagian besar data Anda akan menyimpan akan dalam format string. Daftar ini menggambarkan tipe data string yang umum di MySQL.

    *CHAR (M) - Sebuah string tetap-panjang antara 1 dan 255 karakter (misalnya CHAR (5)), kanan diisi dengan spasi dengan panjang tertentu bila disimpan. Mendefinisikan panjang tidak diperlukan, tetapi defaultnya adalah 1.


    *VARCHAR (M) - Sebuah string variabel-panjang antara 1 dan 255 karakter, misalnya VARCHAR (25). Anda harus menentukan panjang saat membuat bidang VARCHAR.


    *BLOB atau TEXT - Field dengan panjang maksimum 65535 karakter. Gumpalan adalah "Objects Besar Biner" dan digunakan untuk menyimpan sejumlah besar data biner, seperti gambar atau jenis file lainnya. Fields didefinisikan sebagai TEKS juga memegang sejumlah besar data, perbedaan antara keduanya adalah bahwa macam dan perbandingan pada data yang tersimpan bersifat case sensitif pada gumpalan dan tidak case sensitif di bidang TEKS. Anda tidak menentukan panjang dengan BLOB atau TEXT.
    *

      TINYBLOB atau TINYTEXT - Sebuah BLOB atau TEXT kolom dengan panjang maksimum 255 karakter. Anda tidak menentukan panjang dengan TINYBLOB atau TINYTEXT.


    *MEDIUMBLOB atau MEDIUMTEXT - Sebuah BLOB atau TEXT kolom dengan panjang maksimum 16777215 karakter. Anda tidak menentukan panjang dengan MEDIUMBLOB atau MEDIUMTEXT.


    *LONGBLOB atau LONGTEXT - Sebuah BLOB atau TEXT kolom dengan panjang maksimum 4294967295 karakter. Anda tidak menentukan panjang dengan LONGBLOB atau LONGTEXT.


    *ENUM - Sebuah enumerasi, yang merupakan istilah keren untuk daftar. Ketika mendefinisikan sebuah ENUM, Anda membuat daftar item dari mana nilai harus dipilih (atau dapat menjadi NULL). Misalnya, jika Anda ingin bidang Anda mengandung "A" atau "B" atau "C", Anda akan mendefinisikan Anda sebagai ENUM ENUM ('A', 'B', 'C') dan hanya nilai-nilai (atau NULL) pernah bisa mengisi bidang tersebut.


4. Tipe Data Nilai default

Nilai DEFAULT klausul dalam spesifikasi tipe data menunjukkan nilai default untuk kolom. Dengan satu pengecualian, nilai default harus berupa sebuah konstanta, tidak bisa menjadi fungsi atau ekspresi. Ini berarti, misalnya, bahwa Anda tidak dapat mengatur default untuk kolom tanggal sebagai nilai fungsi seperti SEKARANG () atau CURRENT_DATE. Pengecualian adalah bahwa Anda dapat menentukan CURRENT_TIMESTAMP sebagai default untuk kolom TIMESTAMP. Lihat Bagian 11.3.5, "Inisialisasi otomatis dan Memutakhirkan untuk TIMESTAMP".

BLOB dan TEXT kolom tidak dapat diberi nilai default.

Jika definisi kolom tidak mencakup nilai DEFAULT eksplisit, MySQL menentukan nilai default sebagai berikut:

Jika kolom dapat mengambil NULL sebagai nilai, kolom didefinisikan dengan klausul NULL DEFAULT eksplisit.

Jika kolom tidak dapat mengambil NULL sebagai nilai, MySQL mendefinisikan kolom tanpa klausul DEFAULT eksplisit. Pengecualian: Jika kolom didefinisikan sebagai bagian dari PRIMARY KEY tapi tidak secara eksplisit sebagai NOT NULL, MySQL menciptakan itu sebagai kolom NOT NULL (karena kolom PRIMARY KEY harus NOT NULL), tetapi juga memberikan sebuah klausa DEFAULT menggunakan default implisit nilai. Untuk mencegah hal ini, termasuk NOT NULL eksplisit dalam definisi setiap kolom PRIMARY KEY.

Untuk entri data ke dalam kolom NOT NULL yang tidak memiliki klausul DEFAULT eksplisit, jika INSERT atau REPLACE pernyataan tidak mencakup nilai kolom, atau pernyataan UPDATE menetapkan kolom ke NULL, MySQL menangani kolom sesuai dengan mode SQL yang berlaku pada waktu:

    *Jika ketat SQL modus diaktifkan, kesalahan terjadi untuk tabel transaksional dan pernyataan yang terguling kembali. Untuk tabel nontransactional, kesalahan terjadi, tetapi jika hal ini terjadi untuk baris kedua atau selanjutnya dari pernyataan multi-baris, baris sebelumnya akan dimasukkan.


    *Jika modus ketat tidak diaktifkan, MySQL menetapkan kolom ke nilai default implisit untuk tipe data kolom.

Misalkan bahwa t tabel didefinisikan sebagai berikut:

CREATE TABLE t (i INT TIDAK NULL);

Dalam hal ini, saya tidak memiliki standar eksplisit, sehingga dalam modus ketat setiap pernyataan berikut menghasilkan kesalahan dan baris tidak dimasukkan. Bila tidak menggunakan modus yang ketat, hanya pernyataan ketiga menghasilkan kesalahan, default implisit dimasukkan untuk dua pernyataan pertama, tapi ketiga gagal karena DEFAULT (i) tidak dapat menghasilkan nilai:

INSERT INTO NILAI t ();
INSERT INTO NILAI t (DEFAULT);
INSERT INTO NILAI t (DEFAULT (i));

Lihat Bagian 5.1.7, "SQL Server Mode".

Untuk tabel tertentu, Anda dapat menggunakan SHOW pernyataan CREATE TABLE untuk melihat kolom mana memiliki klausul DEFAULT eksplisit.

Default implisit didefinisikan sebagai berikut:

    *Untuk tipe numerik, default adalah 0, dengan pengecualian bahwa untuk jenis integer atau floating-point dideklarasikan dengan atribut AUTO_INCREMENT, default adalah nilai berikutnya dalam urutan tersebut.


    * Untuk jenis tanggal dan waktu selain TIMESTAMP, default adalah tepat "nol" nilai untuk jenis. Untukkolom TIMESTAMP pertama dalam tabel, nilai default adalah tanggal dan waktu. Lihat Bagian 11.3, "Tanggal dan Waktu Jenis".
 

  * Untuk tipe string selain ENUM, nilai default adalah string kosong. Untuk ENUM, default adalah nilai pencacahan pertama.

DEFAULT NILAI SERIAL dalam definisi kolom integer adalah alias untuk UNIK AUTO_INCREMENT NOT NULL.


5. Memilih Jenis Hak untuk Kolom

Untuk penyimpanan optimal, Anda harus mencoba untuk menggunakan tipe yang paling tepat dalam semua kasus. Sebagai contoh, jika sebuah kolom integer digunakan untuk nilai-nilai dalam berkisar dari 1 sampai 99999, MEDIUMINT unsigned adalah jenis terbaik. Dari jenis yang mewakili semua nilai yang diminta, jenis ini menggunakan sedikitnya jumlah penyimpanan.

Semua perhitungan dasar (+, -, *, dan /) dengan kolom DECIMAL dilakukan dengan presisi dari 65 desimal (basis 10) digit. Lihat Bagian 11.1.1, "Numeric Type Ikhtisar".

Jika akurasi tidak terlalu penting atau jika kecepatan adalah prioritas tertinggi, jenis DOUBLE mungkin cukup baik. Untuk presisi tinggi, Anda selalu dapat mengkonversi ke tipe fixed-point disimpan dalam sebuah BIGINT. Hal ini memungkinkan Anda untuk melakukan semua perhitungan dengan 64-bit bilangan bulat dan kemudian dikonversi kembali hasilnya ke floating-point nilai yang diperlukan.

PROSEDUR ANALISIS dapat digunakan untuk memperoleh saran untuk tipe data kolom yang optimal. Untuk informasi lebih lanjut, lihat Bagian 8.4.2.4, "Menggunakan PROSEDUR ANALISIS".


2. Type Oracel

  

1. 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.
  

2. 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.
  

3. 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.
  

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

5. Raw(size) : tipe data berupa binary data dengan ukuran maksimal 255 bytes
  

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

7. Date : Tipe data ini menyimpan waktu dan tanggal dari sebuah informasi, dengan komponen waktu yang dibulatkan ke detik terdekat. Untuk menampilkannya dalam teks harus menggunakan fungsi to_char.
  

8. Timestamp : tipe ini mirip dengan date. Di dalam tipe ini terdapat komponen waktu yang dapat langsung ditampilkan tanpa harus mengubahnya terlebih dahulu dengan fungsi to_char.
  

9. Clob : Tipe data ini memperbolehkan penyimpanan objek dengan ukuran yang sangat besar sekitar 4 GB. Clob mirip sekali dengan varchar2 hanya saja tipe data ini mempunyai kapasitas maksimum yang lebih besar.
 

10. Blob : tipe ini memperbolehkan penyimpanan objek bbinary yang besar dan tidak terstruktur. Contoh dari tipe data blob adalah suara dan video.


3. Type PostgreSQL

 

1.Format Tipe Data Fungsi

Fungsi PostgreSQL format menyediakan satu set alat yang kuat untuk mengubah berbagai jenis data (tanggal / waktu, integer, floating point, angka) ke string diformat dan untuk mengkonversi dari string diformat untuk tipe data tertentu. Tabel 9-20 mendaftarnya. Fungsi-fungsi semua mengikuti konvensi pemanggilan umum: argumen pertama adalah nilai yang akan diformat dan argumen kedua adalah template yang mendefinisikan format output atau input.

Fungsi to_timestamp juga dapat mengambil argumen presisi tunggal ganda untuk mengkonversi dari zaman Unix untuk timestamp dengan zona waktu. (Integer Unix zaman secara implisit dilemparkan ke presisi ganda.)

Tabel 9-20. Format Fungsi
Fungsi Kembali Tipe Deskripsi Contoh
to_char (timestamp, teks) teks mengkonversi cap waktu ke string to_char (CURRENT_TIMESTAMP, 'hh12: MI: SS')
to_char (interval, teks) teks mengkonversi Interval ke string to_char (interval '15h 2m 12s ',' HH24: MI: SS ')
to_char (int, teks) teks mengkonversi bilangan bulat ke string to_char (125, '999 ')
to_char (presisi teks, ganda) teks mengkonversi presisi nyata / ganda ke string to_char (125.8 :: nyata, '999D9 ')
to_char (numerik, teks) teks mengkonversi numerik ke string to_char (-125,8, ''999D99S)
to_date (teks, teks) tanggal mengkonversi string sampai saat to_date ('05 Desember 2000 ',' DD Mon YYYY ')
to_timestamp (teks, teks) timestamp dengan zona waktu mengkonversi string ke to_timestamp waktu cap ('05 Desember 2000 ',' DD Mon YYYY ')
to_timestamp (presisi ganda) timestamp dengan zona waktu zaman mengkonversi UNIX untuk to_timestamp waktu cap (200.120.400)
to_number (teks, teks) numerik mengkonversi string ke numerik to_number ('12, 454,8-', '99G999D9S')

Dalam sebuah string template output (untuk to_char), ada pola tertentu yang diakui dan diganti dengan data-diformat tepat dari nilai yang akan diformat. Setiap teks yang bukan merupakan pola template yang hanya disalin verbatim. Demikian pula, dalam sebuah string masukan template (untuk apa pun kecuali to_char), pola Template mengidentifikasi bagian-bagian dari string input data yang akan melihat dan nilai-nilai yang akan ditemukan di sana.

Tabel 9-21 menunjukkan pola template yang tersedia untuk memformat nilai tanggal dan waktu.

Tabel 9-21. Template Pola untuk Tanggal / Waktu Format
Pola Deskripsi
HH jam hari (01-12)
Hh12 jam hari (01-12)
HH24 jam hari (00-23)
MI menit (00-59)
SS kedua (00-59)
MS milidetik (000-999)
AS mikrodetik (000000-999999)
SSSS detik lewat tengah malam (0-86.399)
AM atau A.M. atau PM atau P.M. meridian indikator (huruf besar)
am atau am atau pm atau pm meridian indikator (huruf kecil)
Y, YYY tahun (4 digit dan lebih) dengan koma
YYYY tahun (4 digit dan lebih)
YYY 3 digit terakhir dari tahun
YY 2 angka terakhir dari tahun
Y digit terakhir tahun
IYYY ISO tahun (4 digit dan lebih)
IYY 3 digit terakhir tahun ISO
IY 2 angka terakhir dari tahun ISO
Saya digit terakhir tahun ISO
BC atau SM atau AD atau M era indikator (huruf besar)
bc atau SM atau iklan atau M era Indikator (huruf kecil)
Huruf BULAN Nama bulan penuh (kosong-empuk sampai 9 chars)
Bulan penuh campuran-kasus bulan Nama (kosong-empuk sampai 9 chars)
bulan penuh nama bulan huruf kecil (kosong-empuk sampai 9 chars)
MON disingkat huruf besar bulan Nama (3 chars)
Mon disingkat campuran-kasus nama bulan (3 chars)
mon disingkat nama bulan huruf kecil (3 chars)
Bulan MM nomor (01-12)
HARI huruf besar penuh nama hari (kosong-empuk sampai 9 chars)
Hari penuh campuran-kasus hari Nama (kosong-empuk sampai 9 chars)
Nama hari penuh hari huruf kecil (kosong-empuk sampai 9 chars)
DY disingkat huruf besar nama hari (3 chars)
Dy disingkat campuran-kasus nama hari (3 chars)
dy disingkat Nama hari huruf kecil (3 chars)
DDD hari tahun (001-366)
DD hari bulan (01-31)
D hari minggu (1-7, Minggu 1)
Minggu W bulan (1-5) (Minggu pertama dimulai pada hari pertama bulan.)
WW angka minggu dari tahun (1-53) (Minggu pertama dimulai pada hari pertama tahun ini.)
IW ISO angka minggu dari tahun (The Kamis pertama tahun baru dalam minggu 1.)
CC abad (2 digit)
J Julian Day (hari sejak 1 Januari 4712 SM)
Q kuartal
RM bulan di angka Romawi (I-XII, I = Januari) (huruf besar)
rm bulan di angka Romawi (i-xii, i = Januari) (huruf kecil)
TZ zona waktu nama (huruf besar)
tz zona waktu nama (huruf kecil)

Pengubah tertentu dapat diterapkan untuk setiap pola template untuk mengubah perilakunya. Misalnya, FMMonth adalah pola Bulan dengan pengubah FM. Tabel 9-22 menunjukkan pola pengubah untuk tanggal / format waktu.

Tabel 9-22. Template Pola Pengubah untuk Tanggal / Waktu Format
Modifier Keterangan Contoh
FM awalan mengisi mode (menekan kosong padding dan nol) FMMonth
TH akhiran huruf besar nomor urut akhiran DDTH
th kecil akhiran nomor urut akhiran DDth
FX awalan pilihan format tetap global (lihat catatan penggunaan) FX Bulan DD Hari
SP akhiran mantra mode (belum diimplementasikan) DDSP

Penggunaan catatan untuk tanggal / format waktu:

    
*FM menekan nol terkemuka dan kosong mengikuti yang lain akan ditambahkan untuk membuat output dari pola menjadi fixed-width.


    
*to_timestamp dan to_date melewatkan ruang kosong beberapa string masukan jika pilihan FX tidak digunakan. FX harus ditetapkan sebagai item pertama dalam template. Misalnya to_timestamp ('2000 Juni ',' YYYY MON ') sudah benar, tapi to_timestamp ('2000 Juni', 'FXYYYY MON') mengembalikan kesalahan, karena to_timestamp mengharapkan satu ruang saja.


    
*Teks biasa diperbolehkan dalam template to_char dan akan menjadi output harfiah. Anda dapat menempatkan substring dalam tanda kutip ganda untuk memaksa untuk ditafsirkan sebagai teks literal bahkan jika itu berisi kata-kata kunci pola. Misalnya, dalam '"Hello Year" YYYY', yang YYYY akan digantikan oleh data tahun, tetapi Y tunggal di Tahun tidak akan.


    
* Jika Anda ingin memiliki kutipan ganda dalam output Anda harus mendahului dengan garis miring terbalik, misalnya '\ \ "YYYY Bulan \ \"'. (Dua backslashes diperlukan karena backslash sudah memiliki arti khusus dalam konstanta string.)


    
*Konversi dari string ke YYYY timestamp atau tanggal memiliki batasan jika Anda menggunakan satu tahun dengan lebih dari 4 digit. Anda harus menggunakan beberapa karakter non-digit atau template setelah YYYY, jika tahun selalu ditafsirkan sebagai 4 digit. Misalnya (dengan 20000 tahun): to_date ('200001131 ',' YYYYMMDD ') akan ditafsirkan sebagai tahun 4 digit, melainkan menggunakan pemisah non-digit setelah tahun, seperti to_date ('20000-1.131', ' YYYY-MMDD ') atau to_date ('20000Nov31', 'YYYYMonDD').


    
*Dalam konversi dari string ke timestamp atau tanggal, bidang CC diabaikan jika ada YYY, YYYY atau Y, YYY lapangan. Jika CC digunakan dengan YY atau Y maka tahun dihitung sebagai (CC-1) * 100 + YY.


    
*Milidetik (MS) dan mikrodetik (AS) nilai dalam konversi dari string ke timestamp digunakan sebagai bagian dari detik setelah titik desimal. Misalnya to_timestamp ('12: 3 ',' SS: MS ') tidak 3 milidetik, tapi 300, karena konversi menghitung sebagai 12 + 0,3 detik. Ini berarti untuk format SS: MS, nilai input 12:3,, 12:30 dan 12:300 menentukan jumlah yang sama milidetik. Untuk mendapatkan tiga milidetik, seseorang harus menggunakan 12:003, konversi itu dianggap sebagai 12 + 0,003 = 12,003 detik.

      
Berikut ini adalah contoh yang lebih kompleks: to_timestamp ('15: 12:02.020.001230 ',' HH: MI: SS.MS.US ') adalah 15 jam, 12 menit, dan 2 detik + 20 milidetik + 1.230 mikrodetik = 2,021230 detik .


    
*hari to_char tentang minggu penomoran (lihat 'D' pola format) adalah berbeda dari fungsi ekstrak.


    
*to_char (interval) format HH dan hh12 sebagai jam dalam satu hari, sedangkan HH24 dapat jam keluaran melebihi satu hari, misalnya > 24.

Tabel 9-23 menunjukkan pola template yang tersedia untuk memformat nilai numerik.

Tabel 9-23. Template Pola untuk Memformat Angka
Pola Deskripsi
9 nilai dengan jumlah tertentu digit
0 nilai dengan nol terkemuka
. (Periode) titik desimal
, (Koma) group (ribu) pemisah
PR negatif nilai dalam kurung sudut
S Sign berlabuh ke nomor (menggunakan lokal)
L mata simbol (menggunakan lokal)
D titik desimal (menggunakan lokal)
G group pemisah (menggunakan lokal)
MI tanda minus di posisi tertentu (jika nomor <0)
PL tanda plus di posisi yang ditentukan (jika nomor> 0)
SG plus / tanda minus di posisi tertentu
RN roman angka (input antara 1 dan 3999)
TH atau akhiran nomor urut th
V pergeseran jumlah tertentu dari digit (lihat catatan)
EEEE ilmiah notasi (belum diimplementasikan)

Penggunaan catatan untuk format numerik:

    
*Tanda diformat menggunakan SG, PL, atau MI tidak berlabuh ke nomor, misalnya, to_char (-12, 'S9999') menghasilkan '-12', namun to_char (-12, 'mi9999') menghasilkan '- 12' . Implementasi Oracle tidak mengijinkan penggunaan MI menjelang 9, melainkan mensyaratkan bahwa 9 mendahului MI.


    
*9 menghasilkan nilai dengan jumlah yang sama angka karena ada 9s. Jika digit yang tidak tersedia itu output spasi.
    
*TH tidak mengkonversi nilai kurang dari nol dan tidak mengubah angka-angka pecahan.


    
*PL, SG, dan TH adalah ekstensi PostgreSQL.


    
*V efektif mengalikan nilai masukan sebesar 10 ^ n, dimana n adalah jumlah digit setelah V. to_char tidak mendukung penggunaan V dikombinasikan dengan titik desimal. (Mis, 99.9V99 tidak diperbolehkan.)
 

 

2.Karakter Jenis

SQL mendefinisikan dua jenis karakter utama: karakter yang bervariasi (n) dan karakter (n), dimana n adalah bilangan bulat positif. Kedua jenis dapat menyimpan string hingga karakter n (tidak bytes) panjangnya. Sebuah usaha untuk menyimpan string lagi ke dalam kolom jenis akan menghasilkan kesalahan, kecuali kelebihan karakter semua ruang, dalam hal ini string akan dipotong dengan panjang maksimum. (. Ini kecuali agak aneh diperlukan oleh standar SQL) Jika string untuk disimpan lebih pendek dari panjang menyatakan, nilai-nilai karakter jenis akan ruang-empuk, nilai-nilai yang bervariasi tipe karakter hanya akan menyimpan string pendek.

Jika seseorang secara eksplisit melemparkan nilai karakter yang bervariasi (n) atau karakter (n), maka nilai over-panjang akan dipotong ke karakter n tanpa meningkatkan kesalahan. (Hal ini juga diperlukan oleh standar SQL.)

The varchar notations (n) dan char (n) adalah alias untuk karakter yang bervariasi (n) dan karakter (n), masing-masing. karakter tanpa specifier panjang setara dengan karakter (1). Jika yang bervariasi karakter digunakan tanpa specifier panjang, jenis menerima string dari berbagai ukuran. Yang terakhir adalah ekstensi PostgreSQL.

Selain itu, PostgreSQL menyediakan jenis teks, yang menyimpan string dari setiap panjang. Meskipun jenis teks tidak dalam standar SQL, beberapa sistem manajemen database lain SQL memilikinya juga.

Nilai karakter jenis secara fisik diisi dengan spasi ke n lebar tertentu, dan disimpan dan ditampilkan dengan cara itu. Namun, ruang bantalan diperlakukan sebagai semantik signifikan. Spasi diabaikan ketika membandingkan dua nilai karakter jenis, dan mereka akan dihapus ketika mengubah nilai karakter ke salah satu jenis string lain. Perhatikan bahwa spasi tambahan semantik signifikan dalam yang bervariasi karakter dan nilai-nilai teks.

Kebutuhan penyimpanan untuk string pendek (sampai dengan 126 byte) adalah 1 byte ditambah string yang sebenarnya, yang mencakup padding ruang dalam kasus karakter. String lagi memiliki 4 byte overhead bukannya 1. String panjang yang dikompresi oleh sistem otomatis, sehingga kebutuhan fisik pada disk mungkin kurang. Nilai-nilai yang sangat panjang juga disimpan dalam tabel latar belakang sehingga mereka tidak mengganggu akses cepat ke nilai kolom pendek. Dalam kasus apapun, karakter string terpanjang mungkin yang dapat disimpan adalah sekitar 1 GB. (Nilai maksimum yang akan diizinkan untuk n dalam deklarasi tipe data kurang dari itu Ia tidak akan berguna untuk mengubah ini karena dengan pengkodean karakter multibyte jumlah karakter dan byte bisa sangat berbeda.. Jika Anda ingin menyimpan string panjang tanpa batas atas tertentu, menggunakan teks atau karakter yang berbeda-beda tanpa specifier panjang, daripada membuat sebuah batas panjang sewenang-wenang.)

    
Tip: Tidak ada perbedaan kinerja antara ketiga jenis, selain ruang penyimpanan meningkat ketika menggunakan tipe kosong-empuk, dan siklus CPU beberapa tambahan untuk memeriksa panjang ketika menyimpan ke dalam kolom panjang-dibatasi. Sementara karakter (n) memiliki keunggulan kinerja dalam beberapa sistem database lain, tidak ada keuntungan seperti di PostgreSQL, dalam karakter fakta (n) biasanya paling lambat dari tiga karena biaya tambahan yang penyimpanan. Dalam kebanyakan situasi teks atau karakter yang berbeda-beda harus digunakan sebagai gantinya.

Lihat Bagian 4.1.2.1 untuk informasi tentang sintaks dari string literal, dan Bab 9 untuk informasi tentang operator yang tersedia dan fungsi. Karakter set database menentukan set karakter yang digunakan untuk menyimpan nilai-nilai tekstual, untuk informasi lebih lanjut mengenai dukungan set karakter.

Ada dua jenis karakter lain tetap-panjang dalam PostgreSQL, ditunjukkan pada Tabel 8-5. Jenis Nama ada hanya untuk penyimpanan pengenal dalam katalog sistem internal dan tidak dimaksudkan untuk digunakan oleh pengguna umum. Panjangnya saat ini didefinisikan sebagai 64 byte (63 karakter yang dapat digunakan ditambah terminator) tetapi harus dirujuk menggunakan NAMEDATALEN konstan dalam kode sumber C. Panjang ditetapkan pada waktu kompilasi (dan karena itu disesuaikan untuk penggunaan khusus), panjang maksimum default mungkin berubah di masa mendatang. Jenis "char" (perhatikan tanda kutip) berbeda dari char (1) dalam hal itu hanya menggunakan satu byte penyimpanan. Hal ini digunakan secara internal dalam katalog sistem sebagai jenis pencacahan sederhana.

Tabel 8-5. Khusus Karakter Jenis
Nama Penyimpanan Ukuran Deskripsi
"Char" 1 byte tipe single-byte internal yang
Nama 64 byte tipe internal untuk nama objek

 

3.Biner Tipe Data

Jenis bytea data memungkinkan penyimpanan string biner, lihat Tabel 8-6.

Tabel 8-6. Biner Tipe Data
Nama Penyimpanan Ukuran Deskripsi
bytea 1 atau 4 bytes ditambah string biner yang sebenarnya variabel-panjang string biner

Sebuah string biner adalah urutan oktet (atau byte). String biner dibedakan dari string karakter dalam dua cara: Pertama, string biner khusus memungkinkan oktet menyimpan nilai nol dan lainnya "non-printable" octets (biasanya, oktet luar kisaran 32-126). Karakter string melarang nol oktet, dan juga melarang setiap nilai oktet lainnya dan urutan nilai oktet yang valid sesuai dengan encoding set yang dipilih dalam database karakter. Kedua, operasi pada string biner memproses byte yang sebenarnya, sedangkan pengolahan string karakter tergantung pada pengaturan lokal. Singkatnya, string biner yang tepat untuk menyimpan data yang programmer berpikir sebagai "byte mentah", sedangkan string karakter yang sesuai untuk menyimpan teks.

Ketika memasukkan nilai bytea, oktet nilai tertentu harus lolos (tapi semua nilai oktet dapat lolos) bila digunakan sebagai bagian dari string literal dalam sebuah pernyataan SQL. Secara umum, untuk menghindari oktet, mengubahnya menjadi tiga digit nilai oktal dan mendahuluinya oleh dua backslashes. Tabel 8-7 menunjukkan karakter yang harus melarikan diri, dan memberikan escape sequence alternatif mana yang berlaku.

Tabel 8-7. bytea Lolos octets Literal
Desimal Keterangan Nilai Oktet Lolos Masukan Representasi Representasi Contoh Keluaran
0 nol oktet E '\ \ 000' SELECT E '\ \ 000' :: bytea; \ 000
39 tunggal kutipan'''' atau E '\ \ 047' SELECT E '\'' :: bytea;'
92 backslash E '\ \ \ \' atau E '\ \ 134' SELECT E '\ \ \ \' :: bytea; \ \
0 sampai 31 dan 127 sampai 255 "non-printable" oktet E '\ \ xxx' (octal value) SELECT E '\ \ 001' :: bytea; \ 001

Persyaratan untuk melarikan diri non-printable oktet bervariasi tergantung pada pengaturan lokal. Dalam beberapa kasus Anda dapat pergi dengan meninggalkan mereka unescaped. Perhatikan bahwa hasil di masing-masing contoh pada Tabel 8-7 adalah tepat satu oktet panjang, meskipun representasi output kadang-kadang lebih dari satu karakter.

Alasan backslashes beberapa diperlukan, seperti yang ditunjukkan pada Tabel 8-7, adalah bahwa input string ditulis sebagai string literal harus melewati dua tahap parse di server PostgreSQL. Backslash pertama masing-masing pasangan ditafsirkan sebagai karakter escape oleh parser string literal (dengan asumsi melarikan diri sintaks string digunakan) dan karena itu dikonsumsi, meninggalkan backslash kedua pasangan. (Dollar-dikutip string dapat digunakan untuk menghindari tingkat melarikan diri.) The backslash tersisa kemudian diakui oleh fungsi masukan bytea sebagai awal baik nilai tiga digit oktal atau melarikan diri backslash lain. Sebagai contoh, string literal dikirimkan ke server sebagai E '\ \ 001' menjadi \ 001 setelah melewati parser string yang melarikan diri. The 001 \ kemudian dikirim ke fungsi input bytea, di mana ia dikonversi ke oktet tunggal dengan nilai desimal dari 1. Perhatikan bahwa karakter single-quote tidak diperlakukan khusus oleh bytea, sehingga mengikuti aturan normal untuk string literal. (Lihat juga Bagian 4.1.2.1.)

Octets Bytea kadang-kadang lolos ketika output. Secara umum, masing-masing "non-printable" oktet dikonversi menjadi setara nilainya tiga digit oktal dan didahului oleh satu backslash. Kebanyakan "dicetak" oktet diwakili oleh representasi standar mereka dalam set karakter klien. Oktet dengan nilai desimal 92 (backslash) adalah dua kali lipat dalam output. Rincian pada Tabel 8-8.


Tergantung pada front end untuk PostgreSQL yang Anda gunakan, Anda mungkin memiliki pekerjaan tambahan untuk lakukan dalam hal melarikan diri dan unescaping string bytea. Sebagai contoh, Anda mungkin juga harus melarikan diri kembali garis feed dan kereta jika antarmuka Anda secara otomatis menerjemahkan ini.

Standar SQL mendefinisikan tipe string biner yang berbeda, yang disebut BLOB atau OBYEK BESAR BINARY. Format masukan berbeda dari bytea, tetapi fungsi yang disediakan dan operator yang sebagian besar sama

 

 

4. boolean Type

PostgreSQL menyediakan boolean SQL tipe standar. boolean dapat memiliki salah satu dari hanya dua negara: "true" atau "palsu". Sebuah negara ketiga, "tidak diketahui", diwakili oleh nilai null SQL.

Memimpin atau trailing spasi diabaikan, dan kasus tidak masalah. Kata-kata kunci TRUE dan FALSE adalah penggunaan (SQL-compliant) disukai.

Contoh 8-2. Menggunakan tipe boolean

CREATE TABLE test1 (a, b boolean teks);
INSERT INTO test1 VALUES (TRUE, 'sic est');
INSERT INTO test1 VALUES (FALSE, 'est non');
SELECT * FROM test1;
  a | b
--- + ---------
  t | sic est
  f | non est

SELECT * FROM test1 MANA a;
  a | b
--- + ---------
  t | sic est

Contoh 8-2 menunjukkan bahwa nilai-nilai boolean adalah output menggunakan huruf t dan f.

boolean menggunakan 1 byte penyimpanan.

 

5. UUID Type

 

Uuid tipe data menyimpan Universally Unique Identifier (UUID) seperti yang didefinisikan oleh RFC 4122, ISO / IEC 9834-8:2005, dan standar terkait. (Beberapa sistem mengacu pada tipe data ini sebagai pengenal global yang unik, atau GUID, sebagai gantinya.) Identifier ini adalah kuantitas 128-bit yang dihasilkan oleh algoritma dipilih untuk membuatnya sangat mungkin bahwa identifier yang sama akan dihasilkan oleh orang lain di alam semesta yang dikenal dengan menggunakan algoritma yang sama. Oleh karena itu, untuk sistem terdistribusi, pengidentifikasi ini memberikan jaminan keunikan baik dari generator urutan, yang hanya unik dalam database tunggal.

Sebuah UUID ditulis sebagai urutan huruf digit heksadesimal, dalam beberapa kelompok dipisahkan oleh tanda hubung, khususnya sekelompok 8 digit diikuti oleh tiga kelompok 4 digit diikuti oleh sekelompok 12 digit, dengan total 32 angka yang mewakili 128 bit. Contoh dari UUID dalam bentuk standar:

a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11

PostgreSQL juga menerima bentuk-bentuk alternatif berikut untuk masukan: penggunaan huruf digit, format standar dikelilingi oleh kawat gigi, menghilangkan beberapa atau semua tanda hubung, menambahkan tanda hubung setelah setiap kelompok empat digit. Contohnya adalah:

A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11
{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}
a0eebc999c0b4ef8bb6d6bb9bd380a11
a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11
{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}

Output selalu dalam bentuk standar.

PostgreSQL menyediakan penyimpanan dan fungsi perbandingan untuk UUIDs, tetapi database inti tidak termasuk fungsi untuk menghasilkan UUIDs, karena tidak ada algoritma tunggal cocok untuk setiap aplikasi. Modul contrib contrib / uuid-ossp menyediakan fungsi yang menerapkan algoritma beberapa standar. Atau, UUIDs dapat dihasilkan oleh aplikasi klien atau perpustakaan lain dipanggil melalui fungsi server-side


4. DB2

DB2 merupakan DBMS buatan IBM. Pertama kali dibuat pada tahun 1983 di MVS. Pada tahun 1996, IBM mengeluarkan DB2 UDB v5. Pada versi ini DB2 mendukung untuk penyimpanan berbagai macam tipe data seperti audio, video dan text.

DB2 9 merupakan release terbaru. Versi ini seperti para pendahulunnya dapat berjalan di berbagai platform seperti AIX, HP-UK, Linux, Solaris, Windows, i5/OS dan z/OS. Pada versi ini terdapat beberapa jenis seperti yang ada dibawah. Semakin besar angka semakin besar skalanya, semakin banyak fiturnya, dan tentunya semakin mahal.

 
1. DB2 Everyplace
Versi ini merupakan versi DB2 yang terkecil, berukurang hanya sekitar 350kb. Versi ini dibuat untuk para pengguna handheld seperti PDA, smartphone

2. 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. Ada beberapa fitur penting di versi ini yaitu
- pureXML : menyediakan akses yang sederhana dan efisien ke data XML dengan keamanan dan integritas yang sama dengan relational data.
- High Availability : menyediakan ketahanan 24 x 7 pada DB2 data server. 3 bagian yang menyusun fitur ini adalah HADR, Online Reorganization, dan IBM TSA MP.
- Workload Management : fitur ini aktif memonitoring penggunaan query dan mengaturnya agar berjalan secara efisien.
- Performance Optimization : fitur ini mengkombinasikan 3 modul yaitu MQT, MDC dan Query Parallelism.
- DB2 Homogenous Federation Feature : fitur ini menyediakan kemampuan untuk mengatur dan mengakses multiple data server.

3. DB2 Express-C
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, atau Windows. Versi ini dapat digunakan untuk tujuan evaluasi dan dapat digunakan secara gratis. Ada beberapa fitur penting di versi ini yaitu
- Spatial Extender Client and samples
- Microsoft Cluster Server support
- Informix Data Source support
- Replication Data Capture
- DB2 Web Tools
- Global Secure Toolkit
- APPC and NetBios support

4. DB2 Personal Edition
Merupakan DBMS untuk single user yang ideal untuk desktop ataupun laptop. Dapat digunakan untuk create, modifikasi dan mengatur banyak database lokal.

5. DB2 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

6. DB2 Enterprise Server Edition
Versi ini merupakan DBMS untuk multi user, web