KATEGORI : 921411010,Tugas 2

Tugas 2

21 September 2012 14:11:00 Dibaca : 687

Tipe data pada DBMS

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

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 enabled client/ server yang dapat menangani transaksi besar, multi terabyte data warehouse. Dapat berjalan di server dari 1 hingga ratusan CPU dengan sistem operasi Linux, Windows, Solaris, Linux, AIX dll. Mempunyai fitur seperti DB2 workgroup dengan tambahan
• High Availability Disaster Recovery (HADR)
• Table (range) partitioning
• Online reorganization
• Materialized Query Tables
• Multi-dimensional data clustering
• Full intra-query parallelism
• Connection Concentrator
• The DB2 Governor
• Tivoli System Automation for Multiplatforms (TSA MP)

7. DB2 Data Warehouse Edition
Merupakan versi yang digunakan untuk data warehouse dinamis. Merupakan gabungan dari DB2 enterprise server ditambah fitur DB2 data partitioning.

8. DB2 Personal Developer’s Edition
Versi ini dapat digunakan pengembang untuk membuat aplikasi yang berinteraksi dengan database yang berada dalam kontrol DB2 personal edition. Dengan menggunakan versi ini, pengembang dapat membuat aplikasi yang berinteraksi dengan DB2 9 dengan metode seperti SQL, SQLJ, .NET, JDBC dll.