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.
0 Comments