Skapa SQL-vyer: Förklarad steg-för-steg

Vi använder SQL eller Structured Query Language för att kommunicera med en relationsdatabas och skapa SQL-vyer.

Nu, vad är SQL-vyer? De är virtuella tabeller som kombinerar och lagrar data från faktiska databastabeller som du skapar. I sin tur får du säker och förenklad åtkomst till din datauppsättning samtidigt som du döljer de underliggande tabellstrukturerna och implementeringarna.

Så, hur fungerar detta? Du vet redan att SQL-frågor används för att skapa SQL-vyer. När SQL-vyn skapas lagras den underliggande SQL-frågan. När du använder en SQL-fråga för att slå upp data från flera tabeller, exekveras frågan och hjälper till att hämta data från motsvarande databastabeller. På liknande sätt, när du frågar en skapad SQL-vy, hämtas den lagrade frågan först och exekveras sedan.

Hur är det användbart att skapa SQL-vyer?

Eftersom SQL-vyer backas upp av lagrade SQL-frågor, hjälper de till att göra din databas säker. De förenklar också komplexa frågor och ökar din frågeprestanda, bland andra fördelar. Låt oss se hur att skapa SQL-vyer kan vara fördelaktigt för din databas och dina applikationer:

#1. Ger databassäkerhet

SQL-vyer fungerar som virtuella tabeller och döljer strukturerna för de faktiska databastabellerna. Så, bara genom att titta på en vy, är det inte möjligt att veta hur många tabeller det finns och vilka olika kolumner som finns i tabellen. Dessutom kan du lägga till begränsningar för åtkomstkontroll till din databas så att en användare bara kan fråga vyn och inte de faktiska tabellerna.

#2. Förenklar komplexa frågor

Ofta spänner dina SQL-frågor över flera tabeller med komplexa kopplingsvillkor. Om du använder så komplexa frågor ofta kan du utnyttja kraften i att skapa SQL-vyer. Du kan lagra din komplexa fråga i din SQL-vy. Med detta kan du helt enkelt fråga vyn istället för att behöva köra hela den komplexa frågan.

#3. Mildar mot Schema Change

Om dina underliggande tabellstrukturer ändras, som att lägga till eller ta bort kolumner, förblir dina vyer opåverkade. Om du förlitar dig på dina SQL-vyer för alla dina frågor behöver du inte oroa dig för schemaändringen. Som virtuella tabeller kommer din skapade SQL-vy att fortsätta att fungera sömlöst.

#4. Förbättrar frågeprestanda

När du skapar SQL-vyer optimerar databasmotorn den underliggande frågan innan den lagras. En lagrad fråga körs snabbare än att köra samma fråga direkt. Att använda SQL-vyer för att söka efter dina data ger dig alltså bättre prestanda och snabbare resultat.

Hur skapar jag SQL-vyer?

För att skapa SQL-vyer kan du använda kommandot CREATE VIEW. En vy innehåller en SELECT-sats. Detta ger frågan som kommer att lagras i vyn. Syntaxen är som följer:

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

Låt oss förstå detta med ett exempel. Tänk på att du har skapat två tabeller avdelning och anställd. Avdelningen har avdelningens namn och dess ID. Följaktligen innehåller personaltabellen den anställdes namn och ID, tillsammans med ID för den avdelning de tillhör. Du kommer att använda dessa två tabeller för att skapa din SQL-vy.

Skapa dina databastabeller

department_iddepartment_name1Finance2Technology3Business Tabell 1: avdelning

Om du använder MySQLkan du skapa den här tabellen med följande fråga:

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

Infoga data i tabellen du har skapat med följande SQL:

INSERT INTO department VALUES (1, 'Finance');
INSERT INTO department VALUES (2, 'Technology');
INSERT INTO department VALUES (3, 'Business');

anställd_idemployee_namedepartment_id100John3101Mary1102Natalya3103Bruce2Tabell 2: anställd

Med avdelningstabellen redo och fylld med data, skapa medarbetartabellen med hjälp av MySQL-frågan nedan:

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

Sätt sedan in personalposterna i din tabell. Tänk på att eftersom kolumnen department_id har en främmande nyckelreferens med avdelningstabellen, kan du inte infoga ett department_id som inte finns i den andra 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);

Fråga dina databastabeller

Låt oss använda tabellerna i en databasfråga. Tänk på fallet då du måste fråga efter anställd_id, anställd_namn och avdelningsnamn för alla anställda. I det här fallet måste du använda båda tabellerna och ansluta dem med den gemensamma kolumnen, som är department_id. Din fråga blir alltså:

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

Skapa din SQL-vy

Nu kan det hända att du ofta slår upp eller hänvisar till dessa data. Utöver detta, med tiden, med fler poster i dina tabeller, skulle din frågetid börja öka. I ett sådant scenario kan du skapa SQL-vyn som motsvarar denna fråga.

Använd följande fråga för att skapa en vy med namnet anställd_info:

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

Med den här vyn på plats kan du direkt fråga detsamma. Din fråga förenklas därför till:

SELECT 
  * 
FROM 
  employee_info;

Att fråga i SQL-vyn ger dig samma utdata som att köra din ursprungliga fråga. Men din fråga är nu lätt att underhålla. Vyn döljer komplexiteten i din fråga utan att kompromissa med resultatet eller prestanda.

Hur ersätter jag SQL-vyer?

Om du har en vy med ett visst namn och du vill ändra eller ersätta den, använd kommandot CREATE OR REPLACE VIEW. Med detta kan du ändra SELECT-satsen som användes för att skapa vyn. Därför ersätts din vyutgång samtidigt som vynamnet behålls. Dessutom skapar du en ny SQL-vy om den inte finns.

Du kan ersätta SQL-vyer med följande syntax:

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

Du kan förstå detta bättre med ett exempel. Tänk på avdelningen och medarbetartabellerna. En anställd_info SQL-vy skapas från dem, som innehåller kolumnerna anställd_id, anställd_namn och avdelningsnamn.

Med tanke på säkerhetsproblem kanske du vill ta bort staff_id från den här vyn. Dessutom skulle du också vilja ändra kolumnnamnen för att dölja de faktiska databaskolumnerna. Du kan göra dessa ändringar i den befintliga vyn med hjälp av följande SQL-fråga:

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 vyn har ersatts får du andra resultat när du använder samma fråga som du använde tidigare. Till exempel, i frågeresultatet kommer du att upptäcka att en av kolumnerna har tagits bort. Utöver det har kolumnnamnen ändrats från anställd_namn och avdelningsnamn till namn respektive avdelning.

Utnyttja kraften i att skapa SQL-vyer

Genom att skapa SQL-vyer får du inte bara förenklade frågor och snabbare datasökning utan också säkerhet och skydd mot schemaändringar. Att skapa SQL-vyer är ganska enkelt. Du kan ta vilken befintlig fråga du har och förvandla den till en SQL-vy.

Använd steg-för-steg-guiden ovan för att skapa SQL-vyer och utnyttja deras fördelar. Med SQL-vyer kan du göra dina databasapplikationer enkla och säkra samtidigt som de ökar deras prestanda.

Om du vill hantera din egen SQL-server, titta på SQL Server Management Studio (SSMS).