SQL-visninger: Sikkerhet, ytelse & enkelhet i databasen din

Forstå SQL-visninger: En dyptgående veiledning

Vi benytter SQL, eller Structured Query Language, som kommunikasjonsmiddel med relasjonsdatabaser, og for å konstruere SQL-visninger.

Hva er egentlig SQL-visninger? De representerer virtuelle tabeller, som kombinerer og lagrer data fra de reelle databasetabellene som du definerer. Dette gir deg en sikker og lettvint måte å få tilgang til dine datasett, samtidig som du skjuler de underliggende tabellstrukturene og deres implementeringer.

Hvordan fungerer dette i praksis? Som du vet, brukes SQL-spørringer for å generere SQL-visninger. Når en SQL-visning er etablert, lagres den tilhørende SQL-spørringen. Hvis du bruker en SQL-spørring for å hente data fra flere tabeller, vil spørringen utføres og hente de nødvendige dataene fra de respektive databasetabellene. På lignende måte, når du spør etter en ferdig SQL-visning, hentes først den lagrede spørringen og deretter utføres den.

Hvorfor er det nyttig å opprette SQL-visninger?

Fordi SQL-visninger er drevet av lagrede SQL-spørringer, bidrar de til å øke databasens sikkerhet. De forenkler også komplekse søk og forbedrer søkeytelsen, i tillegg til andre fordeler. La oss se nærmere på hvordan oppretting av SQL-visninger kan gagne databasen og applikasjonene dine:

#1. Forbedrer databasesikkerheten

SQL-visninger fungerer som virtuelle tabeller og skjuler de underliggende strukturene til de faktiske databasetabellene. Bare ved å se på en visning, er det ikke umiddelbart åpenbart hvor mange tabeller det er, eller hvilke kolonner de inneholder. I tillegg kan du konfigurere tilgangskontroll for databasen, slik at en bruker kun kan spørre mot visningen og ikke de faktiske tabellene.

#2. Forenkler innviklede spørringer

Ofte kan dine SQL-spørringer strekke seg over flere tabeller, med komplekse koblingsbetingelser. Hvis du ofte bruker slike komplekse søk, kan du dra nytte av å opprette SQL-visninger. Du kan lagre den komplekse spørringen i en SQL-visning, og dermed spørre direkte mot visningen i stedet for å måtte kjøre hele den komplekse spørringen hver gang.

#3. Reduserer effekten av endringer i databaseskjemaet

Dersom de underliggende tabellstrukturene endres, for eksempel ved at kolonner legges til eller fjernes, vil dine visninger forbli uendret. Hvis du baserer alle dine søk på SQL-visninger, trenger du ikke å bekymre deg for skjemaendringer. Den opprettede SQL-visningen vil, som en virtuell tabell, fortsette å fungere uten problemer.

#4. Forbedrer ytelsen til spørringer

Når du oppretter SQL-visninger, optimaliserer databasemotoren den underliggende spørringen før den lagres. En lagret spørring vil vanligvis kjøre raskere enn om den samme spørringen skulle utføres direkte. Dermed får du forbedret ytelse og raskere resultater ved å benytte SQL-visninger for å spørre etter data.

Hvordan lager man SQL-visninger?

Du kan bruke CREATE VIEW-kommandoen for å lage SQL-visninger. En visning inneholder en SELECT-setning som definerer spørringen som lagres i visningen. Syntaksen er som følger:

CREATE VIEW view_name AS
SELECT
  column_1,
  column_2,
  column_3...
FROM
  table_name_1, table_name_2
WHERE
  condition_clause

La oss illustrere dette med et eksempel. Tenk deg at du har to tabeller, «avdeling» og «ansatt». «Avdeling»-tabellen inneholder avdelingens navn og ID. «Ansatt»-tabellen inneholder navn og ID til den ansatte, samt IDen til avdelingen vedkommende tilhører. Vi vil bruke disse to tabellene til å lage en SQL-visning.

Opprett databasetabellene

department_id department_name
1 Finance
2 Teknologi
3 Business

Tabell 1: avdeling

Dersom du benytter MySQL, kan du opprette denne tabellen med følgende spørring:

CREATE TABLE `department` (
  `department_id` int,
  `department_name` varchar(255),
  PRIMARY KEY (`department_id`)
);

Sett inn data i tabellen ved å bruke følgende SQL-kommandoer:

INSERT INTO department VALUES (1, 'Finance');
INSERT INTO department VALUES (2, 'Technology');
INSERT INTO department VALUES (3, 'Business');
ansatt_id employee_name department_id
100 John 3
101 Mary 1
102 Natalya 3
103 Bruce 2

Tabell 2: ansatt

Når avdelingstabellen er opprettet og fylt med data, kan du lage «ansatt»-tabellen ved hjelp av følgende MySQL-spørring:

CREATE TABLE `employee` (
  `employee_id` INT,
  `employee_name` VARCHAR(255),
  `department_id` INT,
  FOREIGN KEY (`department_id`) REFERENCES department(department_id)
);

Deretter setter du inn data i ansatttabellen. Husk at ettersom kolonnen «department_id» har en fremmednøkkelreferanse til «avdeling»-tabellen, kan du ikke sette inn en «department_id» som ikke finnes i «avdeling»-tabellen.

INSERT INTO employee VALUES (100, 'John', 3);
INSERT INTO employee VALUES (101, 'Mary', 1);
INSERT INTO employee VALUES (102, 'Natalya', 3);
INSERT INTO employee VALUES (103, 'Bruce', 1);

Spør i databasetabellene dine

La oss bruke tabellene i en databasespørring. Tenk deg at du ønsker å hente «ansatt_id», «ansatt_navn» og «avdelingsnavn» for alle ansatte. I dette tilfellet må du benytte begge tabellene og koble dem sammen ved hjelp av den felles kolonnen «department_id». Din spørring blir dermed:

SELECT
  employee_id,
  employee_name,
  department_name
FROM
  employee,
  department
WHERE
  employee.department_id = department.department_id;

Opprett din SQL-visning

Det kan være at du ofte henter denne informasjonen. I tillegg, over tid, med flere oppføringer i tabellene, vil søketiden begynne å øke. I et slikt tilfelle kan du opprette en SQL-visning som tilsvarer denne spørringen.

Bruk følgende spørring for å opprette en visning kalt «ansattinfo»:

CREATE VIEW employee_info AS
SELECT
  employee_id,
  employee_name,
  department_name
FROM
  employee,
  department
WHERE
  employee.department_id = department.department_id;

Med denne visningen på plass kan du spørre direkte mot den. Din spørring blir dermed forenklet til:

SELECT
  *
FROM
  employee_info;

Spørring mot SQL-visningen gir deg samme resultat som å kjøre den opprinnelige spørringen, men søket ditt er nå enklere å vedlikeholde. Visningen skjuler kompleksiteten i søket ditt, uten at det går på bekostning av resultat eller ytelse.

Hvordan erstatter man SQL-visninger?

Hvis du har en visning med et spesifikt navn og ønsker å endre eller erstatte den, kan du bruke CREATE OR REPLACE VIEW-kommandoen. Ved å bruke denne kommandoen kan du endre SELECT-setningen som ble brukt til å opprette visningen. Dette vil endre visningens output, mens navnet på visningen forblir det samme. I tillegg oppretter du en ny SQL-visning hvis den ikke eksisterer fra før.

Du kan erstatte SQL-visninger med følgende syntaks:

CREATE OR REPLACE VIEW view_name AS
SELECT
  new_column_1,
  new_column_2,
  new_column_3 ...
FROM
  new_table_name_1,
  new_table_name_2 ...
WHERE
  new_condition_clause

La oss se på et eksempel. Vi har «avdeling»- og «ansatt»-tabellene, og «ansatt_info»-visningen er opprettet fra dem. Denne inneholder «ansatt_id», «ansatt_navn» og «avdelingsnavn».

Med tanke på sikkerhet, vil du kanskje fjerne «ansatt_id» fra visningen. I tillegg ønsker du å endre kolonnenavnene for å skjule de faktiske databasekolonnene. Du kan gjøre disse endringene i den eksisterende visningen ved hjelp av følgende SQL-spørring:

CREATE OR REPLACE VIEW employee_info AS
SELECT
  employee_name as name,
  department_name as department
FROM
  employee,
  department
WHERE
  employee.department_id = department.department_id;

Når visningen er erstattet, vil du se andre resultater når du bruker det samme søket som før. I søkeresultatet vil du se at en av kolonnene er fjernet, og at kolonnenavnene er endret fra «ansattnavn» og «avdelingsnavn» til henholdsvis «name» og «department».

Utnytt fordelene med SQL-visninger

Ved å opprette SQL-visninger får du ikke bare enklere spørringer og raskere datahenting, men også forbedret sikkerhet og beskyttelse mot endringer i databaseskjemaet. Det er enkelt å lage SQL-visninger, og du kan transformere alle eksisterende spørringer til SQL-visninger.

Følg veiledningen over for å opprette SQL-visninger og dra nytte av fordelene de gir. Med SQL-visninger kan du gjøre databaseapplikasjonene dine enklere og sikrere, samtidig som du øker ytelsen.

Hvis du ønsker å administrere din egen SQL-server, kan du vurdere SQL Server Management Studio (SSMS).