Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jaka jest domyślna nazwa ograniczenia w MySQL?

Problem:

Chcesz poznać domyślne nazwy ograniczeń w tabeli w MySQL.

Przykład:

W naszej bazie danych tworzymy dwie tabele, country i student , z następującymi ograniczeniami:PRIMARY KEY constraint (identyfikator kolumny w tabelach country i student ), FOREIGN KEY (kolumna country_id w tabeli student ), DEFAULT (nazwa kolumny w tabeli student ), UNIQUE (kolumna name w tabeli country i kolumna personal_number w tabeli student ) i CHECK (kolumna age w tabeli student ).

Rozwiązanie:

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)
);

Pokażmy, jak MySQL domyślnie nazywa ograniczenia tych tabel. Użyj tego zapytania, aby je zobaczyć:

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

Oto wynik:

TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
kraj KLUCZ PODSTAWOWY PODSTAWOWA
kraj UNIKALNE nazwa
uczeń KLUCZ PODSTAWOWY PODSTAWOWA
uczeń UNIKALNE numer_osobisty
uczeń KLUCZ OBCY student_ibfk_1
uczeń SPRAWDŹ student_chk_1

Dyskusja:

Kiedy tworzymy nasze tabele, ustawiamy ograniczenia dla niektórych kolumn. Jednak nie określamy nazw tych ograniczeń, więc są one domyślnie nazywane w MySQL. W MySQL domyślnymi typami ograniczeń są PRIMARY KEY constraint , FOREIGN KEY , UNIQUE i CHECK . Jak generowane są domyślne nazwy dla ograniczeń?

Ograniczenie PRIMARY KEY constraint ma po prostu nazwę PRIMARY , ponieważ w tabeli zawsze jest jeden klucz podstawowy. Istnieją dwa ograniczenia o nazwie PRIMARY w powyższym wyniku, ale tabele, do których należą, są różne.

Dla FOREIGN KEY , nazwa jest zgodna z konwencją:nazwa tabeli, podkreślenie („_ ”), „ibfk ”, kolejne podkreślenie („_ ”) oraz liczbę. W naszym przykładzie jest to student_ibfk_1 w tabeli student .

Domyślna nazwa dla CHECK ograniczenie jest podobne do klucza obcego. Zaczyna się od nazwy tabeli, podkreślenia („_ ”), „chk ”, kolejne podkreślenie („_ ”) oraz liczbę. W naszym przykładzie jest to student_chk_1 w tabeli student .

Domyślna nazwa UNIQUE ograniczenie to nazwa samej kolumny. W naszym przykładzie jest to personal_number w tabeli student . Gdy istnieje wiele kolumn ze znakiem UNIQUE ograniczenie, używa nazwy pierwszej kolumny w definicji ograniczenia.


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

  2. Jak skopiować dane z jednej tabeli do innej nowej tabeli w MySQL?

  3. PHP i mySQL:Rok 2038 Błąd:Co to jest? Jak to rozwiązać?

  4. Dodawanie wiodącego zera do niektórych wartości w kolumnie w MySQL

  5. Brak rozszerzenia mysqli, phpmyadmin nie działa