Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apa yang baru untuk tidak ada lagi varchar(255)

Apa "aturan VARCHAR(255)" yang Anda maksud?

Setiap vendor database bebas untuk mengimplementasikan VARCHAR sesuka mereka. Aturan (dan pedoman) untuk VARCHAR tidak selalu sama untuk setiap basis data.

Sejauh standar SQL, saya belum benar-benar melihatnya. Ini mungkin cukup longgar, jadi semua implementasi VARCHAR ditemukan memenuhi standar. Jika standar SQL untuk VARCHAR benar-benar ketat, maka vendor DBMS dapat memperluas standar, atau mungkin tidak sesuai. Saya tidak berpikir standar yang sebenarnya sangat penting. Yang penting adalah aturan aktual yang ditegakkan oleh DBMS.

Sejauh pedoman umum, tentukan panjang VARCHAR yang cukup panjang untuk mendukung persyaratan sistem. Jika persyaratan sistem adalah untuk mengizinkan tidak lebih dari 200 karakter, maka saya akan menentukan panjangnya sebagai VARCHAR(200) .

Sebagai pedoman umum lainnya, jangan tentukan panjang VARCHAR yang lebih besar dari yang seharusnya. Kolom VARCHAR yang dinyatakan lebih lama dari yang diperlukan dapat berdampak pada sumber daya dan kinerja.

Batas Oracle untuk panjang VARCHAR adalah 4000 karakter. (Pada Oracle versi sebelumnya, maksimum adalah 2000. Jika Anda membutuhkan lebih dari 4000 karakter, Anda dapat menggunakan CLOB tipe data.

SQL Server membatasi VARCHAR(8000) , kecuali jika Anda menentukan VARCHAR(MAX) yang memungkinkan ukuran maksimum (dalam byte) 2^32-1.

MySQL memiliki batas 65.535 untuk batas panjang baris maksimum. Sehingga secara efektif membatasi ukuran VARCHAR ke VARCHAR (21844), jika menggunakan set karakter multibyte seperti utf8. Dengan characterset byte tunggal (seperti latin1), maksimumnya adalah VARCHAR(65532). Jika Anda membutuhkan lebih banyak karakter dari itu, atau Anda mengalami batas panjang baris maksimum, Anda dapat menggunakan tipe data TEXT daripada VARCHAR.

Sebagian besar implementasi DBMS VARCHAR menyimpan bidang "panjang" untuk kolom VARCHAR, bersama dengan nilainya. panjangnya disimpan sebagai bilangan bulat.

Dalam beberapa DBMS, jika panjang maksimum (dalam byte) kolom VARCHAR tidak melebihi 255 byte, bidang panjang dapat diimplementasikan sebagai bilangan bulat byte tunggal. Jika kolom memungkinkan lebih dari 255 byte, maka bidang panjang harus lebih besar dari satu byte.

Dengan format baris dinamis, dalam hal penyimpanan baris, menyimpan 10 karakter dalam satu kolom, tidak masalah jika kolom didefinisikan sebagai VARCHAR(30) atau VARCHAR(1000). Dengan format baris tetap, ruang untuk panjang maksimum kolom akan dicadangkan. Format untuk penyimpanan baris akan bergantung pada DBMS, dan dalam beberapa kasus (MySQL) pada mesin penyimpanan dan format baris yang ditentukan.

Ya, ini tahun 2016. Dan kami telah menempuh perjalanan jauh sejak pengenalan sistem basis data relasional komersial pertama.

Basis data hanyalah salah satu bagian dari sistem. Mungkin ada batasan dalam aplikasi atau komponen perangkat lunak lainnya. (Jika aplikasi ditulis dalam C, dan aplikasi mendefinisikan struktur dengan array byte untuk bidang, batasan ukuran akan menjadi penting. Meningkatkan ukuran yang diizinkan dalam database tidak akan secara otomatis memperbaiki aplikasi .

Mungkin juga ada batasan/pembatasan panjang dalam kode Javascript, atau dalam elemen HTML halaman web. Atau mungkin ada batasan komponen perangkat lunak lainnya. Misalnya, beberapa driver SQL Server ODBC yang sangat lama memiliki batas 255 karakter (byte?) untuk kolom CHAR dan VARCHAR.

Jadi panjang VARCHAR dalam database hanyalah sebagian dari cerita.

Dengan semua itu, saya masih tidak mengerti apa yang Anda maksud, ketika Anda bertanya

Bisakah kita melanggar aturan VARCHAR(255)?

Saya bertanya-tanya apa "aturan" yang Anda maksud. Di sebagian besar setiap basis data yang saya ketahui, dimungkinkan untuk mendefinisikan kolom VARCHAR lebih panjang dari 255 byte, atau 255 karakter. Dan melakukan itu tidak melanggar aturan apa pun.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Windows Batch Script untuk mencadangkan database MySQL lokal &hanya menyimpan N FOLDER terbaru dengan file cadangan

  2. mysql Beberapa Kunci Asing dalam Tabel ke Kunci Utama yang Sama

  3. Gunakan dua tabel dalam satu halaman php (mysql)

  4. MySQL - Cara membuat tabel baru yang merupakan gabungan dari kunci utama dari dua tabel yang ada

  5. Bagaimana Anda menulis kondisional dalam pernyataan pilih MySQL?