Endre kolonnenavn

Vi må også forholde oss til kolonnenavnene. Ellers gjentar vi navnene navn og id, men de inneholder forskjellige data. På den annen side er det den første id-kolonnen og kolonnen ansatt_id, som inneholder de samme dataene.

La oss skrive en spørring, der det bare vil være de nødvendige kolonnene, og også gi nytt navn til kolonnene med samme navn:

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 av denne spørringen:

task_id task_desc frist emploee_id emp_name emp_occupation
1 Rett opp en feil på frontend 2022-06-01 1 Ivanov Ivan Programmerer
2 Rett opp en feil på backend 2022-06-15 2 Petrov Petr Programmerer
7 Nyt livet (NULL) 4 Rabinovich Moisha Regissør
3 Kjøp kaffe 2022-07-01 5 Kirienko Anastasia Kontorsjef
4 Kjøp kaffe 2022-08-01 5 Kirienko Anastasia Kontorsjef
5 Kjøp kaffe 2022-09-01 5 Kirienko Anastasia Kontorsjef
8 Nyt livet (NULL) 6 Vaska katt

Flott, problemet med uforståelige kolonnenavn har blitt løst. Spørringen har blitt litt lang, men alt er klart i den resulterende tabellen. Og ingen ekstra kolonner.

Tabellaliaser

Noen ganger er tabellnavn for lange og tar opp mye plass i spørringen. Derfor tilbød skaperne av SQL, for å forbedre lesbarheten, som i tilfellet med kolonner, muligheten til å spesifisere tabellaliaser.

Den generelle formen for aliaser (tabellaliaser) er som følger:

FROM table1 alias1, table2 alias2

La oss omskrive vår forrige spørring 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

Lesbarheten har gått litt ned, men dette skyldes at navnene på tabellene i utgangspunktet var enkle og klare. Det kan like gjerne være slik:

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 tilfellet er aliaser allerede nyttige, ikke sant? ;)

primærnøkkel

Og enda en viktig informasjon om tabeller. Husker du at vi hadde en ansatt_id-kolonne i oppgavetabellen? Med den refererte vi til ansatt-ID fra ansatttabellen.

Hvis vi ønsker å referere fra en tabell til radene i en annen tabell, må den refererte tabellen ha en kolonne med en ID, som også kalles primærnøkkelen - PRIMÆRKØKKEL .

Oftest er dette en spesielt lagt til kolonne hvis verditype er int . Når du legger til poster i en tabell, setter SQL automatisk verdien for denne kolonnen.

Da er mange ting knyttet til disse nøklene:

  • koble forskjellige tabeller til hverandre;
  • raskt søk og filtrering etter id;
  • dataintegritet i databasen (ingen referanser til ikke-eksisterende id);
  • sletting av data som ingen refererer til;
  • og mange mange andre.

Forresten, det er situasjoner når et bord har en såkalt naturlig nøkkel . Dette er når det er en kolonne hvis innhold antyder unikhet. For eksempel bestemte vi oss for å legge til i ansatttabellen:

  • Rekkefølgen på deres ankomst i selskapet;
  • Skattenummer;
  • Nummer og serie på passet.

Noen ganger bruker databasedesignere en naturlig nøkkel som primærnøkkel, men oftest brukes de separat. Tross alt kan poster slettes, endres og lignende.

Jeg antar at du leser historier på Internett når namsmenn henger gjeld til hans fulle navnebror på en person? Dette er bare relatert til konseptet med en unik nøkkel. Det er veldig praktisk for banker og namsmenn å søke etter en person med fullt navn og fødselsår. Og i 99% av tilfellene er dette nok til å identifisere en person.

Men de resterende <1% er fulle navnebror, med samme fødselsår. I hver enkelt av oss er det mest sannsynlig ingen slike mennesker, men på nasjonalt plan er det det. Generelt, hvis du skriver programvare eller designer en database, er det nyttig å vite at dette også kan være tilfelle.