logo

SQL rodiniai

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

Stalo mokinys

Studentų ženklai

Stalo 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:

kurti vaizdo pavyzdžius

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:

peržiūrėti išvestį

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:

peržiūrėti išvestį

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.

  1. Teiginyje SELECT, kuris naudojamas kuriant rodinį, neturėtų būti sąlygos GROUP BY arba ORDER BY.
  2. SELECT sakinyje neturėtų būti raktinio žodžio DISTINCT.
  3. Rodinyje turi būti visos NOT NULL reikšmės.
  4. Rodinys neturėtų būti kuriamas naudojant įdėtas arba sudėtingas užklausas.
  5. 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:

sukurti arba pakeisti rodinio pavyzdį

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:

įterpti eilutę rodinio pavyzdyje

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:

ištrinkite eilutę iš rodinio pavyzdys

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ų:

  1. Prieigos prie duomenų ribojimas – Rodiniai suteikia papildomą lentelės saugumo lygį, ribodami prieigą prie iš anksto nustatyto lentelės eilučių ir stulpelių rinkinio.
  2. Duomenų sudėtingumo slėpimas – Rodinys gali paslėpti sudėtingumą, kuris egzistuoja keliose sujungtose lentelėse.
  3. Supaprastinkite komandas vartotojui – Rodiniai leidžia vartotojui pasirinkti informaciją iš kelių lentelių, nereikalaujant, kad vartotojai iš tikrųjų žinotų, kaip atlikti sujungimą.
  4. Sudėtingos parduotuvės užklausos – Rodiniai gali būti naudojami sudėtingoms užklausoms saugoti.
  5. 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.
  6. 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.