Meningsfuld skabelse af tabeller

I de tidligere foredrag har vi allerede stiftet lidt bekendtskab med forespørgsler til oprettelse af tabeller, nu er det tid til at dykke dybere ned i dette.

Oprettelse af en tabel ligner meget at erklære en klasse i Java og har dette mønster:

CREATE TABLE table_name (
	column1 datatype,
	column2 datatype,
	column3 datatype,
   ....
);

Lad os f.eks. skrive en forespørgsel, der opretter en tabel med brugere:

CREATE TABLE user (
	id INT,
	name VARCHAR(100),
	level INT,
	created_date DATE,
);

Det ser meget enkelt ud, fordi mange nuancer ikke er angivet her.

For det første kan tabellen have yderligere indstillinger.

Og for det andet kan hver kolonne have yderligere indstillinger.

Og vi starter med indstillingerne for oprettelse af kolonner.

Taster i bordet

Ud over navnet og datatypen kan en tabelkolonne også have følgende indstillinger:

PRIMÆRNØGLE Kolonnen er tabellens nøgle
UNIK NØGLE Alle kolonneværdier skal være unikke.
Standard værdi Standard værdi
IKKE NULL Forbud mod at acceptere værdien NULL
AUTO_INCREMENT SQL Server vil automatisk øge værdien, når en ny post føjes til tabellen
GENERERET Beregnet felt
OPBEVARING Hvor data gemmes: på disk eller i hukommelsen
KOMMENTAR Spaltekommentar, f.eks. titel på lokalt sprog

Nedenfor vil vi se på nogle af dem.

For det første er det PRIMÆR NØGLE .

Oftest er dette en separat kolonne med navnet id og typen INT. Dette er den såkaldte "masternøgle" i tabellen, og alle dens rækker har unikke værdier for denne nøgle. Det bruges primært, så andre tabeller kan henvise til vores tabels poster og pege på dens specifikke post.

For det andet er UNIK NØGLE .

På nogle måder ligner den PRIMARY KEY, selvom dens semantiske belastning er helt anderledes. Hvis en kolonne har attributten UNIQUE, skal alle værdier i den kolonne være unikke. Et godt eksempel på forskellen mellem UNIQUE KEY og PRIMÆR NØGLE er listen over personer i paskontoret.

Skattenummeret er en PRIMÆR NØGLE, det bruges til at gøre det nemt at henvise til den rigtige person fra andre tabeller.

Pasnummeret er en UNIK NØGLE. Ikke to personer kan have det samme pasnummer. Pasnummeret kan dog ændres. For eksempel ved ændring af efternavn. Og skattenummeret vil forblive hos dig for evigt. Dette er PRIMARY KEY's hovedopgave. Et eksempel på en forespørgsel, der specificerer den PRIMÆRE NØGLE:

CREATE TABLE user (
	id INT PRIMARY KEY,
	name VARCHAR(100),
	level INT,
	created_date DATE,
);

Indstillinger for datatype

Der er mindre vigtige, men nyttige egenskaber.

DEFAUL værdi

Når du indsætter data (tilføjer en ny række) i en tabel, kan du udelade værdierne af nogle kolonner, hvis de har en standardværdi. I dette tilfælde vil SQL-serveren blot indstille værdien af ​​kolonnen selv.

Fra version 8 af MySQL kan du angive et udtryk som en værdi.

IKKE NULL

Hvis du angiver NOT NULL-attributten for en kolonne, når du opretter en tabel, vil SQL Server sikre, at det er umuligt at gemme en NULL-værdi i denne kolonne. Som standard kan enhver kolonne have en NULL-værdi, endda en INT-kolonne. Hvilket er lidt ikke-oplagt for en Java-programmør.

AUTO_INCREMENT

Det bruges normalt til kolonne-id'er. Når du tilføjer en ny række til en tabel, vil du virkelig have SQL-serveren til at tildele et id til denne post. Hvem bedre end serveren ved, hvor mange rækker han har i tabellen. Især hvis anmodninger fra forskellige klienter går til den samme SQL-server.

Det er præcis, hvad attributten AUTO_INCREMENT gør. Når vi tilføjer en ny række, sender vi simpelthen ikke noget som et id, og SQL-serveren vil angive det korrekte ID for denne post: den vil blot tage ID'et for den sidste eksisterende post og øge den med 1. Denne attribut kan kun være bruges med heltal og reelle taltyper. Og lad os selvfølgelig lave et eksempel på at lave sådan en tabel:

CREATE TABLE user (
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(100) NOT NULL,
	level INT DEFAULT 1,
	created_date DATE NOT NULL,
);