Widok w języku SQL to zapisane zapytanie SQL, które działa jak wirtualna tabela. W przeciwieństwie do zwykłych widoków tabel, same w sobie nie przechowują danych. Zamiast tego dynamicznie generują dane, wykonując zapytanie SQL zdefiniowane w widoku przy każdym dostępie do niego.
Może pobierać dane z jednej lub większej liczby tabel i prezentować je w dostosowanym formacie, umożliwiając programistom:
- Uprość złożone zapytania: Hermetyzuj złożone połączenia i warunki w jednym obiekcie.
- Zwiększ bezpieczeństwo: Ogranicz dostęp do określonych kolumn lub wierszy.
- Prezentuj dane elastycznie: Zapewniaj dostosowane widoki danych dla różnych użytkowników.
Jako przykłady użyjemy tych dwóch tabel SQL.
Szczegóły ucznia:
-- Create StudentDetails table
CREATE TABLE StudentDetails (
S_ID INT PRIMARY KEY
NAME VARCHAR(255)
ADDRESS VARCHAR(255)
);
INSERT INTO StudentDetails (S_ID NAME ADDRESS)
VALUES
(1 'Harsh' 'Kolkata')
(2 'Ashish' 'Durgapur')
(3 'Pratik' 'Delhi')
(4 'Dhanraj' 'Bihar')
(5 'Ram' 'Rajasthan');
Wyjście:
S_ID | Nazwa | Adres |
|---|---|---|
1 | Szorstki | Kalkuta |
2 | Ashisz | Durgapur |
3 | Praktyka | Delhi |
4 | Dhanraj | Bihar |
5 | Baran | Radżastan |
Oceny studenckie:
-- Create StudentMarks table
CREATE TABLE StudentMarks (
ID INT PRIMARY KEY
NAME VARCHAR(255)
Marks INT
Age INT
);
INSERT INTO StudentMarks (ID NAME Marks Age)
VALUES
(1 'Harsh' 90 19)
(2 'Suresh' 50 20)
(3 'Pratik' 80 19)
(4 'Dhanraj' 95 21)
(5 'Ram' 85 18);
Wyjście:
ID | Nazwa | Znaki | Wiek |
|---|---|---|---|
1 | Szorstki | 90 | 19 |
2 | Suresz | 50 | 20 |
3 | Praktyka | 80 | 19 |
4 | Dhanraj | 95 | 21 |
5 | Baran | 85 | 18 |
UTWÓRZ WIDOKI w SQL
Widok możemy utworzyć za pomocą instrukcji CREATE VIEW. Widok można utworzyć z pojedynczej tabeli lub wielu tabel.
Składnia:
CREATE VIEW view_name AS
SELECT column1 column2.....
FROM table_name
WHERE condition;
Kluczowe terminy:
- nazwa_widoku : Nazwa widoku
- nazwa_tabeli : Nazwa tabeli
- stan : Warunek wyboru wierszy
Przykład 1: Tworzenie prostego widoku z pojedynczej tabeli
Przykład 1.1: W tym przykładzie utworzymy widok o nazwie DetailView z tabeli StudentDetails.
Zapytanie:
CREATE VIEW DetailsView AS
SELECT NAME ADDRESS
FROM StudentDetails
WHERE S_ID < 5;
Użyj poniższego zapytania, aby pobrać dane z tego widoku
SELECT * FROM DetailsView;Wyjście:
Nazwa | Adres |
|---|---|
Szorstki | Kalkuta |
Ashisz | Durgapur |
Praktyka | Delhi |
Dhanraj | Bihar |
Przykład 1.2: Tutaj utworzymy widok o nazwie StudentNames z tabeli StudentDetails.
Zapytanie:
CREATE VIEW StudentNames AS
SELECT S_ID NAME
FROM StudentDetails
ORDER BY NAME;
Jeśli teraz zapytamy o widok jako
SELECT * FROM StudentNames;
Wyjście:
S_ID | Nazwa |
|---|---|
2 | Ashisz |
4 | Dhanraj |
1 | Szorstki |
3 | Praktyka |
5 | Baran projektowanie baz danych w dbm |
Przykład 2: Tworzenie widoku z wielu tabel
W tym przykładzie utworzymy View MarksView, który łączy dane z obu tabel StudentDetails i StudentMarks. Aby utworzyć widok z wielu tabel, możemy po prostu uwzględnić wiele tabel w pliku WYBIERAĆ oświadczenie.
Zapytanie:
CREATE VIEW MarksView AS
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;
Aby wyświetlić dane View MarksView:
SELECT * FROM MarksView;Wyjście:
Nazwa | Adres | Znaki |
|---|---|---|
Szorstki | Kalkuta | 90 |
Praktyka | Delhi | 80 |
Dhanraj | Bihar | 95 |
Baran | Radżastan | 85 |
Zarządzanie widokami: aktualizowanie i usuwanie aukcji
1. Lista wszystkich widoków w bazie danych
Możemy wyświetlić listę wszystkich widoków w bazie danych za pomocą instrukcji SHOW FULL TABLES lub wysyłając zapytanie do tabel Information_schema.
USE 'database_name';
SHOW FULL TABLES WHERE table_type LIKE '%VIEW';
Korzystanie z Information_schema
SELECT table_name
FROM information_schema.views
WHERE table_schema = 'database_name';
OR
SELECT table_schema table_name view_definition
FROM information_schema.views
WHERE table_schema = 'database_name';
2. Usuwanie widoku
SQL pozwala nam usunąć istniejący widok. Możemy usuwać lub upuść widok za pomocą instrukcji DROP.
Składnia:
DROP VIEW view_name;Przykład: W tym przykładzie usuwamy View MarksView.
DROP VIEW MarksView;3. Aktualizacja definicji widoku
Jeśli chcemy zaktualizować istniejące dane w widoku, użyj opcji AKTUALIZACJA oświadczenie.
UPDATE view_name
SET column1 = value1 column2 = value2.... columnN = valueN
WHERE [condition];
Jeśli chcesz zaktualizować definicję widoku bez wpływu na dane, użyj instrukcji CREATE OR REPLACE VIEW. Na przykład dodajmyAgekolumna doMarksView:
CREATE OR REPLACE VIEW view_name AS
SELECT column1 column2 ...
FROM table_name
WHERE condition;
Notatka: Nie wszystkie widoki można zaktualizować za pomocą instrukcji UPDATE.
Reguły aktualizacji widoków w SQL:
Aby zaktualizować widok, muszą zostać spełnione pewne warunki. Jeśli którykolwiek z tych warunków jest nie spełniony, widok nie może zostać zaktualizowany.
- Instrukcja SELECT używana do tworzenia widoku nie powinna zawierać klauzuli GROUP BY lub ZAMÓW PRZEZ klauzula.
- Instrukcja SELECT nie powinna zawierać ODRĘBNY słowo kluczowe.
- Widok powinien mieć wszystkie wartości NIE NULL.
- Widoku nie należy tworzyć przy użyciu zapytań zagnieżdżonych lub złożonych.
- Widok należy utworzyć z jednej tabeli. Jeśli widok zostanie utworzony przy użyciu wielu tabel, aktualizacja widoku nie będzie możliwa.
Zaawansowane techniki z widokami
1. Aktualizowanie danych poprzez widoki
Możemy użyć instrukcji CREATE OR REPLACE VIEW, aby dodać lub zamienić pola z widoku. Jeśli chcemy zaktualizować widok MarksView i dodać pole AGE do tego widoku z tabeli StudentMarks, możemy to zrobić w następujący sposób:
Przykład:
CREATE OR REPLACE VIEW MarksView AS
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS StudentMarks.AGE
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;
Jeśli pobierzemy teraz wszystkie dane z MarksView jako:
SELECT * FROM MarksView;Wyjście:
Nazwa | Adres | Znaki | Wiek |
|---|---|---|---|
Szorstki | Kalkuta | 90 | 19 |
Praktyka | Delhi | 80 | 19 |
Dhanraj | Bihar | 95 | 21 |
Baran | Radżastan | 85 | 18 |
Możemy wstawić wiersz do widoku w taki sam sposób, jak robimy to w tabeli. Możemy skorzystać z WSTAW DO instrukcja SQL służąca do wstawienia wiersza do widoku. W poniższym przykładzie wstawimy nowy wiersz w widoku Szczegóły widoku, który utworzyliśmy powyżej w przykładzie „tworzenia widoków z pojedynczej tabeli”.
Przykład:
INSERT INTO DetailsView(NAME ADDRESS)
VALUES('Suresh''Gurgaon');
Jeśli pobierzemy teraz wszystkie dane z widoku szczegółowego jako
SELECT * FROM DetailsView;Wyjście:
Nazwa | Adres |
|---|---|
Szorstki | Kalkuta |
Ashisz | Durgapur |
Praktyka | Delhi |
Dhanraj | Bihar |
Suresz | Gurgaona |
3. Usuwanie wiersza z widoku
Usuwanie wierszy z widoku jest równie proste, jak usuwanie wierszy z tabeli. Możemy użyć instrukcji DELETE języka SQL, aby usunąć wiersze z widoku. Również usunięcie wiersza z widoku powoduje najpierw usunięcie wiersza z rzeczywistej tabeli, a zmiana zostaje następnie odzwierciedlona w widoku. W tym przykładzie usuniemy ostatni wiersz z widoku SzczegółyView, który właśnie dodaliśmy w powyższym przykładzie wstawiania wierszy.
Przykład:
DELETE FROM DetailsView
WHERE NAME='Suresh';
Jeśli pobierzemy teraz wszystkie dane z widoku szczegółowego jako
SELECT * FROM DetailsView;Wyjście:
Nazwa | Adres |
|---|---|
Szorstki | Kalkuta |
Ashisz | Durgapur |
Praktyka | Delhi |
Dhanraj | Bihar |
4. Z OPcją KONTROLNĄ Klauzula
Klauzula WITH CHECK OPTION w języku SQL jest bardzo przydatną klauzulą dla widoków. Dotyczy widoku, który można aktualizować. Służy do zapobiegania modyfikacji danych (za pomocą INSERT lub UPDATE), jeśli warunek w klauzuli WHERE w instrukcji CREATE VIEW nie jest spełniony.
Jeżeli w instrukcji CREATE VIEW użyliśmy klauzuli WITH CHECK OPTION i jeżeli klauzule UPDATE lub INSERT nie spełniają warunków to zwrócą błąd. W poniższym przykładzie tworzymy View SampleView z tabeli StudentDetails z klauzulą WITH CHECK OPTION.
Przykład:
Java pobiera aktualną datę
CREATE VIEW SampleView AS
SELECT S_ID NAME
FROM StudentDetails
WHERE NAME IS NOT NULL
WITH CHECK OPTION;
Jeśli w tym widoku spróbujemy teraz wstawić nowy wiersz z wartością null do kolumny NAZWA, wyświetli się błąd, ponieważ widok został utworzony z warunkiem dla kolumny NAZWA NIE NULL. Na przykład, mimo że widok można aktualizować, poniższe zapytanie dotyczące tego widoku jest nieprawidłowe:
INSERT INTO SampleView(S_ID)Utwórz quiz
VALUES(6);