sql >> Database teknologi >  >> RDS >> Mysql

Hvad er standardnavnet i MySQL?

Problem:

Du vil kende standardnavnene på begrænsninger i en tabel i MySQL.

Eksempel:

I vores database opretter vi to tabeller, country og student , med følgende begrænsninger:PRIMARY KEY (kolonne-id'et i tabellerne country og student ), FOREIGN KEY (kolonnen country_id i tabellen student ), DEFAULT (kolonnenavnet i tabellen student ), UNIQUE (kolonnen name i tabellen country og kolonnen personal_number i tabellen student ), og CHECK (kolonnen age i tabellen student ).

Løsning:

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

Lad os vise, hvordan MySQL navngiver disse tabellers begrænsninger som standard. Brug denne forespørgsel til at se dem:

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

Her er resultatet:

TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
land PRIMÆR NØGLE PRIMÆR
land UNIKK navn
elev PRIMÆR NØGLE PRIMÆR
elev UNIKK personligt_nummer
elev UDLANDS NØGLE student_ibfk_1
elev TJEK student_chk_1

Diskussion:

Når vi opretter vores tabeller, sætter vi begrænsninger for nogle kolonner. Vi angiver dog ikke navnene for disse begrænsninger, så de navngives som standard i MySQL. I MySQL er standard begrænsningstyperne PRIMARY KEY , FOREIGN KEY , UNIQUE , og CHECK . Hvordan genereres standardnavnene for begrænsninger?

PRIMARY KEY constraint er blot navngivet PRIMARY , fordi der altid er én primær nøgle i en tabel. Der er to begrænsninger med navnet PRIMARY i resultatet ovenfor, men de tabeller, de hører til, er forskellige.

For FOREIGN KEY , følger navnet konventionen:tabelnavnet, en understregning (‘_ ’), ‘ibfk ’, en anden understregning (‘_ ’), og et nummer. For vores eksempel er det student_ibfk_1 i tabellen student .

Standardnavnet for en CHECK begrænsning svarer til den for fremmednøglen. Det starter med tabelnavnet, en understregning ('_ ’), ‘chk ’, en anden understregning (‘_ ’), og et nummer. For vores eksempel er det student_chk_1 i tabellen student .

Standardnavnet på en UNIQUE constraint er navnet på selve kolonnen. For vores eksempel er det personal_number i tabellen student . Når der er flere kolonner med UNIQUE begrænsning, bruger den navnet på den første kolonne i definitionen af ​​begrænsningen.


  1. Gem udvalgte forespørgslers output i ét array i postgres

  2. Vil du bruge e-mailadresse som primær nøgle?

  3. Hvor gemmer Android SQLites databaseversion?

  4. Hvad er LIKE Logical Operator i SQL Server - SQL Server / TSQL Tutorial Del 123