logo

СКЛ Виевс

Поглед у СКЛ-у је сачувани СКЛ упит који делује као виртуелна табела. За разлику од обичних табела, погледи сами не чувају податке. Уместо тога, они динамички генеришу податке извршавањем СКЛ упита дефинисаног у приказу сваки пут када му се приступи.

Може да преузме податке из једне или више табела и представи их у прилагођеном формату који омогућава програмерима да:

  • Поједноставите сложене упите: Енкапсулирајте сложене спојеве и услове у један објекат.
  • Побољшајте безбедност: Ограничите приступ одређеним колонама или редовима.
  • Флексибилно представите податке: Обезбедите прилагођене приказе података за различите кориснике.

Користићемо ове две СКЛ табеле за примере.



СтудентДетаилс:

-- 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');

Излаз:

С_ИД

Име

Адреса

1

Оштро

Колката

2

Асхисх

Дургапур

3

Вежбајте

Делхи

4

Дханрај

Бихар

5

Рам

Рајастхан

Ознаке ученика:

-- 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);

Излаз:

ИД

Име

Маркс

Старост

1

Оштро

90

19

2

Суресх

50

20

3

Вежбајте

80

19

4

Дханрај

95

21

5

Рам

85

18

КРАЈТЕ ПРЕГЛЕД у СКЛ-у

Можемо да креирамо приказ користећи наредбу ЦРЕАТЕ ВИЕВ. Поглед се може креирати из једне табеле или више табела.

Синтакса:

CREATE VIEW view_name AS  
SELECT column1 column2.....
FROM table_name
WHERE condition;

Кључни услови:

  • виев_наме : Назив за поглед
  • табле_наме : Назив табеле
  • стање : Услов за одабир редова

Пример 1: Креирање једноставног приказа из једне табеле

Пример 1.1: У овом примеру ћемо креирати приказ под називом ДетаилсВиев из табеле СтудентДетаилс.

упит:

CREATE VIEW DetailsView AS  
SELECT NAME ADDRESS
FROM StudentDetails
WHERE S_ID < 5;

Користите упит испод да бисте преузели податке из овог приказа

SELECT * FROM DetailsView;

Излаз: 

Име

Адреса

Оштро

Колката

Асхисх

Дургапур

Вежбајте

Делхи

Дханрај

Бихар

Пример 1.2: Овде ћемо креирати приказ под називом СтудентНамес из табеле СтудентДетаилс.

упит:

CREATE VIEW StudentNames AS  
SELECT S_ID NAME
FROM StudentDetails
ORDER BY NAME;

Ако сада поставимо упит за приказ као

    SELECT    *     FROM    StudentNames;

Излаз: 

С_ИД

Име

2

Асхисх

4

Дханрај

1

Оштро

3

Вежбајте

5

Рам

прост број јава

Пример 2: Креирање погледа из више табела

У овом примеру ћемо креирати Виев МарксВиев који комбинује податке из обе табеле СтудентДетаилс и СтудентМаркс. Да бисмо направили приказ од више табела, можемо једноставно укључити више табела у СЕЛЕЦТ изјава.

упит:

CREATE VIEW MarksView AS  
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;

Да бисте приказали податке Виев МарксВиев:

SELECT * FROM MarksView;

Излаз:

Име

Адреса

Маркс

Оштро

Колката

90

Вежбајте

Делхи

80

Дханрај

Бихар

95

Рам

Рајастхан

85

Управљање приказима: Ажурирање и брисање листе

1. Навођење свих погледа у бази података

Можемо да наведемо све погледе у бази података помоћу наредбе СХОВ ФУЛЛ ТАБЛЕС или испитивањем табела информатион_сцхема.

USE 'database_name';  
SHOW FULL TABLES WHERE table_type LIKE '%VIEW';

Коришћење информатион_сцхема

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. Брисање погледа

СКЛ нам омогућава да избришемо постојећи приказ. Можемо избрисати или испусти Виев користећи ДРОП наредбу.

Синтакса:

DROP VIEW view_name;

Пример: У овом примеру бришемо Виев МарксВиев.

DROP VIEW MarksView;

3. Ажурирање дефиниције погледа

Ако желимо да ажурирамо постојеће податке у оквиру приказа користимо  УПДАТЕ  изјава.

напишите јсон у датотеку питхон
UPDATE view_name  
SET column1 = value1 column2 = value2.... columnN = valueN
WHERE [condition];

Ако желите да ажурирате дефиницију погледа без утицаја на податке, користите наредбу ЦРЕАТЕ ОР РЕПЛАЦЕ ВИЕВ. На пример, додајмоAgeколона доMarksView:

CREATE OR REPLACE VIEW view_name AS  
SELECT column1 column2 ...
FROM table_name
WHERE condition;

Напомена: Не могу се сви прикази ажурирати помоћу изјаве УПДАТЕ.

Правила за ажурирање приказа у СКЛ-у:

Одређени услови морају бити испуњени да би се приказ ажурирао. Ако је било који од ових услова не срео поглед се не може ажурирати.

  1. Наредба СЕЛЕЦТ која се користи за креирање погледа не би требало да садржи клаузулу ГРОУП БИ или ОРДЕР БИ клаузула.
  2. Наредба СЕЛЕЦТ не би требало да има ДИСТИНЦТ кључна реч.
  3. Поглед треба да има све НОТ НУЛЛ вредности.
  4. Приказ не би требало да се креира помоћу угнежђених упита или сложених упита.
  5. Поглед треба да се креира из једне табеле. Ако је приказ креиран помоћу више табела, неће нам бити дозвољено да ажурирамо приказ.

Напредне технике са погледима

1. Ажурирање података преко приказа

Можемо да користимо наредбу ЦРЕАТЕ ОР РЕПЛАЦЕ ВИЕВ да бисмо додали или заменили поља из приказа. Ако желимо да ажурирамо приказ МарксВиев и додамо поље АГЕ овом приказу из СтудентМаркс табеле, то можемо да урадимо на следећи начин:

Пример:

CREATE OR REPLACE VIEW MarksView AS  
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS StudentMarks.AGE
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;

Ако сада преузмемо све податке из МарксВиев-а као:

SELECT * FROM MarksView;

Излаз:

Име

Адреса

Маркс

Старост

Оштро

Колката

90

19

Вежбајте

Делхи

80

19

Дханрај

Бихар

95

21

Рам

Рајастхан

85

18

Можемо уметнути ред у Виев на исти начин као што то радимо у табели. Можемо користити ИНСЕРТ ИНТО СКЛ израз за уметање реда у приказ. У доњем примеру ћемо уметнути нови ред у Виев ДетаилсВиев који смо креирали изнад у примеру 'креирања погледа из једне табеле'.

Пример:

INSERT INTO DetailsView(NAME ADDRESS)  
VALUES('Suresh''Gurgaon');

Ако сада преузмемо све податке из ДетаилсВиев-а као

SELECT * FROM DetailsView;

Излаз:

Име

Адреса

Оштро

Колката

Асхисх

Дургапур

Вежбајте

Делхи

Дханрај

Бихар

Суресх

Гургаон

3. Брисање реда из приказа

Брисање редова из приказа је такође једноставно као и брисање редова из табеле. Можемо користити ДЕЛЕТЕ наредбу СКЛ-а да избришемо редове из погледа. Такође, брисањем реда из приказа прво се брише ред из стварне табеле, а промена се затим одражава у приказу. У овом примеру ћемо избрисати последњи ред из приказа ДетаилсВиев који смо управо додали у горњем примеру уметања редова.

Пример:

DELETE FROM DetailsView  
WHERE NAME='Suresh';

Ако сада преузмемо све податке из ДетаилсВиев-а као

SELECT * FROM DetailsView;

Излаз: 

Име

Адреса

Оштро

Колката

Асхисх

Дургапур

Вежбајте

Делхи

Дханрај

Бихар

4. СА клаузулом ОПЦИЈЕ ПРОВЕРЕ

Клаузула ВИТХ ЦХЕЦК ОПТИОН у СКЛ-у је веома корисна клаузула за погледе. Односи се на приказ који се може ажурирати. Користи се за спречавање модификације података (користећи ИНСЕРТ или УПДАТЕ) ако услов у клаузули ВХЕРЕ у изјави ЦРЕАТЕ ВИЕВ није задовољен.

Ако смо користили клаузулу ВИТХ ЦХЕЦК ОПТИОН у наредби ЦРЕАТЕ ВИЕВ и ако клаузула УПДАТЕ или ИНСЕРТ не задовољава услове онда ће они вратити грешку. У следећем примеру креирамо Виев СамплеВиев из табеле СтудентДетаилс са клаузулом ВИТХ ЦХЕЦК ОПТИОН.

Пример:

CREATE VIEW SampleView AS  
SELECT S_ID NAME
FROM StudentDetails
WHERE NAME IS NOT NULL
WITH CHECK OPTION;

У овом приказу, ако сада покушамо да убацимо нови ред са нултом вредношћу у колону НАМЕ онда ће дати грешку јер је поглед креиран са условом за колону НАМЕ НИЈЕ НУЛЛ. На пример, иако се приказ може ажурирати, ни доњи упит за овај приказ није важећи:

INSERT INTO SampleView(S_ID)  
VALUES(6);
Креирај квиз