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

Apa Nama Batasan Default di MySQL?

Masalah:

Anda ingin mengetahui nama default batasan dalam tabel di MySQL.

Contoh:

Dalam database kami, kami membuat dua tabel, country dan student , dengan batasan berikut:PRIMARY KEY constraint (id kolom dalam tabel country dan student ), FOREIGN KEY (kolom country_id dalam tabel student ), DEFAULT (nama kolom dalam tabel student ), UNIQUE (kolom name dalam tabel country dan kolom personal_number dalam tabel student ), dan CHECK (kolom age dalam tabel student ).

Solusi:

CREATE TABLE country (
id int NOT NULL primary key,
name varchar(100) UNIQUE
);

CREATE TABLE student (
id int NOT NULL primary key,
name varchar(100) NOT NULL DEFAULT 'unknown',
personal_number varchar(100) UNIQUE,
age int CHECK(age>15),
country_id int,
FOREIGN KEY(country_id) REFERENCES country(id)
);

Mari kita tampilkan bagaimana MySQL menamai batasan tabel ini secara default. Gunakan kueri ini untuk melihatnya:

SELECT TABLE_NAME, CONSTRAINT_TYPE, CONSTRAINT_NAME
FROM information_schema.table_constraints
WHERE table_name='country' OR table_name='student';

Ini hasilnya:

TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
negara KUNCI UTAMA PRIMER
negara UNIK nama
mahasiswa KUNCI UTAMA PRIMER
mahasiswa UNIK nomor_pribadi
mahasiswa KUNCI ASING siswa_ibfk_1
mahasiswa PERIKSA mahasiswa_chk_1

Diskusi:

Saat kami membuat tabel kami, kami menetapkan batasan untuk beberapa kolom. Namun, kami tidak menentukan nama untuk batasan ini, sehingga diberi nama secara default di MySQL. Di MySQL, tipe batasan default adalah PRIMARY KEY constraint , FOREIGN KEY , UNIQUE , dan CHECK . Bagaimana nama default dibuat untuk batasan?

Batasan PRIMARY KEY constraint hanya bernama PRIMARY , karena selalu ada satu kunci utama dalam sebuah tabel. Ada dua kendala bernama PRIMARY pada hasil di atas, tetapi tabel tempat mereka berada berbeda.

Untuk FOREIGN KEY , nama mengikuti konvensi:nama tabel, garis bawah (‘_ ’), ‘ibfk ', garis bawah lainnya ('_ ’), dan sebuah angka. Untuk contoh kita, ini adalah student_ibfk_1 dalam tabel student .

Nama default untuk CHECK batasannya mirip dengan kunci asing. Dimulai dengan nama tabel, garis bawah (‘_ ’), ‘chk ', garis bawah lainnya ('_ ’), dan sebuah angka. Untuk contoh kita, ini adalah student_chk_1 dalam tabel student .

Nama default dari UNIQUE kendala adalah nama kolom itu sendiri. Untuk contoh kita, ini adalah personal_number dalam tabel student . Ketika ada beberapa kolom dengan UNIQUE kendala, menggunakan nama kolom pertama dalam definisi kendala.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buat Tabel di MySQL

  2. Kesalahan MySQL 1153 - Mendapat paket lebih besar dari byte 'max_allowed_packet'

  3. Memantau Percona XtraDB Cluster - Metrik Utama

  4. Database MySQL Saya Rusak... Apa yang Harus Saya Lakukan Sekarang?

  5. .NET Core 2.1 Identity mendapatkan semua pengguna dengan peran terkaitnya