Crearea semnificativă de tabele

În prelegerile anterioare, ne-am familiarizat puțin cu interogările pentru crearea tabelelor, acum este timpul să aprofundăm acest lucru.

Crearea unui tabel este foarte asemănătoare cu declararea unei clase în Java și are acest model:

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

De exemplu, să scriem o interogare care creează un tabel cu utilizatori:

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

Pare foarte simplu, deoarece aici nu sunt indicate o mulțime de nuanțe.

În primul rând, tabelul poate avea setări suplimentare.

Și în al doilea rând, fiecare coloană poate avea setări suplimentare.

Și vom începe cu setările pentru crearea coloanelor.

Cheile din tabel

Pe lângă nume și tipul de date, o coloană de tabel poate avea și următoarele setări:

CHEIA PRINCIPALA Coloana este cheia tabelului
CHEIE UNICA Toate valorile coloanelor trebuie să fie unice.
Valoare implicită Valoare implicită
NU NUL Interdicția de a accepta valoarea NULL
INCREMENT AUTO SQL Server va incrementa automat valoarea atunci când o nouă înregistrare este adăugată la tabel
GENERAT Câmp calculat
DEPOZITARE Unde se stochează datele: pe disc sau în memorie
COMETARIU Comentariu pe coloană, de exemplu, titlu în limba locală

Mai jos ne vom uita la unele dintre ele.

În primul rând, este CHEIA PRIMARĂ .

Cel mai adesea, aceasta este o coloană separată cu numele id și tipul INT. Aceasta este așa-numita „cheie principală” a tabelului, iar toate rândurile sale au valori unice pentru această cheie. Este folosit în primul rând pentru ca alte tabele să se poată referi la înregistrările tabelului nostru și să indice înregistrările sale specifice.

A doua este CHEIA UNICA .

În unele privințe, este similar cu PRIMARY KEY, deși încărcarea sa semantică este complet diferită. Dacă o coloană are atributul UNIC, atunci toate valorile din acea coloană trebuie să fie unice. Un bun exemplu al diferenței dintre UNIQUE KEY și PRIMARY KEY este lista persoanelor din biroul de pașapoarte.

Numărul de taxă este o CHEIE PRIMARĂ, este folosit pentru a facilita referirea la persoana potrivită din alte tabele.

Numărul pașaportului este o CHEIE UNICĂ. Nu există două persoane care pot avea același număr de pașaport. Cu toate acestea, numărul pașaportului poate fi schimbat. De exemplu, la schimbarea numelui de familie. Și numărul de taxe va rămâne cu tine pentru totdeauna. Aceasta este sarcina principală a CHEIEI PRINCIPALE. Un exemplu de interogare care specifică CHEIA PRIMARĂ:

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

Setări pentru tipul de date

Există atribute mai puțin importante, dar utile.

Valoare DEFAUL

Când inserați date (adăugarea unui rând nou) într-un tabel, puteți omite valorile unor coloane dacă au o valoare implicită. În acest caz, serverul SQL va seta pur și simplu valoarea coloanei în sine.

Începând cu versiunea 8 a MySQL, puteți specifica o expresie ca valoare.

NU NUL

Dacă specificați atributul NOT NULL pentru o coloană atunci când creați un tabel, atunci SQL Server se va asigura că este imposibil să stocați o valoare NULL în această coloană. În mod implicit, orice coloană poate avea o valoare NULL, chiar și o coloană INT. Ceea ce este puțin evident pentru un programator Java.

INCREMENT AUTO

Este de obicei folosit pentru ID-urile coloanei. Când adăugați un rând nou la un tabel, doriți cu adevărat ca serverul SQL să atribuie un id pentru această intrare. Cine mai bine decât serverul știe câte rânduri are în tabel. Mai ales dacă solicitările de la diferiți clienți ajung la același server SQL.

Acesta este exact ceea ce face atributul AUTO_INCREMENT. Când adăugați un rând nou, pur și simplu nu trecem nimic ca id, iar serverul SQL va specifica ID-ul corect pentru această înregistrare: pur și simplu va lua ID-ul ultimei înregistrări existente și îl va crește cu 1. Acest atribut poate fi doar utilizat cu tipuri de numere întregi și reale. Și, desigur, să facem un exemplu de creare a unui astfel de tabel:

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