logo

Widoki SQL

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.

  1. Instrukcja SELECT używana do tworzenia widoku nie powinna zawierać klauzuli GROUP BY lub ZAMÓW PRZEZ klauzula.
  2. Instrukcja SELECT nie powinna zawierać ODRĘBNY słowo kluczowe.
  3. Widok powinien mieć wszystkie wartości NIE NULL.
  4. Widoku nie należy tworzyć przy użyciu zapytań zagnieżdżonych lub złożonych.
  5. 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)  
VALUES(6);
Utwórz quiz