sql >> Databáze >  >> RDS >> Mysql

Jaký je výchozí název omezení v MySQL?

Problém:

Chcete znát výchozí názvy omezení v tabulce v MySQL.

Příklad:

V naší databázi vytvoříme dvě tabulky, country a student , s následujícími omezeními:PRIMARY KEY (ID sloupce v tabulkách country a student ), FOREIGN KEY (sloupec country_id v tabulce student ), DEFAULT (název sloupce v tabulce student ), UNIQUE (sloupec name v tabulce country a sloupec personal_number v tabulce student ) a CHECK (sloupec age v tabulce student ).

Řešení:

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

Ukážeme si, jak MySQL standardně pojmenovává omezení těchto tabulek. Chcete-li je zobrazit, použijte tento dotaz:

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

Zde je výsledek:

TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
země PRIMÁRNÍ KLÍČ PRIMÁRNÍ
země JEDINEČNÉ jméno
student PRIMÁRNÍ KLÍČ PRIMÁRNÍ
student JEDINEČNÉ personal_number
student CIZI KLÍČ student_ibfk_1
student ZKONTROLUJTE student_chk_1

Diskuse:

Když vytváříme naše tabulky, nastavujeme omezení pro některé sloupce. Názvy těchto omezení však nespecifikujeme, takže jsou v MySQL pojmenovány standardně. V MySQL jsou výchozí typy omezení PRIMARY KEY , FOREIGN KEY , UNIQUE a CHECK . Jak se generují výchozí názvy pro omezení?

PRIMARY KEY constraint se jednoduše jmenuje PRIMARY , protože v tabulce je vždy jeden primární klíč. Existují dvě omezení pojmenovaná PRIMARY ve výše uvedeném výsledku, ale tabulky, ke kterým patří, jsou odlišné.

Pro FOREIGN KEY , název se řídí konvencí:název tabulky, podtržítko (‘_ “), „ibfk “, další podtržítko („_ “) a číslo. Pro náš příklad je to student_ibfk_1 v tabulce student .

Výchozí název pro CHECK omezení je podobné jako u cizího klíče. Začíná názvem tabulky, podtržítkem („_ ’), „chk “, další podtržítko („_ “) a číslo. Pro náš příklad je to student_chk_1 v tabulce student .

Výchozí název UNIQUE omezení je název samotného sloupce. Pro náš příklad je to personal_number v tabulce student . Pokud existuje více sloupců s UNIQUE omezení, používá název prvního sloupce v definici omezení.


  1. Měsíce mezi dvěma daty

  2. MySQL rychle vybere 10 náhodných řádků ze 600 000 řádků

  3. Přečtěte si o oprávněních na úrovni tabulky MySQL

  4. Jak vytvořit soubor protokolu v Oracle pomocí PL/SQL?