Ændring af kolonnenavne
Vi skal også forholde os til kolonnenavnene. Ellers gentager vi navnene navn og id, men de indeholder forskellige data. På den anden side er der den første id-kolonne og kolonnen medarbejder_id, som indeholder de samme data.
Lad os skrive en forespørgsel, hvor der kun vil være de nødvendige kolonner, og også omdøbe kolonnerne med de samme navne:
SELECT
task.id AS task_id,
task.name AS task_desc,
task.deadline AS deadline,
emploee.id AS emploee_id,
emploee.name AS emp_name,
emploee.occupation AS
emp_occupation
FROM employee, task
WHERE emploee.id = task.emploee_id
Og resultatet af denne forespørgsel:
opgave-id | opgave_desc | deadline | emploee_id | emp_name | emp_occupation |
---|---|---|---|---|---|
1 | Ret en fejl på frontend | 2022-06-01 | 1 | Ivanov Ivan | Programmer |
2 | Ret en fejl på backend | 2022-06-15 | 2 | Petrov Petr | Programmer |
7 | Nyd livet | (NUL) | 4 | Rabinovich Moisha | Direktør |
3 | Køb kaffe | 2022-07-01 | 5 | Kirienko Anastasia | Kontorchef |
4 | Køb kaffe | 2022-08-01 | 5 | Kirienko Anastasia | Kontorchef |
5 | Køb kaffe | 2022-09-01 | 5 | Kirienko Anastasia | Kontorchef |
8 | Nyd livet | (NUL) | 6 | Vaska | kat |
Fantastisk, problemet med uforståelige kolonnenavne er blevet løst. Forespørgslen er blevet lidt lang, men alt er klart i den resulterende tabel. Og ingen ekstra kolonner.
Tabel aliaser
Nogle gange er tabelnavne for lange og fylder meget i forespørgslen. Derfor tilbød skaberne af SQL, for at forbedre læsbarheden, som i tilfældet med kolonner, muligheden for at specificere tabelaliasser.
Den generelle form for aliaser (tabelaliaser) er som følger:
FROM table1 alias1, table2 alias2
Lad os omskrive vores tidligere forespørgsel med korte aliaser:
SELECT
t.id AS task_id,
t.name AS task_desc,
t.deadline AS deadline,
e.id AS emploee_id,
e.name AS emp_name,
e.occupation AS emp_occupation
FROM employee e, task t
WHERE e.id = t.emploee_id
Læsbarheden er faldet en smule, men det skyldes, at navnene på tabellerne i starten var enkle og klare. Det kan lige så godt være sådan her:
SELECT
task.id AS task_id,
task.name AS task_desc,
task.deadline AS deadline,
emploee.id AS emploee_id,
emploee.name AS emp_name,
emploee.occupation AS
emp_occupation
FROM
Microsoft_it_department_employee employee,
Year2022_priority_task task
WHERE emploee.id = task.emploee_id
Og i dette tilfælde er aliaser allerede nyttige, ikke? ;)
primærnøgle
Og endnu en vigtig information om tabeller. Husk, at vi havde en medarbejder_id-kolonne i opgavetabellen? Med det refererede vi til medarbejder-id'et fra medarbejdertabellen.
Hvis vi ønsker at henvise fra en tabel til rækkerne i en anden tabel, så skal den refererede tabel have en kolonne med et ID, som også kaldes den primære nøgle - PRIMARY KEY .
Oftest er dette en specielt tilføjet kolonne, hvis værditype er int . Når du tilføjer poster til en tabel, indstiller SQL automatisk værdien af denne kolonne.
Så er der mange ting knyttet til disse nøgler:
- forbinder forskellige tabeller med hinanden;
- hurtig søgning og filtrering efter id;
- dataintegritet i databasen (ingen referencer til ikke-eksisterende id);
- sletning af data, som ingen henviser til;
- og mange mange andre.
Der er i øvrigt situationer, hvor et bord har en såkaldt naturlig nøgle . Det er, når der er en kolonne, hvis indhold antyder unikhed. For eksempel besluttede vi at tilføje til medarbejdertabellen:
- Rækkefølgen af deres ankomst til virksomheden;
- Skattenummer;
- Passets nummer og serie.
Nogle gange bruger databasedesignere en naturlig nøgle som den primære nøgle, men oftest bruges de separat. Records kan jo slettes, ændres og lignende.
Jeg formoder, at du læser historier på internettet, når fogeder hænger hans fulde navnebrors gæld på en person? Dette er kun relateret til konceptet om en unik nøgle. Det er meget bekvemt for banker og fogeder at søge efter en person ved fulde navn og fødselsår. Og i 99% af tilfældene er dette nok til at identificere en person.
Men de resterende <1% er fulde navnebrødre med samme fødselsår. I hver enkelt af os er der højst sandsynligt ingen sådanne mennesker, men på nationalt plan er der. Generelt, hvis du skriver software eller designer en database, så er det nyttigt at vide, at dette også kan være tilfældet.
GO TO FULL VERSION