Recents in Beach

DDL ( DATA DEFINITON LANGUAGE )

DDL ( DATA DEFINITON LANGUAGE ) dodi blog

DDL adalah sebuah metode Query SQL yang berguna untuk mendefinisikan data pada sebuah
Database

Sebelum sampai disini sebaiknya baca juga



Type Data pada MySQL


Tipe data adalah suatu bentuk pemodelan data yang dideklarasikan pada saat melakukan
pembuatan tabel. Tipe data ini akan mempengaruhi setiap data yang akan dimasukkan ke dalam
sebuah tabel. Data yang akan dimasukkan harus sesuai dengan tipe data yang dideklarasikan.
Berbagai type data pada MySQL

secara garis besar ada 3 macam tipe data di MYSQL :

  • Tipe Data Numeric
  • Tipe Data Tanggal dan Waktu
  • Tipe data String


Tipe Data Numeric


BIT[(M)]

Tipe bit-Value. M menunjukkan jumlah bit per nilai, dari 1 hingga 64. Defaultnya adalah 1 jika M dihilangkan.

TINYINT[(M)] [UNSIGNED] [ZEROFILL]

Sebuah bilangan bulat yang sangat kecil. Rentang yang ditandatangani adalah -128 untuk 127. Kisaran yang tidak ditandatangani adalah 0 hingga 255.

BOOL, BOOLEAN

Jenis ini sinonim untuk TINYINT(1). Nilai nol dianggap false. Nilai bukan nol dianggap benar:

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

Sebuah integer kecil. Rentang yang ditandatangani adalah -32768 untuk 32767. Kisaran yang tidak ditandatangani adalah 0 hingga 65535.

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

Sebuah integer berukuran sedang. Rentang yang ditandatangani adalah -8388608 untuk 8388607. Kisaran yang tidak ditandatangani adalah 0 hingga 16777215.

INT[(M)] [UNSIGNED] [ZEROFILL]

Ukuran normal integer. Rentang yang ditandatangani adalah -2147483648 untuk 2147483647. Kisaran yang tidak ditandatangani adalah 0 hingga 4294967295.

INTEGER[(M)] [UNSIGNED] [ZEROFILL]

Jenis ini adalah sinonim untuk INT .

BIGINT[(M)] [UNSIGNED] [ZEROFILL]

Sebuah integer besar. Kisaran yang ditandatangani adalah -9223372036854775808 untuk 9223372036854775807. Kisaran yang tidak ditandatangani adalah 0 hingga 18446744073709551615.

SERIAL adalah alias untuk BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.

Beberapa hal yang harus Anda sadari sehubungan dengan BIGINT Columns:

Semua aritmatika dilakukan dengan menggunakan nilai BIGINT atau DOUBLE yang ditandatangani, jadi Anda tidak boleh menggunakan bilangan bulat besar yang tidak ditandatangani lebih besar dari 9223372036854775807 (63 bit) kecuali dengan fungsi bit! Jika Anda melakukannya, beberapa angka terakhir dalam hasil mungkin salah karena Border galat saat mengubah nilai BIGINT ke DOUBLE .

MySQL dapat menangani BIGINT dalam kasus berikut:

Saat menggunakan bilangan bulat untuk menyimpan nilai yang tidak ditandatangani besar di kolom BIGINT .

Dalam MIN(col_name) atau MAX(col_name), di mana col_name merujuk pada kolom BIGINT .

Ketika menggunakan operator (+, -, *, dan sebagainya) di mana kedua Operand adalah bilangan bulat.

Anda selalu dapat menyimpan nilai bilangan bulat yang tepat di kolom BIGINT dengan menyimpannya menggunakan string. Dalam hal ini, MySQL melakukan konversi string-ke-nomor yang tidak melibatkan representasi ganda-presisi menengah.

Operator -, +, dan * menggunakan BIGINT aritmatika ketika kedua Operand adalah nilai integer. Ini berarti bahwa jika Anda mengalikan dua bilangan bulat besar (atau hasil dari fungsi yang mengembalikan bilangan bulat), Anda mungkin mendapatkan hasil tak terduga ketika hasilnya lebih besar dari 9223372036854775807.

DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]

A dikemas "tepat" nomor titik tetap. M adalah jumlah digit (presisi) dan D adalah jumlah digit setelah titik desimal (skala). Titik desimal dan (angka negatif) - tanda tidak dihitung dalam M. Jika D adalah 0, nilai tidak memiliki titik desimal atau bagian pecahan. Jumlah maksimum digit (M) untuk DECIMAL adalah 65. Jumlah maksimum desimal didukung (D) adalah 30. Jika D dihilangkan, defaultnya adalah 0. Jika M dihilangkan, defaultnya adalah 10.

UNSIGNED, jika ditentukan, tidak mengizinkan nilai negatif. Pada 8.0.17 MySQL, atribut UNSIGNED adalah usang untuk kolom jenis DECIMAL (dan setiap sinonim) dan dukungan untuk itu akan dihapus dalam versi MySQL di masa depan. Pertimbangkan untuk menggunakan batasan CHECK sederhana sebagai gantinya untuk kolom tersebut.

Semua perhitungan dasar (+, -, *, /) dengan kolom DECIMAL dilakukan dengan presisi 65 digit.

DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]

Jenis ini sinonim untuk DECIMAL. Sinonim FIXED tersedia untuk kompatibilitas dengan sistem database lain.

FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

Sebuah kecil (presisi tunggal) Floating-Point nomor. Nilai yang diijinkan adalah -3.402823466E+38 to -1.175494351E-38, 0, dan 1.175494351E-38 untuk 3.402823466E+38. Ini adalah batas teoritis, berdasarkan standar IEEE. Rentang aktual mungkin sedikit lebih kecil tergantung pada perangkat keras atau sistem operasi Anda.

M adalah jumlah digit dan D adalah jumlah digit setelah titik desimal. Jika M dan D dihilangkan, nilai akan disimpan ke batas yang diizinkan oleh perangkat keras. Satu-presisi angka Floating-Point akurat untuk sekitar 7 desimal.

FLOAT(M,D) adalah ekstensi MySQL nonstandar. Sebagai MySQL 8.0.17, sintaks ini usang dan dukungan untuk itu akan dihapus dalam versi MySQL masa depan.

UNSIGNED, jika ditentukan, dilarang nilai negatif. Pada 8.0.17 MySQL, atribut UNSIGNED adalah usang untuk kolom jenis FLOAT (dan setiap sinonim) dan dukungan untuk itu akan dihapus dalam versi MySQL masa depan. Pertimbangkan untuk menggunakan batasan CHECK sederhana sebagai gantinya untuk kolom tersebut.

Menggunakan FLOAT mungkin memberi Anda beberapa masalah yang tak terduga karena semua perhitungan di MySQL dilakukan dengan presisi ganda. Lihat Bagian B. 4.4.7, "pemecahan masalah tanpa pencocokan baris".

FLOAT(p) [UNSIGNED] [ZEROFILL]

Nomor Floating-Point. p mewakili presisi dalam bit, tapi MySQL menggunakan nilai ini hanya untuk menentukan apakah akan menggunakan FLOAT atau DOUBLE untuk jenis data yang dihasilkan. Jika p adalah dari 0 ke 24, jenis data menjadi FLOAT dengan nilai tidak M atau D . Jika p adalah dari 25 untuk 53, jenis data menjadi DOUBLE dengan tidak M atau D nilai. Kisaran kolom yang dihasilkan adalah sama dengan presisi tunggal FLOAT atau Double-presisi jenis data DOUBLE dijelaskan sebelumnya di bagian ini.

UNSIGNED, jika ditentukan, tidak mengizinkan nilai negatif. Pada 8.0.17 MySQL, atribut UNSIGNED adalah usang untuk kolom jenis FLOAT (dan setiap sinonim) dan dukungan untuk itu akan dihapus dalam versi MySQL masa depan. Pertimbangkan untuk menggunakan batasan CHECK sederhana sebagai gantinya untuk kolom tersebut.

FLOAT(p) sintaks disediakan untuk kompatibilitas ODBC.

DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]

Sebuah ukuran normal (presisi ganda) Floating-Point nomor. Nilai yang diperbolehkan adalah -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, dan 2.2250738585072014E-308 untuk 1.7976931348623157E+308. Ini adalah batas teoritis, berdasarkan standar IEEE. Rentang aktual mungkin sedikit lebih kecil tergantung pada perangkat keras atau sistem operasi Anda.

M adalah jumlah digit dan D adalah jumlah digit setelah titik desimal. Jika M dan D dihilangkan, nilai akan disimpan ke batas yang diizinkan oleh perangkat keras. Nomor Floating-Point presisi ganda akurat untuk sekitar 15 desimal.

DOUBLE(M,D) adalah non standar MySQL Extension. Sebagai MySQL 8.0.17, sintaks ini usang dan dukungan untuk itu akan dihapus dalam versi MySQL masa depan.

UNSIGNED, jika ditentukan, tidak mengizinkan nilai negatif. Pada 8.0.17 MySQL, atribut UNSIGNED adalah usang untuk kolom tipe DOUBLE (dan setiap sinonim) dan dukungan untuk itu akan dihapus dalam versi MySQL masa depan. Pertimbangkan untuk menggunakan batasan CHECK sederhana sebagai gantinya untuk kolom tersebut.

DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED] [ZEROFILL]

Jenis ini sinonim untuk DOUBLE. Exception: jika mode SQL REAL_AS_FLOAT diaktifkan, REAL adalah sinonim untuk FLOAT daripada DOUBLE .

Tipe Data Tanggal dan Waktu


DATE

Tanggal. Kisaran yang didukung adalah '1000-01-01' untuk '9999-12-31'. MySQL menampilkan nilai DATE dalam format 'YYYY-MM-DD' , namun mengizinkan Penetapan nilai ke kolom DATE menggunakan string atau angka.

DATETIME[(fsp)]

Kombinasi tanggal dan waktu. Rentang yang didukung adalah '1000-01-01 00:00:00.000000' ke '9999-12-31 23:59:59.999999'. MySQL menampilkan nilai DATETIME pada 'YYYY-MM-DD hh:mm:ss[.fraction]' format, tetapi memungkinkan Penetapan nilai untuk kolom DATETIME menggunakan salah satu string atau angka.

Nilai fsp opsional dalam kisaran 0 hingga 6 dapat diberikan untuk menentukan presisi detik pecahan. Nilai 0 menandakan bahwa tidak ada bagian pecahan. Jika dihilangkan, presisi default adalah 0.

Inisialisasi otomatis dan memutakhirkan ke tanggal dan waktu saat ini untuk kolom DATETIME dapat ditentukan menggunakan DEFAULT dan ON UPDATE kolom definisi klausa, seperti yang dijelaskan di Bagian 11.3.4, "otomatis inisialisasi dan memperbarui untuk stempel waktu dan datetime".

TIMESTAMP[(fsp)]

Stempel waktu. Rentang ini '1970-01-01 00:00:01.000000' UTC untuk '2038-01-19 03:14:07.999999' UTC. Nilai TIMESTAMP disimpan sebagai jumlah detik sejak zaman ('1970-01-01 00:00:00' UTC). TIMESTAMP tidak dapat mewakili nilai '1970-01-01 00:00:00' karena yang sama dengan 0 detik dari zaman dan nilai 0 dicadangkan untuk mewakili '0000-00-00 00:00:00', nilai "nol" TIMESTAMP .

Nilai fsp opsional dalam kisaran 0 hingga 6 dapat diberikan untuk menentukan presisi detik pecahan. Nilai 0 menandakan bahwa tidak ada bagian pecahan. Jika dihilangkan, presisi default adalah 0.

Cara server menangani definisi TIMESTAMP tergantung pada nilai explicit_defaults_for_timestamp variabel sistem (Lihat Bagian 5.1.8, "variabel sistem server").

Jika explicit_defaults_for_timestamp diaktifkan, tidak ada penetapan otomatis DEFAULT CURRENT_TIMESTAMP atau ON UPDATE CURRENT_TIMESTAMP atribut ke kolom TIMESTAMP apa pun. Mereka harus disertakan secara eksplisit dalam definisi kolom. Selain itu, TIMESTAMP tidak secara eksplisit dinyatakan sebagai NOT NULL mengizinkan nilai NULL .

Jika explicit_defaults_for_timestamp dinonaktifkan, server menangani TIMESTAMP sebagai berikut:

Kecuali ditentukan lain, kolom TIMESTAMP pertama dalam tabel didefinisikan untuk secara otomatis diatur ke tanggal dan waktu modifikasi terbaru jika tidak secara eksplisit ditetapkan nilai. Hal ini membuat TIMESTAMP berguna untuk merekam timestamp operasi INSERT atau UPDATE . Anda juga dapat mengatur setiap kolom TIMESTAMP ke tanggal dan waktu saat ini dengan menetapkan nilai NULL , kecuali telah didefinisikan dengan atribut NULL untuk mengizinkan nilai NULL .

Inisialisasi otomatis dan memutakhirkan ke tanggal dan waktu saat ini dapat ditentukan menggunakan DEFAULT CURRENT_TIMESTAMP dan pembaruan klausa definisi ON UPDATE CURRENT_TIMESTAMP kolom. Secara default, kolom TIMESTAMP pertama memiliki properti ini, seperti yang disebutkan sebelumnya. Namun, setiap kolom TIMESTAMP dalam tabel dapat ditetapkan untuk memiliki properti ini.

TIME[(fsp)]

Waktu. Rentang adalah '-838:59:59.000000' ke '838:59:59.000000'. MySQL menampilkan nilai TIME dalam 'hh:mm:ss[.fraction]' format, tetapi memungkinkan Penetapan nilai ke kolom TIME menggunakan salah satu string atau angka.

Nilai fsp opsional dalam kisaran 0 hingga 6 dapat diberikan untuk menentukan presisi detik pecahan. Nilai 0 menandakan bahwa tidak ada bagian pecahan. Jika dihilangkan, presisi default adalah 0.

YEAR[(4)]

Satu tahun dalam format 4 digit. MySQL menampilkan nilai YEAR dalam format YYYY , tetapi mengizinkan Penetapan nilai ke kolom YEAR menggunakan salah satu string atau angka. Nilai menampilkan sebagai 1901 ke 2155, atau 0000.


Tipe data String


VARCHAR adalah singkatan untuk CHARACTER VARYING. NATIONAL VARCHAR adalah standar SQL cara untuk menentukan bahwa kolom VARCHAR harus menggunakan beberapa set karakter yang telah ditetapkan. MySQL menggunakan utf8 sebagai set karakter yang telah ditetapkan. Bagian 10.3.7, "set karakter nasional". NVARCHAR adalah singkatan untuk NATIONAL VARCHAR .

BINARY[(M)]

Jenis BINARY mirip dengan jenis CHAR , tetapi menyimpan string biner byte daripada karakter nonbinary string. Panjang opsional M mewakili panjang kolom dalam byte. Jika dihilangkan, M defaultnya ke 1.

VARBINARY(M)

Jenis VARBINARY mirip dengan jenis VARCHAR , tetapi menyimpan string biner byte daripada karakter nonbinary string. M mewakili panjang kolom maksimum dalam byte.

TINYBLOB

Kolom BLOB dengan panjang maksimum 255 (28 − 1) byte. Setiap nilai TINYBLOB disimpan menggunakan 1-byte awalan panjang yang menunjukkan jumlah byte dalam nilai.

TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

Sebuah kolom TEXT dengan panjang maksimum 255 (28 − 1) karakter. Panjang maksimum efektif adalah kurang jika nilai berisi karakter multibyte. Setiap nilai TINYTEXT disimpan menggunakan 1-byte awalan panjang yang menunjukkan jumlah byte dalam nilai.

BLOB[(M)]

Kolom BLOB dengan panjang maksimum 65.535 (216 − 1) byte. Setiap BLOB nilai disimpan menggunakan 2-byte awalan panjang yang menunjukkan jumlah byte dalam nilai.

Panjang opsional M dapat diberikan untuk jenis ini. Jika hal ini dilakukan, MySQL membuat kolom sebagai jenis BLOB terkecil yang cukup besar untuk menahan nilai M bytes lama.

TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]

Sebuah kolom TEXT dengan panjang maksimum 65.535 (216 − 1) karakter. Panjang maksimum efektif adalah kurang jika nilai berisi karakter multibyte. Setiap nilai TEXT disimpan menggunakan 2-byte awalan panjang yang menunjukkan jumlah byte dalam nilai.

Panjang opsional M dapat diberikan untuk jenis ini. Jika hal ini dilakukan, MySQL membuat kolom sebagai jenis TEXT terkecil yang cukup besar untuk menahan karakter nilai M panjang.

MEDIUMBLOB

Kolom BLOB dengan panjang maksimum 16.777.215 (224 − 1) byte. Setiap nilai MEDIUMBLOB disimpan menggunakan 3-byte awalan panjang yang menunjukkan jumlah byte dalam nilai.

MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

Sebuah kolom TEXT dengan panjang maksimum 16.777.215 (224 − 1) karakter. Panjang maksimum efektif adalah kurang jika nilai berisi karakter multibyte. Setiap nilai MEDIUMTEXT disimpan menggunakan awalan panjang 3-byte yang menunjukkan jumlah byte dalam nilai.

LONGBLOB

Kolom BLOB dengan panjang maksimum 4.294.967.295 atau 4 GB (232 − 1) byte. Panjang maksimum yang efektif dari LONGBLOB Columns tergantung pada ukuran paket maksimum yang dikonfigurasi dalam protokol klien/server dan memori yang tersedia. Setiap nilai LONGBLOB disimpan menggunakan awalan panjang 4-byte yang menunjukkan jumlah byte dalam nilai.

LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

Sebuah kolom TEXT dengan panjang maksimum 4.294.967.295 atau 4gb (232 − 1) karakter. Panjang maksimum efektif adalah kurang jika nilai berisi karakter multibyte. Panjang maksimum efektif kolom LONGTEXT juga tergantung pada ukuran paket maksimum dikonfigurasi dalam protokol klien/server dan memori yang tersedia. Setiap nilai LONGTEXT disimpan menggunakan awalan panjang 4-byte yang menunjukkan jumlah byte dalam nilai.

ENUM('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name]

Enumerasi. Objek string yang hanya dapat memiliki satu nilai, dipilih dari daftar nilai ' 'value1', 'value2', ..., NULL atau khusus '' nilai kesalahan. ENUM nilai yang diwakili internal sebagai bilangan bulat.

Sebuah kolom ENUM dapat memiliki maksimum 65.535 elemen yang berbeda.

Panjang maksimum yang didukung dari elemen ENUM individu adalah M < = 255 dan (M x w) < = 1020, di mana M adalah panjang literal elemen dan w adalah jumlah byte yang diperlukan untuk karakter panjang maksimum dalam rangkaian karakter.

SET('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name]

Satu set. Objek string yang dapat memiliki nilai nol atau lebih, yang masing-masing harus dipilih dari daftar nilai 'value1', 'value2', ... SET nilai diwakili secara internal sebagai bilangan bulat.

Kolom SET dapat memiliki maksimum 64 anggota yang berbeda.

Panjang maksimum yang didukung elemen SET individu adalah M < = 255 dan (M x w) < = 1020, di mana M adalah panjang harfiah elemen dan w adalah jumlah byte yang diperlukan untuk karakter panjang maksimum dalam rangkaian karakter.

Terima Kasih telah membaca dan mengunjungi Dodi Blog dan sekian dari saya semogga bermanfaat bye.

Post a Comment

0 Comments