Rodiniai SQL yra tam tikras virtualus stalas. Rodinyje taip pat yra eilučių ir stulpelių, panašių į lenteles, tačiau rodinys nesaugo duomenų diske kaip lentelė. Rodinys apibrėžia tinkintą užklausą, kuri nuskaito duomenis iš vienos ar kelių lentelių ir vaizduoja duomenis taip, lyg jie būtų gaunami iš vieno šaltinio.
Rodinį galime sukurti pasirinkę laukus iš vienos ar daugiau duomenų bazėje esančių lentelių. Rodinyje gali būti visos lentelės eilutės arba konkrečios eilutės, atsižvelgiant į tam tikras sąlygas.
Šiame straipsnyje sužinosime, kaip kurti, atnaujinti ir ištrinti rodinius SQL.
D emo SQL duomenų bazė
Mes naudosime šiuos dvi SQL lentelės pavyzdžiams.
Mokinio informacija

Studentų ženklai

Galite sukurti šias lenteles savo sistemoje parašydami šią SQL užklausą:
MySQL -- 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'); -- 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);>
KURTI VAIZDUS SQL
Vaizdą galime sukurti naudodami KURTI VAIZDĄ pareiškimas. Rodinį galima sukurti iš vienos lentelės arba iš kelių lentelių.
Sintaksė
CREATE VIEW view_name AS SELECT column1, column2..... FROM table_name WHERE condition;>
Parametrai:
- rodinio_pavadinimas : Rodinio pavadinimas
- lentelės_pavadinimas : lentelės pavadinimas
- sąlyga : Sąlyga norint pasirinkti eilutes
SQL CREATE VIEW pareiškimo pavyzdžiai
Pažvelkime į keletą CREATE VIEW pareiškimo SQL pavyzdžių, kad geriau suprastume, kaip kurti rodinius SQL.
1 pavyzdys: Rodinio kūrimas iš vienos lentelės
Šiame pavyzdyje iš lentelės StudentDetails sukursime rodinį pavadinimu DetailsView. Užklausa:
CREATE VIEW DetailsView AS SELECT NAME, ADDRESS FROM StudentDetails WHERE S_ID <5;>
Norėdami matyti duomenis rodinyje, galime pateikti rodinio užklausą taip pat, kaip ir lentelės.
SELECT * FROM DetailsView;>
Išvestis:

2 pavyzdys: sukurti rodinį iš lentelės
Šiame pavyzdyje iš lentelės StudentDetails sukursime rodinį pavadinimu StudentNames. Užklausa:
CREATE VIEW StudentNames AS SELECT S_ID, NAME FROM StudentDetails ORDER BY NAME;>
Jei dabar užklaustume vaizdą kaip,
SELECT * FROM StudentNames;>
Išvestis:

3 pavyzdys: Vaizdo kūrimas iš kelių lentelių
Šiame pavyzdyje mes sukursime rodinį pavadinimu MarksView iš dviejų lentelių StudentDetails ir StudentMarks. Norėdami sukurti rodinį iš kelių lentelių, į SELECT teiginį galime tiesiog įtraukti kelias lenteles. Užklausa:
CREATE VIEW MarksView AS SELECT StudentDetails.NAME, StudentDetails.ADDRESS, StudentMarks.MARKS FROM StudentDetails, StudentMarks WHERE StudentDetails.NAME = StudentMarks.NAME;>
Norėdami rodyti „View MarksView“ duomenis:
SELECT * FROM MarksView;>
Išvestis:

VISŲ VAIZDŲ SĄRAŠAS DUOMENŲ BAZĖJE
Galime pateikti „View“ sąrašą naudodami RODYTI PILNAS LENTELES pareiškimą arba naudojant informacijos_schemos lentelė . Rodinį galima sukurti iš vienos lentelės arba iš kelių lentelių.
Sintaksė
USE 'database_name'; SHOW FULL TABLES WHERE table_type LIKE '%VIEW';>
Naudojant informacijos_schemą
išmokti seleno
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';>
IŠTRINTI RODYMUS SQL
SQL leidžia ištrinti esamą rodinį. Galime ištrinti arba atsisakyti „View“ naudodami DROP pareiškimas .
Sintaksė
DROP VIEW view_name;>
Pavyzdys
Šiame pavyzdyje mes ištriname rodinį MarksView.
DROP VIEW MarksView;>
ATNAUJINTI VAIZDĄ SQL
Jei norite atnaujinti esamus duomenis rodinyje, naudokite ATNAUJINTI pareiškimas.
Sintaksė
UPDATE view_name SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition];>
Pastaba: Ne visi rodiniai gali būti atnaujinami naudojant teiginį UPDATE.
Jei norite atnaujinti rodinio apibrėžimą nepaveikdami duomenų, naudokite KURTI AR PAKEISTI VAIZDĄ pareiškimas. galite naudoti šią sintaksę
CREATE OR REPLACE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition;>
Rodinių atnaujinimo SQL taisyklės:
Norint atnaujinti rodinį, turi būti įvykdytos tam tikros sąlygos. Jei kuri nors iš šių sąlygų yra ne susitiko, vaizdas negali būti atnaujintas.
- Teiginyje SELECT, kuris naudojamas kuriant rodinį, neturėtų būti sąlygos GROUP BY arba ORDER BY.
- SELECT sakinyje neturėtų būti raktinio žodžio DISTINCT.
- Rodinyje turi būti visos NOT NULL reikšmės.
- Rodinys neturėtų būti kuriamas naudojant įdėtas arba sudėtingas užklausas.
- Vaizdas turi būti sukurtas iš vienos lentelės. Jei rodinys sukurtas naudojant kelias lenteles, mums nebus leista atnaujinti rodinio.
Pavyzdžiai
Pažvelkime į skirtingus naudojimo atvejus, kaip atnaujinti rodinį SQL. Šiuos naudojimo atvejus pateiksime pavyzdžiais, kad geriau suprastume.
1 pavyzdys: Atnaujinkite rodinį, kad pridėtumėte arba pakeistumėte rodinio lauką
Mes galime naudoti KURTI AR PAKEISTI VAIZDĄ teiginį, kad pridėtumėte arba pakeistumėte laukus iš rodinio.
Jei norime atnaujinti vaizdą MarksView ir pridėkite lauką AMŽIAUS prie šio rodinio iš Studentų ženklai Lentelę, mes galime tai padaryti taip:
CREATE OR REPLACE VIEW MarksView AS SELECT StudentDetails.NAME, StudentDetails.ADDRESS, StudentMarks.MARKS, StudentMarks.AGE FROM StudentDetails, StudentMarks WHERE StudentDetails.NAME = StudentMarks.NAME;>
Jei dabar gausime visus duomenis iš MarksView kaip:
SELECT * FROM MarksView;>
Išvestis:

2 pavyzdys: Atnaujinkite rodinį, kad į rodinį įterptumėte eilutę
Rodinyje eilutę galime įterpti taip pat, kaip ir lentelėje. Mes galime naudoti INSERT INTO SQL sakinį, kad įterptumėte eilutę rodinyje.
Toliau pateiktame pavyzdyje įterpsime naują eilutę į rodinio išsamios informacijos rodinį, kurį sukūrėme pirmiau kaip rodinių kūrimo iš vienos lentelės pavyzdyje.
INSERT INTO DetailsView(NAME, ADDRESS) VALUES('Suresh','Gurgaon');>Jei dabar gausime visus duomenis iš „DetailsView“,
SELECT * FROM DetailsView;>
Išvestis:

3 pavyzdys: eilutės ištrynimas iš rodinio
Ištrinti eilutes iš rodinio taip pat paprasta, kaip ištrinti eilutes iš lentelės. Norėdami ištrinti eilutes iš rodinio, galime naudoti SQL teiginį DELETE. Taip pat ištrynus eilutę iš rodinio pirmiausia ištrinama eilutė iš tikrosios lentelės, o po to pakeitimas atsispindi rodinyje.
Šiame pavyzdyje ištrinsime paskutinę eilutę iš rodinio DetailsView, kurią ką tik įtraukėme aukščiau pateiktame eilučių įterpimo pavyzdyje.
DELETE FROM DetailsView WHERE NAME='Suresh';>
Jei dabar gausime visus duomenis iš „DetailsView“,
SELECT * FROM DetailsView;>
Išvestis:

SU CHECK OPTION sąlyga
The SU PATIKRINIMO PASIRINKTIMIS SQL sąlyga yra labai naudinga sąlyga rodiniams. Tai taikoma atnaujinamam rodiniui.
java skaityti csv failą
Sąlyga WITH CHECK OPTION naudojama siekiant užkirsti kelią duomenų keitimui (naudojant INSERT arba UPDATE), jei netenkinama sąlyga WHERE sakinyje CREATE VIEW.
Jei sakinyje CREATE VIEW naudojome sąlygą WITH CHECK OPTION ir jei sąlyga UPDATE arba INSERT neatitinka sąlygų, jie grąžins klaidą.
SU CHECK OPTION sąlyga Pavyzdys:
Žemiau pateiktame pavyzdyje mes sukuriame View SampleView iš StudentDetails lentelės su sąlyga WITH CHECK OPTION.
CREATE VIEW SampleView AS SELECT S_ID, NAME FROM StudentDetails WHERE NAME IS NOT NULL WITH CHECK OPTION ;>
Šiame rodinyje, jei dabar bandysime įterpti naują eilutę su nuline reikšme stulpelyje PAVADINIMAS, bus rodoma klaida, nes vaizdas bus sukurtas su stulpelio PAVADINIMAS sąlyga NOT NULL. Pavyzdžiui, nors rodinys yra atnaujinamas, toliau pateikta šio rodinio užklausa negalioja:
INSERT INTO SampleView(S_ID) VALUES (6);>
PASTABA : numatytoji stulpelio NAME reikšmė yra nulinis .
Vaizdo naudojimas
Geroje duomenų bazėje turėtų būti rodiniai dėl nurodytų priežasčių:
- Prieigos prie duomenų ribojimas – Rodiniai suteikia papildomą lentelės saugumo lygį, ribodami prieigą prie iš anksto nustatyto lentelės eilučių ir stulpelių rinkinio.
- Duomenų sudėtingumo slėpimas – Rodinys gali paslėpti sudėtingumą, kuris egzistuoja keliose sujungtose lentelėse.
- Supaprastinkite komandas vartotojui – Rodiniai leidžia vartotojui pasirinkti informaciją iš kelių lentelių, nereikalaujant, kad vartotojai iš tikrųjų žinotų, kaip atlikti sujungimą.
- Sudėtingos parduotuvės užklausos – Rodiniai gali būti naudojami sudėtingoms užklausoms saugoti.
- Pervardyti stulpelius - Rodiniai taip pat gali būti naudojami pervardyti stulpelius nepažeidžiant bazinių lentelių, jei stulpelių skaičius rodinyje turi atitikti pasirinkimo sakinyje nurodytą stulpelių skaičių. Taigi pervadinimas padeda paslėpti pagrindinių lentelių stulpelių pavadinimus.
- Daugiafunkcinis vaizdas - Toje pačioje lentelėje skirtingiems vartotojams galima sukurti skirtingus rodinius.
Pagrindiniai SQL rodiniai
- Rodiniai SQL yra tam tikra virtuali lentelė.
- Laukai rodinyje gali būti iš vienos arba kelių lentelių.
- Galime sukurti rodinį naudodami CREATE VIEW teiginį ir ištrinti rodinį naudodami teiginį DROP VIEW.
- Rodinį galime atnaujinti naudodami teiginį CREATE OR REPLACE VIEW.
- Sąlyga WITH CHECK OPTION naudojama siekiant išvengti naujų eilučių, kurios neatitinka rodinio filtravimo sąlygų, įterpimo.