Meningsfull oppretting av tabeller

I de forrige forelesningene ble vi allerede litt kjent med spørringer for å lage tabeller, nå er det på tide å gå dypere inn i dette.

Å lage en tabell er veldig lik å erklære en klasse i Java og har dette mønsteret:

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

La oss for eksempel skrive en spørring som lager en tabell med brukere:

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

Det ser veldig enkelt ut, fordi mange nyanser ikke er angitt her.

For det første kan tabellen ha flere innstillinger.

Og for det andre kan hver kolonne ha flere innstillinger.

Og vi starter med innstillingene for å lage kolonner.

Taster i tabellen

I tillegg til navn og datatype kan en tabellkolonne også ha følgende innstillinger:

PRIMÆRNØKKEL Kolonnen er nøkkelen til tabellen
UNIK NØKKEL Alle kolonneverdier må være unike.
Standardverdi Standardverdi
IKKE NULL Forbudet mot å akseptere verdien NULL
AUTO_INCREMENT SQL Server vil automatisk øke verdien når en ny post legges til i tabellen
GENERERT Beregnet felt
OPPBEVARING Hvor data skal lagres: på disk eller i minnet
KOMMENTAR Spaltekommentar, for eksempel tittel på lokalt språk

Nedenfor skal vi se på noen av dem.

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

Oftest er dette en egen kolonne med navnet id og typen INT. Dette er den såkalte "hovednøkkelen" til tabellen, og alle radene har unike verdier for denne nøkkelen. Den brukes først og fremst slik at andre tabeller kan referere til postene i tabellen vår og peke til dens spesifikke post.

Den andre er UNIK NØKKEL .

På noen måter ligner den på PRIMARY KEY, selv om dens semantiske belastning er helt annerledes. Hvis en kolonne har UNIQUE-attributtet, må alle verdiene i den kolonnen være unike. Et godt eksempel på forskjellen mellom UNIQUE KEY og PRIMÆR NØKKEL er listen over personer på passkontoret.

Skattenummeret er en PRIMÆR NØKKEL, det brukes for å gjøre det enkelt å henvise til rett person fra andre tabeller.

Passnummeret er en UNIK NØKKEL. Ingen to personer kan ha samme passnummer. Passnummeret kan imidlertid endres. For eksempel ved endring av etternavn. Og skattenummeret vil forbli med deg for alltid. Dette er hovedoppgaven til PRIMARY KEY. Et eksempel på en spørring som spesifiserer PRIMÆRNØKKEL:

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

Innstillinger for datatype

Det er mindre viktige, men nyttige egenskaper.

DEFAUL verdi

Når du setter inn data (legger til en ny rad) i en tabell, kan du utelate verdiene til noen kolonner hvis de har en standardverdi. I dette tilfellet vil SQL-serveren ganske enkelt angi verdien til selve kolonnen.

Fra og med versjon 8 av MySQL kan du spesifisere et uttrykk som en verdi.

IKKE NULL

Hvis du spesifiserer NOT NULL-attributtet for en kolonne når du oppretter en tabell, vil SQL Server sørge for at det er umulig å lagre en NULL-verdi i denne kolonnen. Som standard kan enhver kolonne ha en NULL-verdi, til og med en INT-kolonne. Noe som er litt ikke åpenbart for en Java-programmerer.

AUTO_INCREMENT

Det brukes vanligvis for kolonne-ID-er. Når du legger til en ny rad i en tabell, vil du virkelig at SQL-serveren skal tilordne en id for denne oppføringen. Hvem som er bedre enn serveren vet hvor mange rader han har i tabellen. Spesielt hvis forespørsler fra forskjellige klienter går til samme SQL-server.

Dette er nøyaktig hva AUTO_INCREMENT-attributtet gjør. Når vi legger til en ny rad, sender vi rett og slett ikke noe som en id, og SQL-serveren vil spesifisere riktig ID for denne posten: den vil ganske enkelt ta IDen til den siste eksisterende posten og øke den med 1. Dette attributtet kan bare være brukes med heltalls- og reelle talltyper. Og la oss selvfølgelig lage et eksempel på å lage en slik tabell:

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